EECS 484: Database Management Systems Syllabus

The University of Michigan, Spring 2026

Instructor: Prof. Raed Almomani <almomani@umich.edu>.

IA: Yilin Chen (chnyilin@)

Course Staff Email: eecs484staff@umich.edu

Course Description

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, supermarket 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:

Prerequisites

Prerequisites: EECS 281 or EECS 403 or CSE graduate standing. You are required to have a solid background from a data structures course (e.g., lists, hash tables, arrays, search trees) and strong programming experience. The EECS 281/403 background is particularly important in the second half of the course. Take a look at Chapters 8-11 and 13-15 to get an idea of the concepts we will be dealing with later in the course — most of it is heavily reliant on a very good understanding of the EECS 281 material.

Programming skills: The projects are in Java, JavaScript and C++. 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 have not used it before. One assignment may use JavaScript that you will be expected to pick up on your own from examples.

Office Hours

Faculty office hours are by appointment. IA/GSI office hours will be on the course calendar. Use the faculty office hours to discuss lecture material, concepts, and any broader issues you would like to talk about including career, grad school, etc. Email almomani@umich.edu with the subject EECS 484 Office Hours to schedule time with a short note on whether you prefer in-person or remote, what you would like to discuss, along with some availability for the next few days.

The office hours of the teaching staff (IAs and GSIs) will be available on the course calendar along with the room number or indicate that they are virtual. They include help on homeworks and labs. Before heading to office hours, always make sure to check the latest schedule on the calendar or Piazza posts for exceptions.

Course Materials

Canvas: We will use Canvas for announcements, lecture recordings, slides, etc.

Piazza: We will use Piazza for Q&A and announcements. Please monitor the course Piazza regularly.

Autograder.io: Your projects will be graded via the EECS autograder.io service.

Gradescope: You will submit written homework assignments via Gradescope.

Office hours queue: You can join the office hours queue through the course links.

Textbook & Other Resources

We will follow the “Cow” book, i.e., 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.

https://www.edx.org/course/databases-5-sql

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.

Course Announcements

We will use Piazza for course announcements. You are responsible for ensuring that you receive notifications from Piazza and that you pay attention to any announcements. The default settings will send you email notifications every 2 hours — we recommend configuring Piazza to deliver at least daily digests so that you do not miss useful information.

You should be enrolled in Piazza. If you do not have access, please email the instructional staff to be added.

Projects

This course contains 4 programming projects.

Project 1: Fakebook Database.

Project 2: Fakebook JDBC.

Project 3: MongoDB.

Project 4: Grace Hash Join.

We improve the projects each semester, so they may change any time before the project release date.

Communication Mechanisms

Piazza: You can use Piazza to discuss concepts, exchange interpretation of specs, and seek conceptual help (without sharing solutions) with other students. Piazza can be used for discussing homeworks, lectures, discussions, and project specifications. Teaching staff will monitor Piazza, but only once or twice per day, so there may be a latency in getting a response. Other students may also be able to answer your questions.

Piazza is set for public questions at this time so that other students can help. It is best used for clarifying specifications or getting some guidance when you are stuck or discussing general approaches. If you have a private question that requires sharing your code or a homework solution, please use office hours, or find a way to frame the question publicly without sharing your solution.

We will also post announcements on Piazza. Occasionally, we may also reach out to you directly via email.

Canvas: Homeworks and projects will be posted on Canvas and should result in a notification to you.

Office Hours: Please use office hours to seek help from the teaching staff.

Email to eecs484staff@umich.edu: You can also reach us via email to alert us of urgent issues (e.g., ambiguity in homework or project), but we will usually not be providing individual help on the projects or homeworks via email. Office hours are the best way to seek individual help.

Personal requests and special accommodations: Please email eecs484staff@umich.edu. This will reach all the teaching staff.

Email to an individual teaching staff member: If your question is relevant to a specific TA or instructor, feel free to email the individual email address, but make sure to prefix the subject of the email with [EECS 484], so that we are less likely to miss it.

Given the large number of students in the class, the staff appreciates that you follow the communication guideline, which helps us better serve your learning needs throughout the semester. Thank you.

Oracle and Postgres Accounts

The programming assignments will require you to use Oracle accounts. We will provide instructions on obtaining the accounts in the discussions — these accounts are university-managed. Some assignments may use Postgres or MongoDB. Those are managed by the class staff and we will provide you information on those as needed.

Course Requirements and Grading

The course grade is based on the following components:

Assignment Percentage of Grade
Midterm Exam 27%
Final Exam 27%
Projects 4 programming assignments @ 10% each = 40%
Homeworks 5 written assignments at 2% each, with the two lowest scores dropped = 6%

Instructors may award bonus points for significant contributions to improving the quality of the course at their discretion.

