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....
|
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:
- Apply data modeling concepts and techniques to capture the
conceptual model of an applicaiton
- Create and query a database, using a professional DBMS
- Query against a database using SQL
- Implement a database application (in this case, in PHP and
possbily also
in Java)
- Learn fundamental principles of the relational model,
normalization and functional dependencies
- Survey current topics and trends in database programming
Course
Materials: All of the material (text and
software) that
you need for this course is available for free online:
- No
single
textbook covers all of the topics for the course. Many of the
lectures and assignments will draw upon Fundamentals
of Database
Systems, by Elmasri and Navathe, 6th edition,
978-0-13-6008620-8.
The text has a chapter that discusses PHP programming; however, expect
to use publically-available resources on the web for the hands-on
segment of the course. The 6th edition is old, but
free pdf versions are available all over the internet.
The 7th edition is not that new either (but it is the most
recent). I bought a pdf version for $3 on ecrater.com.
The reason I'm not concerned about getting the latest edition
is because the fundamentals, which are relational database design, do
not change. And PHP upgrades frequently (and has had a major
upgrade recently), so we are not relying on the textbook for that
anyway.
- Course Support:
- Assignment submission and grades will be maintained on Sakai.
Software:
- We will be using PHP and MySQL (actually MariaDB, which
is a clone to MySQL) to develop web database
applications. These require a web server, which you can
install on your laptops. You may install
each component separately. Alternatively (and strongly
suggested) is
to
install a "stack" that integrates these components into one
installation. These are often referred to as WAMP (Windows,
Apache, MySQL, PHP), MAMP (Mac, ...) or LAMP (Linux,...).
There are many (such as WAMP Server, XAMPP, MAMP-PRO, etc). I
have been using
demonstrate my local server programs using Bitnami
to demonstrate programs in class, simply
because it is easy to use and it has a similar interface for its
Windows and its Mac implementations. However, since the PHP upgrade
from 5.x to 7.1, Bitnami's 7.1 version is still a development version,
and it's Mac version is not available yet. So for this
semester, I'm using XAMPP,
which has both a Windows and a Mac 7.1 version. I have tested
both, and they both work fine. Of course, the stack manager
doesn't look identical, which it did in the Bitnami version.
In fact, the Mac version looks like the old Bitnami version,
and the Windows version looks different. But once you have
everything running, the differences are negligible, and you should be
able to follow along just fine. Another option for Mac users
is MAMP. All installations instructions and links are
available in the Orientation module on Sakai. If you have a
problem installing the software on
your laptops, contact me and I will set up a Virtual Machine for you.
I have a WAMP stack installed on the virtual machine.
Or, you may share with a classmate.
- You can use any text editor to write PHP
programs. I really like Notepad++ for
Windows. But I will be using Sublime Text to demonstrate the
files for this course. It is compatible with both Windows and
Mac, and has some nice packages to support the text
editting for PHP and html. The Orientation module has
instructions for installing those packages.
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:
- Using or copying an outside person's work on an exam or
assignment in any fashion. "Outside person" includes a person who put
something on a web page. It has become depressingly familiar for me,
most every semester, meting out penalties for using someone else's work
on the web. Do not do it.
- Anything that vaguely resembles something from any
Instructor's
Manual anywhere.
- Work includes outlines, pseudocode, code, and documentation.
- Allowing your own work to be copied or used by an outside
person.
- Submitting as your own work something that has been written
by an
outside person (or web site).
- Using any unauthorized reference on an exam or assignment
- Not acknowledging and describing in writing on an
assignment any
help you received or gave.
- If you are working on a pair or group project, an "outside
person" only refers to people other than your assigned partner or team.
- Note that cheating goes both ways: both giving and
receiving.
- Consultation is allowed with the TA (if we are fortunate
enough
to get one) and with me. If you
consult with the TA and/or with me, still make a comment at the top
of your work about the substance and depth of the help.
Help from any source is fine concerning
- The meaning of program or query specifications (not the
plan for
the
solution or the actual solution).
- The tools used to write programs.
- The restrictions of the current programming language syntax.
Exams: There
are two exams.
Tentative dates are:
- Midterm: 10/17 for the in-person class.
Options for the online section will be announced as the date
gets close.
- Final Exam: 12/12 Options for the online section will be
announced as the date gets close.
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.
- No extra credit opportunities will be
provided. It
is neither practical nor fair to the other students.
- Late
assignments are worth only half credit. This is true
even if you have a valid reason for submitting the homework
late. Usually, late assginments must
be submitted within one week of the due date for half credit. For some
assignments, you can't submit it late at all. And for some, I do not
allow an entire week for late submission, but only a few days. Please
check Sakai for exact due dates and the last time for a late submission
for a specific assignment. Further,
they can only be submitted late if I have not posted the answers to the
homework.
After one week (or the late submission deadline), you will receive zero
points for any unsubmitted
assignments. No exceptions.
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 SublimeText, TextWrangler
(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
|
|
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
#2: More 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. |
|
|