EECS 484, Winter 2016
Database Management Systems


Databases are extremely prevalent -- they are behind technology that all of us use daily, such as mobile apps, banking systems, video games, telecommunication systems, course registration, supermaket transactions, movie and music services, and many more. This course gives a basic introduction to database management systems (DBMSs), i.e. software that is designed to assist in maintaining and utilizing large collections of data. The focus will be on relational DBMSs, which are by far the dominant type of DBMS. The course is designed to provide you with both an external and an internal view of relational DBMSs. By the end of this course, you will know:

  • How to design a DBMS, store data for real-world scenarios, and develop applications that communicate with the DBMS.
  • How to analyze data by "asking" appropriate queries.
  • The internal design of DBMSs that makes them robust to system failures and supports concurrent data accesses.
  • How DBMSs are able to store massive datasets and support efficient query handling.
  • How to perform data mining tasks, such as similarity search.

pdf icon

To read the course information in pdf form, press here.


EECS 281 or graduate standing: You are required to have the background from a data structures course (e.g., lists, hash tables, arrays, search trees) and strong programming experience.

Programming skills: The projects are in Java and C++. The knowledge of C++ is assumed. You will be given a brief overview of Java and expected to be able to pick up the language on your own, if you haven't used it before.

Lecture and Discussion Hours

Office Hours and Communication Protocol

