CS 564 SECTION 2 / Fall 2022: Database Management Systems

Lectures: Wed/Fri 4-4:15pm, room S413, Chemistry Building. Discussions: Mon 4-5:15pm, room S413, Chemistry Building
Discussions will be used to discuss the project and to make up for certain lectures. Hence attending them is mandatory.


Announcements


Important Dates

Course Schedule is listed on a separate page.


Project Description
NOTE: The following project description is from an old offering. I'm keeping it here only to show you what the project will be like. There will be multiple stages, some requiring heavy coding in C++, and a few weeks for each stage. I will modify this part soon.

Stage 1, ER design and translation: due Mon Sep 24 at 2:30 in class
Stage 2, SQL queries : due Wed Oct 3 at 2:30 in class
Stages 3-6, Building a mini relational database management system
Stage 7, Building a Web-based application: due Fri Dec 14 6:00 PM


Staff
Instructor: AnHai Doan (contact information on my homepage). Office hours: TBD, and by appointment, in CS 4355.

TAs: Arora Saanidhi, sarora45@wisc.edu, office hours: TBD
Sinha Sweksha, ssinha42@wisc.edu, office hours: TBD
Sunil Mallireddy, sunil.mallireddy@wisc.edu, office hours: TBD

Class Mailing List: compsci564-2-f22@g-groups.wisc.edu (tentative)
Discussion Forum: on Piazza, TBD.


Course Description
CS 564 is intended to give students a solid background in database management systems, particularly relational database management systems. Such systems will be examined from two perspectives: that of a database system user, and that of a database system implementor.

Approximately half of the course material will focus on the use of database management systems. The concept of a data model will be introduced, the entity-relationship model will be covered, and then the relational data model and the SQL query language will be examined in detail. This part of the course will also cover logical and physical database design issues. Advanced features such as views and security will also be discussed briefly. Students will exercise their knowledge of this part of the course material by designing a small database and running queries.

The other half of the course will concentrate on the implementation of relational database management systems. Topics to be covered include file organizations, access methods (e.g., ISAM, B+ trees, linear and extendible hashing), external sorting techniques, the implementation of relational database operations, and the basic concepts of query optimization. Concurrency control, recovery, and other advanced implementation issues will also be touched upon as time allows. Associated with this part of the course will be a project involving the implementation of a fairly complete single-user relational database management system.

Although this is a two-part course, the presentation of the two parts will be interleaved in order to spread the course's programming work out as smoothly as possible over the whole semester.


Prerequisites
ECE/CS 354 and (CS 367 or 400). Knowing data structures is absolutely essential. CS 537 might be useful.

In addition, you should know C++ or be willing to learn C++ for the course project. If you are unsure of your ability to learn a new language in the first few weeks of the semester, I strongly encourage you to postpone 564 until next semester. If you still want to go ahead with 564 this semester, I suggest that that you immediately begin improving your knowledge of C++.

We may also do a project stage using some Python programming and Jupyter notebook. If we do, we will give you instructions, but you may also have to learn some amount of Python programming.


Course Format
Grade: midterm = 25%, final = 30%, project = 40%, classroom participation = 5%.
Classroom Rules
Cell phones must be turned off. No smart phone browsing during the class.
There will be no make up exams.
Textbooks
Strongly recommended: "Database Management Systems", R. Ramakrishnan and J. Gehrke, third edition, McGraw-Hill.

For a C++ book I recommend the book "A C++ Primer" by Stanley B. Lippman. If you already have a C++ reference book that you like do not buy this book.