Comp 453-001
Database Programming
Fall, 2017

Course #: COMP 453-001  3267 (in-person with  several online meetings)
There is no online section, but I am fully supporting online students
Day/Time: Tuesday, 4:15 - 6:45
Classroom: School of COMM, Room 014
Prerequisites: COMP 271 and COMP 251
Instructor: Dr. Channah Naiman
email: [email protected]
web page: http://webpages.cs.luc.edu/~cnaiman
office hours:
usually Monday, 12:30 - 2:30.
Doyle Center 205   x. 88113  (email preferred!!)
Also, shortly before and after class in or near our classroom.
TA:
no such luck--it's all me, all the time....
Syllabus Index
Learning Objectives
Exams  
Texts and Software Grades
Tutoring Programmng environment
Sakai/Piazza
Academic Honesty
Class Format, Attendance
Religious Holidays
Homework/Assignments Students with Disabilities
Course Schedule Important Dates

Course Description:  This course covers the fundamentals of database design and application development by accessing a transaction-oriented database server.  Emphasis on SQL.  An open-source database is used.  Additional topics include enabling access to the database via the web.

Outcome:  Students will learn SQL, database design and application development using the latest software tools. Students will also learn techniques for web based data retrieval and manipulation.

Learning Objectives:
Course Materials: 
All of the material (text and software) that you need for this course is available for free online:

Software:

Sakai:
As of this writing, Sakai will be used for course announcements, homework submissions, and grade postings.  While the raw scores posted on Sakai should be correct (although I have encountered some problems with that too!), please do not rely upon Sakai's Course Total calculations.  Usually, they are okay, but there have been problems.  I check the total grade postings periodically, to check up on Sakai's calculations.  Certainly, before the mid-term grade posting on Locus, and before the drop deadlines, check your grades (and I will too!)  Grades are calculated as specified in this syllabus.  If Sakai presents too many problems, we will switch to CourseSites.

Class Format:
The class sessions will be a mixture of lecture and lab.  The proportion of each will vary by the topic being covered.  If you have a laptop, you will want to bring it to class, unless I let you know in advance.  Some of the labs are worth points, and some of them cannot be made up outside of class.  Labs 4, 5 and 6 have assignments associated with them.  For the online section, nearly all of the lectures and labs will be videoed, and links provided on Sakai.  Reading materials, lab assignments and homeworks are all posted, either on Sakai or linked to on this syllabus.

I will be presenting examples and demonstrating code that are not in your text You are responsible for what is presented in class, even if some of the activity may not be covered in the class notes. If you choose not to attend, that is your prerogative; however, make sure that you find out what you missed.  For the online section, you are responsible for any material in the weekly videos, and in any posted reading materials and assignments listed, whether or not they are reviewed in the videos.

Cell Phones: Only you know the relative importance of any particular cell phone call, and whether it is important for you to answer a call immediately rather than later. I do want you to be respectful of your classmates and disrupt the class  as little as is practical. If you get cell phone calls with fair frequency, be sure to have the ring muted before coming to class. If you rarely get calls, you might not mute it ahead, and your cell phone may happen to ring. Get rid of the noise as soon as possible, and do not get flustered. I assume you will move outside the classroom for a conversation. If you get fairly frequent calls that you are likely to consider important answering, sit in a place where your exit and re-entrance are as unobtrusive as possible.


Homeworks/Assignments:
Homework Assignments:  Source code for your Homework assignments should be submitted to Sakai.  Lab assignments will usually be checked in class.  In addition, a list of the exercises and the due dates for each assignment are linked to on the Course Schedule.  You can submit your homework with a partner, since you are working together on homework anyway.  However, every student must submit something in Sakai:  either submit the homework, or submit a comment telling me who is submitting the homework on your behalf.  If you are submitting on behalf of your  homework partner, please submit a comment in the Sakai Assignment box to that effect.
Project:  You will form teams of two or three, to complete a project, which is a major programming assignment in PHP.  The project will be discussed further in class.

Programming Environment: 
Campus Network, Rights and Responsibilities
As a user of the campus network, you should be aware of your rights and responsibilities in http://www.luc.edu/its/itspoliciesguidelines/policy_acceptableuse.shtml

