This course is intended to give students a solid background in databases, with a focus on relational database management systems. Topics include data modeling, database design theory, data definition and manipulation languages, storage and indexing techniques, query processing and optimization, concurrency control and recovery, and database programming interfaces. Besides traditional topics on relational databases, this course also covers a sample of emerging and advanced topics, such as XML, Web data management, data warehousing, and data mining. Programming projects are required.
Prerequisites: Familiarity with Unix and Java or C++. A good understanding of algorithms and data structures. Compared with CPS216 (Advanced Database Systems), CPS116 emphasizes more on how to use a database management system (DBMS) to build databases and database applications, instead of how to develop a DBMS itself. Nevertheless, we will study plenty of DBMS internals in order to use a DBMS more effectively.
Instructor: Jun Yang
TA: Ying Zheng
Time and Place
11:40am-12:55pm on Tuesdays and Thursdays
Husdon Hall Room 208 (starting Sep. 4): One way to access
the room is through the small entrance marked by the red balloon
below. Once you enter, take the stairs to the second floor, and Room
208 should be right there.
For Aug. 28 and Sep. 2, we met in LSRC D344.
For Aug. 26, we met in North 306.
Throughout the semester, there will also be a number of (optional) discussion/review sessions conducted by the TA. They will be scheduled when needed, one week in advance.
Required: Database Systems: The Complete Book, by Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer Widom. 2nd Edition. Prentice Hall. 2008.
Web, Email, and Blackboard
Most of the course materials, including the syllabus, lecture notes, reading assignments, homeworks, programming FAQs, etc., will be available through the course Web page (http://www.cs.duke.edu/courses/fall08/cps116/).
The email address email@example.com reaches everybody in the class as well as the instructor and the TA. Only announcements, questions/answers, and comments of general interests should be sent to this address. Specific questions should be directed to the instructor and the TA. Please check your emails regularly, as important announcements and information will be sent via email.
We will use the Blackboard course management system for grades.
For most of the programming work in this course, we will provide a Linux server running the IBM DB2 database system as well as other relevant software packages. The account is only valid for the duration of the course and will be purged when the semester is over. You will receive more information about the account on this server during the second week of the class.
Parts of the homework assignments will be completed online on Gradiance, a system pioneered by Prof. Jeffrey Ullman at Stanford. Gradiance can generate different intances of a problem each time it is used, and it has a lab component that automatically tests your solutions on different inputs. One of the best features of Gradiance is that you are permitted to test yourself on a particular topic as many times as you like. We encourage you to continue testing on each topic until you complete the assignment with a 100% score. For each Gradiance problem set or lab, your score is the highest score achieved as of 11:59PM on the due date. More information about how to sign up for Gradiance accounts will be available at the time of the first assignment.
Grading is done on an absolute, but adjustable scale. In other words, there is no curve. Anyone earning 90% or more of the total number of points available will receive a grade in the A range; 80% or more guarantees a grade in the B range; 70% or more guarantees a grade in the C range; 60% or more guarantees a grade in the D range. At the discretion of the instructor, the grading scale may slide down (i.e., grades go higher), but it will not slide up.
There are four homeworks, with a mix of written problems, programming problems, and supplemental online Gradiance problem sets and labs. Late homeworks will not be accepted, unless there are documented excuses from a physician or dean.
There is a course project (done either individually or in groups of up to three). Details will be available in the third week of the class.
Both midterm and final exams are open-book and open-notes.
Under the Duke Honor Code, you are expected to submit your own work in this course, including homeworks, projects, and exams. On many occasions when working on homeworks and projects, it is useful to ask others (the instructor, the TA, or other students) for hints or debugging help, or to talk generally about the written problems or programming strategies. Such activity is both acceptable and encouraged, but you must indicate in your submission any assistance you received. Any assistance received that is not given proper citation will be considered a violation of the Honor Code. In any event, you are responsible for understanding and being able to explain on your own all written and programming solutions that you submit. The course staff will pursue aggressively all suspected cases of Honor Code violations, and they will be handled through official University channels.
|Last updated Wed Sep 03 20:34:35 EDT 2008|