The examinations are not cumulative. Each exam covers about one-half of the course. The grading is not on a curve and you are thus not competing against other students. We plan to award the grades according to the following chart:

Minimum percentage achieved Grade
97%A+
93%A
90%A-
87%B+
83%B
80%B-
75%C+
70%C
65%C-
55%D+
45%D
Below 45%E

To get a C or higher, you also need to earn a minimum competency on exams and projects. You must achieve a minimum of 50% on the exams (averaged) and 55% averaged on the projects.

Grades shown in the table above are superseded by the minimum competency rule. If you achieve both thresholds for minimum competency, then we guarantee you at least a C, overruling the scale shown in the table. However, if you fail to meet at least one of the thresholds, then we reserve the right to lower your grade from that in the table — you can receive a C- and fail the course.

Homeworks are crucial to develop problem solving skills, absorb the lecture material, and do better on the exams. They can also have a major impact on your grade. They are however not considered as part of the minimum competency requirement.

The exam scores are not curved. But, we aim to award at least 25% A- or higher and 75% B- or higher (cumulative) at the end of the course. Thus, C+ or below is expected to be no more than 25% of the class. The thresholds in the table may be adjusted down at the end of the semester if needed to meet that goal, but they will never be raised. The amount of adjustment for each threshold is up to the judgment of the instructors, as long as the goal is met. Note that you still need to achieve minimum competencies, however.

Graduate students are graded according to the same scale as undergraduates. Thus, as a graduate student, if you are aiming to get a B or better, then you would need to get an 83% and meet minimum competency to guarantee getting a B in the course. We highly recommend taking EECS 403 first if you have not taken a significant data structures course as an undergraduate and done a significant amount of programming with data structures.

The midterm exam is scheduled for Thursday, May 30th at 5PM-7PM Eastern time. The final exam is scheduled for Monday, June 27 at 8AM-10AM Eastern time. Information for students with disabilities can be found at the end of this document. There will be no make-up exams, but we will try to offer one alternate time for those with exam conflicts with other courses. If that does not work, you may need to seek an alternate time with your other instructors. Please contact staff for unusual situations. For either exam, you must let us know by May 15th if you have SSD forms and require extended exam times.

Class Participation and Helping Others

We encourage high class participation, preferably in-person, and being a good citizen in the class, including providing conceptual help to others in the class in understanding the course material. We also appreciate a visible effort to pass the course by being engaged in office hours. Introduce yourself to your IAs/GSIs and professors, so that they can remember you.

Please feel free to email us to let us know if certain students in the classroom, or even IAs and GSIs, have been particularly helpful to you or you feel you have been very helpful to others. We always appreciate such inputs.

One potential concern is that you can be too helpful to the point where it is detrimental to learning or violates the honor code. In general, do not share solutions. Also, do not share your code. The best help is offering conceptual help and accepting conceptual help, e.g., understanding the spec, discussing problem solving strategies, and troubleshooting strategies in case of a bug.

Post-Course

As long as you pass the course, we invite you to apply for an IA, GSI, or grader position in a future term. Let us know of your interest as well and we can share your name with the next instructor. CSE will usually send out an email inviting applications from potential students. You may be interviewed or asked to present a 5-10 minute presentation on a topic of your choice. We are not necessarily looking for the highest course grades when hiring for these positions. We are looking for enthusiasm for teaching and a helpful attitude towards students.

Assignments and Partners

The projects and homeworks are required to be completed in groups of two. Exceptions to this can be approved in rare cases, for example if you really want to work alone. If you do not know anyone in the class, please use the discussions and Piazza to find a partner.

It is possible that you have a poor match with your partner and prefer to split. Contact us if you run into that situation and we can help you split. But, we may not always be able to help you find a new partner in that situation, so it is in your best interest to try to make the partnership work by working closely with each other.

Partnerships on the project and homework are likely to work better if you can put aside plenty of common time to work together as a pair each week, rather than by splitting the coding or homework problems and working largely separately. Check compatibility before you form the team.

We expect both partners to contribute roughly equally. If there is a strong imbalance in contributions that is bothering you, please let us know. That may lead to a conversation with the group and a possible adjustment of your scores on the project.

File types for submission

Normally, most submissions will require you to either submit one or more source code or SQL files, for projects, to the autograder or a single PDF, for homeworks, to Gradescope. The autograder will tell you what file or files you are supposed to upload for each project.

Project Submissions

This course will use the EECS autograder.io service. For each project, you will register as a group. Each group gets 3 submissions per day. We will accept the submission that receives the highest grade. It is against the honor code to register individually on the autograder while working in a group.

Aside from high-level discussion, collaborating with others outside of your group, especially sharing source code, is not permitted. We use automated plagiarism and similarity detection software on all submissions.