Much of your work will be done on your laptop, on your local server, and on our class server.  So I don't think there will be an issue with saving your work.  However, if you use the University computers, be aware that the University computers labs provide Computer Science students with permanent storage on P: drive. If you use both computer lab machines and other machines, or just share with a partner, you will want to take all of your files with you. You can use a flash drive, Google Drive, Mercurial and BitBucket, Box, or, in a pinch, send an email to yourself or your partners wtih attachements.

Academic Honesty:
The penalty for cheating may be anywhere from a 0 on an assignment to a grade of "F" in this course. The appropriate dean will be informed in writing of any cheating incidents. No exceptions, for any reason.

Cheating consists of, but is not limited to:
Help from any source is fine concerning
Exams:  There are two exams.  Tentative dates are:
For the online section, there will be a window during which you can schedule the exam.  The exact days/times will be posted as we get closer to exam week.  However, expect it to be very close to 10/17 and 12/12.  Questions may be randomized so that you will not have the exact set of questions that another student may have.  Online students may also opt to take the exam with the on-campus class.    Exams will cover material discussed in class, reading material on the web, and assignments. Exams will always be cumulative.  Reviews for each exam will be posted one or two weeks before the exam.  They may already be posted.

If you must miss an exam, let me know well in advance. Then if you have a good reason we can possibly make other arrangements. I have little sympathy for people who inform me after the fact for no good reason. Exam absences will be veririfed.  If they can't be verified, you will not be excused. 

*No second try*: If you have an excuse for not being prepared to take an exam, but decide to take it anyway, you don't get to change your mind after you see a poor grade. Being sick is not a way to get one more chance than everyone else. I may allow you to delay an exam due to illness, but I will not let you be reexamined due to a poor grade.

Religious Holidays:  Students with religious holiday conflicts:  Please let me know within the first two weeks of class if you have a religious holiday conflict with any exam or homework due date, so that we can plan on an accommodation.

Students with Disabilities:  If you have a documented disability and wish to discuss academic accommodations, please contact the Services for Students with Disabilities Office (773-508-3700 and [email protected]) as soon as possible.  Students with documented disabilities who provide me with a letter from the SSWD office will be fully accommodated as per the terms of the letter.  Students who are allowed to take their exams in the SSWD office are encouraged to do so.  Should you choose to take the exam in the classroom, I cannot guarantee that the classroom environment will be quiet enough to provide you with the environment that your disability may require.  If you choose to take the exam in the classroom, you are taking that risk.

Students with Sponsorships and Scholarships:  If you require a certain grade in order to satisfy a sponsor or a scholarship requirement, please be sure to monitor your grade on Sakai.  I will consider only your performance in this course in calculating grades, using the grading rubric posted in this syllabus.  If you cannot achieve a minimum grade that is required by a sponsor or a scholarship, I will not change your grade to help you meet that requirement.  This would be unfair to other students, and not reflecive of your performance in this course.  You are reponsible to monitor your grade and to keep apprised of the withdrawal dates posted by the registrar.

Grading:

Orientation Assignments      40
Homework Assignments 1 - 5 @50 points
   250
Labs 1 - 7
   210
Midterm Exam
   150
Final Exam
   150
Project    150
Project Excellence
     50
Total   1000
A "very good" project that fulfills the requirements and is perfectly satisfactory can earn full points for the Project.  That would be 150 points.  If you get full points on your project and do not earn any Project Excellence points, please don't ask me what you did "wrong".  The answer will most likley be  "nothing".  Project Excellence points can be earned for a project that is truly excellent, incorporating components well beyond the material covered in class, or simply having a real "Wow" factor.  A grade of "A" means "excellent".  There are many points in this course that could be considered free points.  Full points for Homework and Labs can be earned if significant effort is demonstrated:  you are graded for completeness, not necessasrily for correctlness (although grossly incorrect answers will be makred off).  But for a project to get an A, it must be excellent.  As I review your progress during project walkthroughs, I will tell you what you can do to earn excellence points for your project.
Course grades are assigned as follows:
A
93
A-
90
B+
87
B
83
B-
80
C+
77
C
73
C-
70
D+
67
D
63


Course Schedule:

The dates below give the sequence and a general idea of the time spent, though we may get ahead or behind this time schedule at different points, depending on the needs of the class.  Be sure to keep up with where we really are in class.

