Database Systems

CS44: Fall 2016

About:     | Overview | Schedule | Grading | Labs |
Policies: | Late Work | Integrity | Accommodations |
Help:       | Tips for Success | Resources/Links |


Class Information

Professor: Tia Newhall
Office: Science Center 249
Office hours: Wednesday 10-12, and by appointment

Class: TR: 9:55, Sci Cntr 199
Lab A: M: 1:15-2:45, Sci Cntr 256
Lab B: M: 3:00-4:30, Sci Cntr 256

Required Text:
    Database Management Systems (Third Edition, 2002)
    by Raghu Ramakrishnan and Johannes Gehrke.

Course Piazza Page for lab Q & A: CS44 piazza page

Course Overview, Goals, and Expectations:

Databases sit at the core of all modern commercial software/systems, managing the storage, update, and retrieval of large amounts of data in an efficient manner. This course provides an introduction to database management systems (DBMS); in particular, concentrating on the theory, design, and implementation of relational database management systems. Topics covered include data models (ER and relational model); data storage and access methods (files, indices); query languages including SQL and relational algebra; query evaluation; query optimization; transaction management; concurrency control; crash recovery; and advanced topics (parallel and distributed DBMS, security, others) Lab projects that involves implementing and testing components of a relational database management system is a large component of the course.

CS35 and CS31 are required prerequisites. CS44 qualifies as a Group 2 Systems course for the CS major/minor requirements.

Course Learning Goals:

Student Responsibilities

I have outlined the skills and objects this course promises to provide you. For this promises to be upheld, you will need to commit towards the policies outlined below. To succeed you should:


This is a tentative schedule. It will be updated as we go.

Aug 30

  Introduction to Databases
& Data Storage

  • Chapter 1
  • Chapter 8-8.1, 9-9.3
Tips for Reading CS Textbooks
Monday Lab

Sep 01

  Lab 0: C++ Warm-up with Binary File I/O

Sep 06

  Data Storage and Buffer Management
& ER Model Intro

  • Chapter 8-8.1, 9-9.4
  • Chapter 9.4, 2-2.1
Monday Lab

Sep 08

Drop/Add ends (Sep 09)

Lab 1: Implementing a Buffer Manager

Sep 13

  ER Model
  • Chapter 2-2.4.2
  • Chapter 2-2.5, 2.8, 3-3.1
Monday Lab

Sep 15


Sep 20

  Relational Model
  • Chapter 3-3.4
  • Chapter 3.5-3.8
Monday Lab

Sep 22

  Lab 2: ER and Relational Model

Sep 27

  File Organization & Indexing
  • Chapter 8.2-8.4, 9.5-9.8
  • Chapter 10-10.2
Monday Lab

Sep 29

  Lab 3: Heap Page

Oct 04

  B+Tree Indexes
  • Chapter 10-10.6

  • Chapter 10, 11.1
Monday Lab

Oct 06


Oct 11

Fall Break

Oct 13


Oct 18

  Hash Indexes
  • Chapter 8.4.7, 10.6-10.9
  • Chapter 8.3.1, 11-11.2
Monday Lab

Oct 20


Oct 24

Midterm Monday 7:30-9:30pm, Sci Cntr 101

Oct 25

  Relational Algebra
  • Chapter 4-4.2
    (no reading quiz Tues)
  • Chapter 4-4.2, 5-5.2.1
Lab 4: Relational Algebra

Oct 27


Nov 01

  • Chapter 5-5.3
  • Chapter 5-5.5
Monday Lab

Nov 03

Last day CR/NC or W (Nov 04)

Lab 5: Implementing a B+Tree
Checkpoint 1

Nov 08

  SQL & External Sorting
  • Chapter 5-5.5, skim 5.6-5.7
  • Chapter 13
Monday Lab

Nov 10

  Lab 5: Checkpoint 2

Nov 15

  Query Evaluation
  • 12-12.3, 14-14.3
  • 14-14.4, 14.7
Monday Lab

Nov 17

  Lab 5: Final Parts

Nov 22

  Query Optimization, Parallelization
  • skim 12.4-12.6, 22.4.3

Nov 24



Nov 29

  Transactions and Distributed Databases
  • Chapter 16-16.5
  • skim: 22.6-22.8, 22.12, 22.14.1
Monday Lab

Dec 01

  Lab 6

Dec 06

  Distributed and NoSQL Databases

Dec 08


Dec 13

Final 9am-12pm, Sci Cntr 199


Grades will be weighted as follows: The evening midterm date and time has been set prior to the start of fall classes. You should plan your fall work and activity schedule around this exam. Only conflicts for which you have no control, such as your participation in an athletic team competition or an orchestra performance will be accommodated (practices and rehearsals are not acceptable conflicts). Please read the Accommodations section if you need extra time for taking exams. You must inform me of accommodations or conflicts at least 3 weeks prior to the exam.


The class participation grade is based on:
  1. lab and class attendence
  2. participation in in-class and in-lab activities
  3. reading quiz scores