You must strictly follow the rules below regarding email communications with the instructors and other staff members of the class:

  • Questions about homeworks and projects, and technical questions: Use Piazza.
    • In Canvas's course web site for EECS 484, you will find a link to Piazza, which you will need to join to see anything.
    • You should first consider posting your question there, AFTER searching to see if a similar question has already been answered.
    • You can ask a "Private question" that is only accessible to instructors or a question that is visible to all. Generally, we prefer non-private questions, unless you feel that posting your question is going to be a violation of honor code (e.g., you are posting something from your solution). With non-private questions, other students will also benefit from your answers.
    • Giving answers: Feel free to give answers to conceptual questions by other students. The teaching staff may "endorse" your answer or give their own answer. Of course, be careful of Honor code -- you don't want to solve a homework problem for someone, only help them conceptually so that they are on the right track.
  • Personal requests and special accommodations: For questions that are definitely not relevant to other students, send email to eecs484w16 [AT] This will reach all the teaching staff. If your question is relevant to a specific TA (not the instructor), feel free to email the appropriate address, but make sure to prefix the subject of email by [EECS 484]. However, emailing eecs484w16 [AT] is preferred, as then anyone can answer it and it is less likely to be overlooked (some of us do get a lot of emails). All other emails sent to the instructor’s personal email may be ignored and not replied to.
  • Regrade requests: Send an email to eecs484w16regrades [AT], at the latest 48 hours after graded exams or assignments are distributed by the instructor or the TAs. Include all the relevant files and the Regrade Request Form, which you can also find on Canvas. Given the large number of students in the class, by following the communication guideline, you will help us better serve your needs throughout the semester.


    Database Management Systems (3rd edition) - by Raghu Ramakrishnan and Johannes Gehrke, McGraw Hill, 2003, ISBN: 0-07-115110-9. The book has a supporting website, where you can find answers to odd-numbered exercises. The book is really useful, especially for exams. We follow the book pretty closely.

    In addition, we recommend the following informal reference: Self-paced courses on introduction to Databases by Jennifer Widom, Stanford University. There are several mini-courses at the above link and they are currently free. They are all very useful from a practical perspective and nicely complement the material that we cover in EECS 484.

    Schedule (tentative)

    The lecture notes will be posted at least one day before the lecture date. Please print a copy of the notes if you need it during class, but do expect a few last-minute updates. The final version that you are responsible for will be online a day or so after class. The schedule is likely to change during the semester depending on the pace of this year's class -- please check the latest version before preparing for class.

    Course Structure


    Exam 1 25%
    Exam 2 25%
    Projects: 4 assignments, 10% each 40%
    Homeworks: 5 assignments, 2% each 10%
    The examinations are not cumulative. Each applies to one half of the course. In particular, the final exam covers material presented after the topics for Exam 1.

    To get a C or higher, a passing performance is expected on both exams and projects. In general, this means that exams are also important — most students do pass the projects.

    Oracle and Postgres Accounts

    The programming assignments requires you to use Postgres or Oracle accounts. We will provide instructions on obtaining the accounts in the discussions.

    Assignments and Partners

    For the homeworks you can work alone or in groups of two. Some projects are to be done individually and some designed to be done in groups. The first two projects, P1 and P2 can be done in groups of two.

    File types for submission:

    Normally, most submissions will require you to either submit a zip file (for projects) or a single PDF (for homeworks). Try creating a zip file on your computer, given a folder, and unzipping it to make sure you understand the process. Do not use RAR, pkzip, or any other format. On Linux systems, to zip your P1 folder into, you can use:

    % zip -r P1

    To test that the zip contains everything, copy the folder to another location and then unzip it as:

    % unzip

    You should see a P1 folder with all the files.

    Group vs. individual submissions:

    When you are working in groups, you are required to make only one submission. To post on Canvas on behalf of a group, first go to the "People" tab, then to the Group tab, and then search for the relevant homework or project. Join with your partner the same group.

    In case of individual submissions from members of a group, we may choose to grade the submissions as individual submissions. You must still acknowledge your partner on the first page, to avoid a violation of the Honor Code. In case of a grade discrepancy that is brought to our attention for a regrade on a problem done jointly, both partners could end up with lower of the two scores assigned, since it is likely that one grader spotted a reason for deduction that was missed in the other submission. Also, it will result in a report to the Engineering Honor Council as a potential violation of the Honor Code if either of you fail to acknowledge teamwork with your partner in the submitted files.

    Difference of opinion among partners or unequal work in a joint submission?

    If the partners have a difference of opinion on a question, then include both versions of solutions in the single submission, putting names of both partners at top, and indicate the name associated with each version of a solution problem so that we can assign credit appropriately. Also, if only one of you did a particular problem in a joint submission, with no contribution from the other person, you can indicate so in the joint submission, and we will try to assign the credit appropriately.

    Course Policies

    Late Days

    For the homework and project submissions, check out the schedule on the website. Typically, they will be due on Tuesdays or Thursdays at 11:55pm.

    For homeworks, you will get a zero on missing the deadline. We recommend submitting a version several hours before and verifying that Canvas actually shows the correct files as submitted (it is your responsibility to verify submissions). Late homeworks, if allowed in Canvas, must be submitted prior to the start of the discussion on Friday (10:30am).

    For each project, there a 4-day late submission period (i.e., if the project is due on Thursday, 11:55 PM, a late submission is due before Monday, 11:55 PM) in which a 15% late penalty will be incurred for that project (i.e., 1.5/10 points will be deducted, minimum score of 0). Beyond that, you will get a zero on the project. Please submit at least 30 minutes before the regular deadline as a safety measure. Late days are rounded up to the nearest integer. For example, a submission that is 4 hours late will count as one day late.

    We have run into situations in the past (rare) where a student misses the regular deadline by 2-3 minutes for a project and incurred a 15% penalty. Sometimes, this is because of last-minute project work or slow servers. We will give a one-time waiver of the 15% penalty if you miss the regular submission deadline for a project by 5 minutes or less (i.e., 12:00 AM or earlier). Beyond that, the 15% penalty will apply, even if you miss the deadline by 1 minute.

    For extreme circumstances, like medical emergencies, no-penalty extensions will be granted. Email eecs484w16 [AT] with written documentation (e.g. doctor's note).

    We will not make ANY exceptions to our late submission policy. Please do not contact any of the instructors asking extensions.

    Honor Code

    All students (including LS&A and Engineering) are required to observe the Engineering Honor Code in all assignments and exams. A copy of the honor code can be found here. Please make sure that you clearly understand what constitutes cheating. If you are not sure in any specific case, you should ask the teaching staff. The University takes honor code violations seriously, and penalties can be severe. You are not allowed to share your code with anyone other than your partner. You are not allowed to make use of project or homework solutions by others, including solutions from previous semesters. Make sure that you do not upload your code on github public repositories, as this also constitutes violation of the honor code.

    Any suspected violations of the honor code will be reported.

    Disabilities and Conflicts

    Students with disabilities that are documented with the Services for Students with Disabilities (SSWD) Office should contact the professor during the first three weeks of class to make appropriate arrangements.