Syllabus
Overview
The course syllabus for Introduction to Databases (CS 23500/33550).
Lectures
Lectures are twice a week, Tuesday and Thursday 2-3:20 pm in HGS 101. You are expected to arrive on time and participate in class. Please avoid use of laptops in class.
Topics Covered
The course will cover the foundations of Database Management Systems (DBMS). This includes data models, database design, SQL, core database system components (e.g. transactions, recovery, query processing), distributed databases, NewSQL/NoSQL, and systems for data analytics (e.g. column-orientated databases, data warehouses).
The goals for this class are for you to have:
- The ability to model and design a database
- An understanding of the core components of a database management system
- The ability to write SQL
- An understanding of the differences between database systems, NoSQL/SQL, and data models
Grading
Grades will be based on the following criteria. Please note that the ‘labs’ are not in a physical lab, but a series of related programming assignments for undergraduates (23500) Here you will be working with Java pedagogical database system implementing core database components. The lab for Undergraduate can be done in a pair, you may not change partners, but may decide to switch to individual after starting as a pair. Both partners are responsible for understanding all parts of the submitted assignment, and contributions must be outlined in the submission documents.
The graduate students will submit a single course project that is a bit more open ended and challenging than the labs. This will be implementing a C based columnar main memory system.
Undergraduate:
- Exams: 35%
- Labs (programming assignments): 40%
- Homeworks: 20%
- Participation (class and piazza) 5%
Graduate:
- Exams: 35%
- Homeworks: 15%
- Project: 40%
- Paper write-ups: 5%
- Participation (class and piazza) 5%
Participation
Full participation credit will come from either being an active participant in the classroom (asking and answering questions) and/or answering questions on Piazza. Showing up most days will only get you part of the way there.
Requirements
- Ability to run Ubuntu 18.04+ (or equivalent) running on bare metal or VM.
- Install Java 1.7+ and refresh yourself on Java.
- Install git. Learn GIT
- Be able to use chisubmit
- Sign up for Piazza. All homeworks will be posted on Piazza
Textbook
Database System Concepts (6th Edition) by Silberschatz, Korth, and Sudarshan. Other paper readings may be assigned.
TAs
- Dixin Tang
- Rui Liu
- Chunwei Liu
Office Hours
Office hours for Aaron are Weds 1-2pm in John Crerar Library 241.
TA office hours are Mon 11-12 and Thurs 3:30-4 in John Crerar 205.
Policies
Communication
Please use Piazza for most communication.
Plagiarism
Don’t do it. Guidelines if you need them It is incredibly easy to detect cheating on the programming assignments.
Issues with Grades
You must wait 24 hours to talk about issues with grading and it must be sent via private piazza post. I will typically post a thread to note grading issues, please add to this thread to ensure you issues are resolved.
Cell Phones
Please keep your cell phones on silent/vibrate while in class.
Late Projects and Homeworks
Each day an assignment is late, it is marked down 20%. You have four total slack days / late chips to use at your discretion. These are here for you use at your discretion, and only under the most extreme circumstances will we grant additional late chips, and this typically requires some form of communication from a dean or advisor. If you have a partner for an assignment, the most late chips / slack days you can use is the min of your days and your partner’s days (e.g. Adam has 3 and I have 2, submitting together we cannot use more than 2). You will use Chisubmit to submit assignments and manage late days. You are not eligible to use slack days on anything due during finals week!