Reading quizes will be given during most lectures. They consist of a few short questions on the assigned reading, and are designed to encourage you to do the reading prior to lecture. You should review the reading again in more detail after lecture. If you are absent from class, you will recieve a zero on that day's reading quiz; you may not take a reading quiz late. To accommodate missing a lecture due to a short illness or travel to conference or a job interview, etc. I will drop your two lowest reading quiz scores. If you miss class, you are still responsible for the material. You should get lecture notes from a classmate and review the assigned reading.


Most of the labs work will be done with a parter. The programming labs will be written in C++. If it has been awhile since you've programmed in C++, I encourage you to look at some C++ programming references before the start of the semester. We will be using a thin layer of C++ on top of C, so review class definitions, exceptions, and dynamic memory management (new and delete).

Labs will often be assigned in Monday lab. Lab due dates will vary from assignment to assignment. You will submit your assignments electronically by pushing to your assigned git repository. You may push your assignment multiple times, and a history of previous submissions will be saved. You are encouraged to push your work regularly.

About the CS Lab: I encourage you to work in one of the CS labs when possible (vs. remotely logging in), particularly when working with a partner. The CS labs (Sci Center 240, 256, 238, and Clothier basement) are open 24 hours a day, 7 days a week for you to use for CS course work. With the exception of during times when a class, or a class lab or ninja session is scheduled in a lab, you may work in one of the CS labs on your CS course work anytime. The overflow lab (238) is always available. The CS lab resources are for CS course work. Please review the CS Lab Rules and CS User Rules about appropriate use of CS labs. Accessing the CS labs after hours: use your OneCard to gain access to the computer labs and Science Center (near Cornell library) at nights and on the weekends. Contact public safety if you are not able to access these spaces with your OneCard.

Late Lab Work Policy

To help with cases of minor illnesses, athletic conflicts, or other short-term time limitations, all students start the course with three "late assignment days" to be used at your discretion, with no questions asked. To use your extra time, you must email your professor after you have completed the lab and pushed to your repository. You do not need to inform anyone ahead of time. When you use late time, you should still expect to work on the newly-released lab during the following lab section meeting. The professor will always prioritize answering questions related to the current lab assignment.

Your late days will be counted at the granularity of full days and will be tracked on a per-student (NOT per-partnership) basis. That is, if you turn in an assignment five minutes after the deadline, it counts as using one day. For partnered labs, using a late day counts towards the late days for each partner. In the rare cases in which only one partner has unused late days, that partner's late days may be used, barring a consistent pattern of abuse.

You may only use up to 2 late days on any individual assignment. I recommend that you save one of your late days for the B+Tree lab. After you have used up your late days, I reserve the right to refuse any late work from you (you will receive a zero). Any work I do accept after this, will incur a significantly large penalty for every day it is late.

Absence/Assignment Extension Policy

Dropping your two lowest reading quiz grades and your three late days for lab assignments are intended to help when you need to miss a class due to a minor illness or to travel for a conference or interview, or when you have a lot of work to do in another class. Extensions are not granted for any of these reasons; use your free quizes and late days.

If you feel that you need an extension on an assignment or that you are unable to attend class for two or more meetings due to a medical condition (e.g., extended illness, concussion, hospitalization) or family emergency, you must provide your instructors with official documentation from the dean's office or student health center. Their documentation will help us to provide the appropriate accommodations.

Tips for Success

Academic Integrity

The CS Department Integrity Policy Statement:
Academic honesty is required in all your work. Under no circumstances may you hand in work done with (or by) someone else under your own name. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes, but is not limited to, obtaining solutions from students who previously took the course or code that can be found online. You may not share solutions after the due date of the assignment.

Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.

Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook: "Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion."

The spirit of this policy applies to all course work, including code, homework solutions (e.g., proofs, analysis, written reports), and exams. Please contact me if you have any questions about what is permissible in this course.

For this course, it is fine to help each other with using utilities and tools (Unix, C++, Sqlite, man, git, make, ...), and with reading and understanding the assignments. However, you should avoid discussing the details of your solution with anyone other than your lab partner, and you should never look at anyone else's code for a solution to a lab (or to a similar project). In addition, there are many useful on-line resources of which you should take advantage. However, make sure that you do not use these resources in such a way that it violates the spirit of our Academic Integrity statement. For example, should you post questions to on-line forums or mailing lists seeking a solution to the specific problem you are asked to solve. Basically, the solution and code that you submit as your own should be your own. If you are unclear about what type of collaboration is okay and what type is not, ask me about your situation before proceeding.

Accommodations Statement

If you believe that you need accommodations for a disability, please contact Leslie Hempling in the Office of Student Disability Services (Parrish 113) or email to arrange an appointment to discuss your needs. As appropriate, she will issue students with documented disabilities a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact her as soon as possible. For details about the accommodations process, visit Student Disability Service Website. You are also welcome to contact me privately to discuss your academic needs. However, all disability-related accommodations must be arranged through the Office of Student Disability Services.

Below are some resources and links that may be helpful to you (I will add more over the course of the semester).