Your submissions should indicate the contributions made by each individual in your submission. We may make adjustments to your individual grade after project submissions based on individual contributions.

Homework Submissions

We will use Gradescope for homework submissions. You should have been added to the Gradescope roster. You will be uploading your submission and should do so prior to the deadline. Leave enough time for that.

Late Days

Deadlines: For the homework and project submissions, check out the schedule. Typically, they will be due at 11:45 PM. We have run into situations where a student missed the regular deadline by 2-3 minutes for a project and incurred a severe grade penalty. We strongly recommend submitting before 11:45 PM for that reason — servers can be really busy close to the deadline and there may also be a clock skew.

The backend system will not apply a late penalty as long as it records a timestamp of 11:59:59 PM or earlier according to its clock. After that, a late penalty applies, even if you miss the recorded timestamp by 1 second and even if the penalty is due to clock skew, slow servers, etc.

Homework receives a zero after the submission deadline. We recommend submitting a version a few hours early and verifying that it was indeed successfully submitted. It is your responsibility to verify submissions.

Note that we do drop the lowest homework score. So, if you miss submitting one homework for any reason, for example oversight, sickness, etc., then that would become a candidate for being dropped. We do not drop project scores. We also recommend saving a private backup to a University-supported file system, for example Google Drive or Dropbox, so that you have a verified timestamp of the work being completed. You can drop your lowest 2 scores, in case you miss a deadline inadvertently or because of being sick, or personal reasons. No other exceptions will be considered. Try to do the homeworks early when you can if you anticipate conflicts near the homework deadline.

Project Sick Days

We understand that you can fall sick, for example Covid or Flu, or have unanticipated family emergencies while working on a project. You have 6 sick days per person across all projects over the semester to account for such unexpected situations. Each of you and your partner can exercise this option at most twice during the semester, with 6 free sick days available total over the semester per person.

It is very important for either you or your partner to let us know as soon as you are able to when you start and end the use of your sick days, along with a brief reason, so that we can track the use of your sick days. Dropping a short note via email to the teaching staff and to your partner should suffice. Keep documentation, e.g., get a doctor’s note. We may not always ask for it, but we do have the right to ask for it. That may happen for your earlier use of sick days if you request us to consider exceptions beyond this policy.

Your group must not do any project submissions on your sick days. If the autograder permits us to, we may disable submissions for your group and then reopen regular submissions when you report that you are resuming work. Regardless of whether submissions are disabled or not, your group is not supposed to do any submissions while utilizing sick days. The partner who reports sick is charged the sick days, though the entire group gets the resulting deadline extension.

Do realize that using these sick days does not extend deadlines for subsequent projects, only for the next due project. Sick days are counted from midnight to midnight according to the server clock. Any submission on a day means that particular day is not counted towards the sick day and is considered a working day. It is important to have a good understanding with your partner on the submission policy and their willingness to adhere to it.

Project Late Days

In addition, you will be given 4 late day tokens on autograder.io that are across the entire semester. Submitting past the deadline will automatically use your token. The autograder.io specs are not entirely clear as to whether the late day tokens are individual or group. We will clarify that later. It may be best for only one partner to submit in the meantime on late days on behalf of the group, in case the late day tokens are per student.

Major Situations

If there is a serious situation that requires you to be absent for a longer term from the course or miss a scheduled exam, we will discuss options with you on a case-by-case basis.

Follow-up Questions to Lectures

Our lectures are on Mondays, Tuesdays, Wednesdays and Thursdays. You can email Prof. Almomani questions that you would like the instructor to address by Monday or Wednesday on any material covered in the previous lectures. The instructor will pick a subset of questions, if any are received, and use a few minutes of class to address those questions in that week. If your question is not picked, feel free to raise your hand and ask or schedule office hours with us.

Honor Code

All students, including LS&A, Engineering, and Rackham, are required to observe the Engineering Honor Code in all assignments and exams. Information about the Engineering Honor Code, including the code itself, can be found through the Engineering Center for Academic Success. Please be sure that you clearly understand what constitutes a violation of the Engineering Honor Code. If you are not sure in a specific instance, ask the teaching staff. The College of Engineering takes honor code violations seriously, and penalties are severe.

Remote Participation

If you are sick, please stay at home and participate remotely. Lecture recordings and the recording of at least one of the discussions will be provided.

Accommodations

To request disability-related academic accommodations, visit Services for Students with Disabilities sometime during the first three weeks of classes.

Contact course staff if you encounter scheduling conflicts that you cannot solve by yourself.

We aim to provide an inclusive learning environment for all. If we can help with addressing any barriers to your learning, let us know. We welcome feedback at any time during the course.