As an undergraduate student, I avoided Northwestern's database course because I found anything involving data (or worse, math) to be intimidating. So I chose classes that were more aligned with my interests at the time, like game development or computer graphics. It all worked out in the end, but I always regretted not taking some of the more "traditional" computer science courses. Part of the reason I enrolled in Georgia Tech's OMSCS program was to fill in some of these gaps from my undergrad experience with courses like CS 6400: Database Systems Concepts and Design.
In terms of course material, CS 6400 did feel like an accelerated undergraduate course. The course was roughly divided into four sections:
Throughout these four sections, there was an extended three-phase group project. Through the first two phases, the group project aligned well with the current course topics, but it took a totally different turn during the final implementation phase.
As an engineer who doesn't work with SQL relational databases frequently, I did learn something new in all of the phases. In particular, it was probably beneficial to learn about some of the more theoretical underpinnings of databases, such as relational algebra or how indexes are implemented with B+ trees. However, for the most part coverage of these topics was surface-level and limited to traditional relational databases; no other data modeling techniques like NoSQL were discussed.
Because of the somewhat limited ground covered, the tests for this class seemed designed to be tricky in order to artificially raise the difficulty of the course. This was particularly prevalent on the fourth and final exam, which seemed delibrately designed to lower the average grade in the class. Personally, I would have preferred covering either more material or more challenging topics instead of having to deal with "gotcha" questions, but regardless I still did relatively well in this course.
Similar to the exams, I thought the project was fine conceptually, but the difficulty of it was artificially increased through vague requirements. It seemed that the TAs wanted to avoid "giving away" the answer when asked for clarification, which became a source of frustration for my group. As a group, we probably spent more time debating what was meant by a one-sentence forum post than actually discussing alternative approaches to our database design. In my opinion, this created an environment that isn't conducive to learning, since it felt like meeting the project requirements devolved into a guessing game. In order to improve the project, I would either allow TAs to give more detailed explanations of requirements (at the expense of making the project "easier"), or I would design the project to be more open-ended, rather than requiring a specific final design.
Database Systems Concepts and Design is one of the lower-rated courses within the OMSCS program, and having completed it I can understand why. While the course itself is fine at a surface level, there are many elements (tricky exams, vague requirements) that make the class much more frustrating than it needs to be. Still, the material itself served as a good introduction to relational databases, and I'm glad to have challenged myself by taking the sort of class I would have avoided during my undergrad.