This course is intended to give students a solid background in database 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 relational databases and XML, this course also samples a number of other topics related to data management, such as Web search, data warehousing, data mining, and data privacy. 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 backend itself. Nevertheless, we will study plenty of DBMS internals in order to use a DBMS more effectively.
Instructor: Jun Yang
TA: Dongtao Liu
Time and Place
11:40am-12:55pm on Tuesdays and Thursdays; LSRC D243.
Throughout the semester, there will also be a number of (optional) review sessions for homeworks and exams, conducted by the course staff. 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/fall09/cps116/).
To avoid spam, there is no mailing list for the class. However, the instructor will send out emails with everybody on the recipient list (including the instructor and the TA). You may use the recipient list in these emails to send only announcements, questions/answers, and comments of general interests to the class. 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, an online service pioneered by one of the authors of the textbook, Prof. Jeffrey Ullman at Stanford. 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. You receive immediate feedback for each attempt, which avoids the shortcoming of the traditional submit-and-then-wait-for-grades assignments where one error in understanding can permeate solutions to multiple problems and does not get rectified until much later. We encourage you to continue testing on each topic until you complete the part of the assignment with a 100% score. Gradiance access requires a fee. For more information on obtaining and using Gradiance, please see Getting Started with Gradiance.
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 Mon Aug 31 21:16:39 EDT 2009|