CPSC 304

Introduction to Relational Databases

Course Description

Overview of database systems, ER models, logical database design and normalization, formal relational query languages, SQL and other commercial languages,data warehouses, special topics.

Average difficulty
2.1 / 5
Average quality
3.2 / 5
Scroll to see reviews

Add a Review for this course

Please ensure that your review is respectful and constructive. Read about UBC's aim for creating a safe and inclusive learning environment here. These reviews may take several days to process and will be scanned for inappropriate or malicious content.

Please enter a name/username.
Enter a valid url including the 'https://' prefix. (https://www.example.com)
Please enter your course review. [minimum length: 50 characters]
3
3

One of my favourite CS courses, perhaps even my favourite. If you like or are interested in databases you will very likely enjoy this course. As someone who was pretty familiar with databases before I took this course, I can say the vast majority of the course is very applicable to the real world. Overall I give top marks to most aspects of the course. The lectures were well done, the textbook is quite good, there are many exercises to refine skills, and exams were very reasonable if you paid attention and did some practice. I do have a few criticisms though. A few aspects of the project feel somewhat antiquated and suboptimal (taking a bunch of screenshots of features to put in a Word doc). The number of errors in the answers to the exercises is higher than should be the case (not counting the errors corrected in the textbook answer key). The lecture(s) on datalog could/should be replaced with something more practical like a survey of NoSQL databases.
Difficulty:2.5
Quality:4
ushankab, May 10 2024, course taken 2023W2
CPSC304 is a fairly low-stress course covering database design, normalization, and several query languages: SQL, relational algebra, and Datalog. The latter sections of the course (data warehousing and Datalog) felt a bit disconnected with the rest of the course, but the theory is still useful Note that the course has a significant project component. Start early on your project and find a solid group. The exams were fair, with nothing out of pocket. Be careful with small details like filling in N/A’s on tables on exams. There are a lot of similar types of questions (e.g. ‘find the X with the largest Y’), so memorizing recipes to solve those problems can be helpful for exams.
Difficulty:2.5
Quality:4
anon_304_student, Jan 4 2024, course taken 2023W1
Course content is objectively not that difficult. But the exams are kinda wacky. Midterm 1: Like a good chunk (one third) of the entire exam was weighted towards one ER question with an aggregated ternary relationship, which was only briefly covered in class. You would get docked marks for not writing your answers in alphabetical order or not writing N/A in boxes which don’t apply. Luckily I did not miss those instructions, but I feel bad for non-native English speakers who had to focus on singing the alphabet song instead of the exam. Final: on piazza, they clearly said writing division queries in SQL would not be tested on piazza. But they pulled a gotcha because you had to read it on the exam. So why they said what they said on piazza is beyond me.
Difficulty:2
Quality:2
organophosphorus insecticide, Dec 15 2023, course taken 2023W1
Probably the easiest elective I’ve taken during my CPSC career at UBC. Interesting course, a bit dry at points because it was so easy. Perhaps easier than CPSC 110.
Difficulty:1
Quality:2
Jen Chen, Jul 20 2023, course taken 2019W2
Teaches all the basic you need to get started with Relational Databases. Highly recommend taking this course even though it is not a required course for the CPSC major. The project was easy and almost everyone got a 100% in it. Course final and assignments were also easy. Not too heavy course load.
Difficulty:2.5
Quality:4
annonn, Feb 3 2023, course taken 2022W1
CPSC 304 is UBC’s introductory course to relational databases…you’re not expected to have had any exposure…prior to taking this course. You’ll learn about a fairly wide breadth of material; this includes database design (Entity-Relationship models), the relational model, formal relational query languages (relational algebra), writing actual queries (using SQL and datalog), normalization and normal forms (3NF, BCNF), and a few miscellaneous topics near the end of the course like XML. In 2013W1, CPSC 304 also covered topics that have apparently since been moved to CPSC 404 now (as of 2015), including logging, crash recovery, and concurrency control. I’m not entirely sure I understand the rationale; yes, the topics that were moved are more pertinent to CPSC 404 because they cover database internals, which isn’t the focus of 304, but I felt that the pacing of 304 was pretty good already to begin with. Anyways, I digress… Read more
Vincent Cheng, Jun 22 2020
You learn SQL in 304, so if your co-op job involves a lot of you coming up with SQL queries and working with databases, you’ll also find it useful.
/u/UBC110TA, Jan 26 2020
304 was incredibly boring for me. I just did not enjoy any of it. I got my A+, and felt so dissatisified with the course. They hype up this huge project and in the end, your marking scheme is a checklist which would have made your life so much easier if you had it in the beginning of the course. The TAs were sort of all over the place during tutorials, and the book is incredibly dry.
/u/creamenator, Mar 5 2014
Its an easy course. If you have done sql before this is mostly a cakewalk except some relational algebra stuff. I personally got bored halfway through the course because I had prior exposure to the material.
/u/vaastav05, May 23 2019

Historical grade information

Grades information from UBC Grades Database