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
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.
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.
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.
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.