Labs (except for Lab 0, which isn't really a lab) are listed for the class when we will work on them together. The TA or I should check off your completion or at least your participation during the same class.  Labs 1, 2 and 3 cannot be made up outside of class.    Sometimes, we can't finish the labs in class.  In that case, I will check that work was done during class and allow a submission later, usually that night or the next day.  Labs 4 - 7 have assignments associated with them.  Due dates are listed on this syllabus and on Sakai.

Assignments are to be turned in on the date where they are listed below as due, generally by 11:55PM.


In general, read the assigned chapters before coming to class.  Most lectures will not follow the book exactly.  Very few will use the text's PowerPoints.  However you are responsible for the chapter anyway, even if I focus on certain examples and not others from the text.  It's the best of both worlds!

The first few weeks look like we are covering a lot of chapters. This is because the chapater topics are interrelated, and there is a lot of overlap.  The data modeling examples given in class will  include a discussion of the functional dependencies inherent in the applications, and the ER diagrams will reflect the normalized relations for that model.  Do not get overwhelmed with the reading (although the book is very clear).  Rather, I will walk you through the important topics.  You will have time to catch up on the reading by the midterm.


Date
Activities
Assignments
8/29
  • Administrative introduction, syllabus
  • Chapter 1:  DB History, Motivation, basic terminology (lecture ppts)
  • Intro Overview:  integrity, concurrency, SQL
  • Chapter 2:  Schemas, DBMS, Architectures
  • Supplier-Parts:  motivational example (actually references topics in Chpater 15.1 - 15.4)
  • Chapter 7:  ER Diagrams.  
  • Pilot-Plane Type (example with flaws)
  • Use any modeling tool you want, even Word or PPT.   BETTER:  try  ER Assistant (Windows only); Gliffy; something like Draw.io (I don't prefer their EER notation, but no biggie); StarUML; ErDraw (ok EER notation) Dia (Windows or mac); Lucid (You can keep renewing the free trial); ERDPlus (seems cool and very clear!); worst case, draw and scan into a pdf file.  That is really a worst case.  Yeah, don't do that....
  • You can go another direction entirely, and use SQL Workbench as an alternative to PHPMyAdmin, and also for ERD design.  You're on your own with that, but if you're comfortable with it, great.
  • Discuss Lab #0 (not done in class):  assign and test software installtion on laptops.  It's part of your Orientation points,which also include testing PHPMyAdmin by creating a University database, and populating with this DDL and Insert file.  For more detailed instructions and links, go to Sakai, click on "Orientation" in the left menu bar, and then click on the installation buttons.
Install XAMPP on your laptops, if you are using a laptop.  Configure PHPMyAdmin,  (possible issues),  (You can use any WAMP, MAMP or LAMP stack, or you can use a VM on Guacamole if you request one.  But I have supplied instructions to XAMPP, which works on Windows and Mac.  Check the orientation assignments on Sakai.)  Test your installation as per instructions on Sakai.
You may also want to install SublimeTextTextWrangler (or any good text editor) on the mac, or Notepad++ on Windows

Assign:  Homework #1

Orientation:  Available on Sakai.  Best to complete before the course begins.
9/05
  • Chapter 7:  continue ER Examples:  EN 7.21, 7.23, 7.32, 7.33, 7.34
  • Chapter 8:  EER Diagrams: Examples
  • Requirements Definition 
  • possibly begin Chapter 9
Due:  Homework #1
Assign:  Homework #2 (use EER case)
 resolve any installation issues on stack
9/12
  • Chapter 9:  mapping ERDs to relations (PPT Slides 12-23) revisit the Supplier-Parts example
  • Chapter 3:  relational model  (formalize what you already know by now) and begin SQL (PPT slides)
  • Lab #1 see  Company Schema  using DDL  and Insert  to create and populate the database
  • Text, 3.11, and begin on Simple SQL Queries (based on Chapter 4, but modified for MySQL)
  • useful links:  copy and rename a DB in PHPMyAdmin  and msqldbcopy or  mysqldump for command line
  • Create and populate the Pine Valley database.
Due:  Homework #2
Assign:  Homework #3
Lab #1:  show me or TA at end of class
9/19
  • Chapter 15:  sections 15.1-15.4, normalization and functional dependencies, brief overview
  • Lab #2More complex SQL Queries (based on Chapter 5, perhaps with some extra examples)   user PVFC Big  Version DDL, data1, (data2 needed for HW)
DUE :  Homework #3
Lab #2:  show me or TA at end of class
Assign:  Homework #4
9/26
  • Before completing Lab#3, read Chapter 15.1 - 15.4 to review functional dependecies and normalization.
  • Lab #3:  In-class supervised assignment:  Create a schema; insert values; queries; normalization
  • Team work on Homework #4
  • So much is covered in the first 4 weeks, that this will be your chance to catch up, and pull the concepts and techniques together.
Lab #3:  due at the end of class
Hard deadline for Homeworks 1-3
10/03
DUE:  Homework #4

10/17  Midterm Exam  (Review for midterm)
10/24
  • Lab #5:  Use PHP to publish MySQL data on the web.  Files will be posted after the lab.
  • Assign Lab 5 assignment, using these files.
  • Using a remote server (time permitting)
Assign:  Homework #5
DUE:  Lab 4 assignment
10/31
  • Review Homework #5 
  • Lab #6:  Functions, scope and global variables, using these files
  • Assign Lab 6 assignment
  • Demo:  Overview of Web DB application (videos available.  probably not during class time)
  • Discuss Project  (supervised project scope definition time)
DUE: Lab 5 assignment
11/07
  • Using a remote server  (if we didn't get to it last time)
  • Start Lab 7.  However, the Passwords part of Lab 7 may be deferred until 11/21
  • Cookies, Sessions using these files
  • (Sneak peek at Debug)

DUE:  Homework #5
DUE:  Informal Project Proposal
11/14
Demonstrations of additional topics:
DUE:  Lab #6
11/21 Demonstration of advanced topics: (these topics may be spread over two weeks)
  • Ajax
  • Debug
  • Lab #7: Passwords using bcrypt
  • Professional approaches to programming in PHP  (object orientation, dependency managers)
  • Project Checkup and help
DUE:  Lab #7 (unless otherwise instructed)
11/28 Supervised project work (and possibly some topics from the previous week)

12/05
Project Presentations

12/12
Final Exam 

Important Dates:
Here are some dates from the LUC academic calendar:

Fall Semester's Open Registration ends at Midnight Sun Aug. 27
Fall Semester Begins Mon Aug. 28
Late registration and registration change period begins, late registration fees apply Mon Aug. 28
Late and change registration ends, Last day to withdraw without a "W" grade Mon (Tues, if Labor day) Sept. 5 (Tues)
Labor Day weekend begins, Classes that begin at 4:15 p.m. or later do not meet Fri Sept. 1
Last day to withdraw from class(es) with a Bursar credit of 100% - dates maintained by Bursar Sun Sept. 10
Labor Day, Classes do not meet Mon Sept. 4
Classes resume after Labor Day Tues Sept. 5
Last day to convert from credit to audit or vice versa, Last day to request or cancel pass/no pass option Mon Sept. 11
Last day to withdraw from class(es) with a Bursar credit of 50% - dates maintained by Bursar Sun Sept. 25
Last day to withdraw from class(es) with a Bursar credit of 20% , zero credit therafter - dates maintained by Bursar Sun Oct. 1
Application for Degree. Last day to file, for degrees being awarded at the end of the Spring Semester and the Summer Term of the following year.   Oct. 1
Last day for students to submit assignments to change an "I" mark, from the preceding Spring and Summer Terms, to a letter grade. Faculty may set earlier deadlines. Fri Oct. 6
Mid-Semester Break: No classes Mon & Tues Oct. 9 - 10
Classes resume after Mid-Semester Break Wed Oct. 11
Early alert process begins on Mon of week 7 and runs through Fri of week 9 Mon Oct. 9
Last day to withdraw with a grade of "W," After this date the penalty grade of "WF" is assigned Fri Nov. 3
Spring Registration Begins Mon Nov. 6
Thanksgiving Break: No classes Wed- Sat Nov. 22 - Nov. 25
Classes Resume Mon Nov. 27
Fall Semester classes end Saturday Dec. 9
Final Exams M.Tu.W*.Th.Fr.Sa Dec. 11 - Dec. 16
*Study Day Wednesdays: No daytime exams will be held.