Syllabus

Course Goals

CS 564 is designed to give students a solid background in database management systems, particularly relational database management systems (DBMSs). We will examine such systems from two perspectives: that of a DBMS user, and that of a DBMS implementor.

Approximately half of the course material will focus on the use of a DBMS. We will introduce the concept of a data model, the entity-relationship (ER) model, the relational model, and learn how to use the SQL query language. We will also cover logical and physical database design issues. The other half of the course will concentrate on DBMS implementation. We will cover file organization, various indexing methods, techniques for external sorting. We will also learn about how a DBMS implements a relational operator, and the basics of query optimization.

Prerequisites

  • CS 367 is absolutely essential. CS 537 might be helpful.

  • The in-class activities, homework and projects will require the use of either Python or C++.

  • You should know, or be willing to learn quickly by yourself, the programming language C++, which will be used for the DBMS internals project. To brush up your C++ skills, you can go through the lecture material for CS 368: C++ for Java Programmers, or the material from a more recent class found here. Check here and here for more C++ tutorials. Keep the links handy throught the semester as you may need to go to it for C++ help.

  • For certain assigments and projects we will utilize Jupyter notebooks. Installation instructions are available here.

Course Format

  • The class meets two times a week (Monday+Wednesday) for 75-minute lectures. In addition, there will be a discussion on (most of) Fridays.

  • A midterm exam and a final exam.

  • 3 programming team projects.

  • 3 individual problem sets.

Exam Dates

  • Midterm: Wednesday October 24, 2:30pm - 3:45pm (during class)

  • Final Exam: Wednesday December 19, 7:25pm - 9:25pm

Grading

  • Projects & Problem Sets: 45% (each 7.5%)

  • Midterm: 20%

  • Final: 35%

Textbooks

Recommended textbook:

  • Database management systems (3rd edition), by Raghu Ramakrishnan and Johannes Gehrke (also called the “cow book”).

Additional book that can be used:

  • Database Systems: The Complete Book (2nd edition), by Hector Garcia-Molina, Jennifer Widom, and Jeffrey Ullman.

Classroom Rules

  • No late days for projects or problem sets.

  • All work turned in is expected to be done individually. The University has very clear guidelines for academic misconduct in case plagiarism is detected.