CSE 344: Exam Information

Final

Logistics:

  • The final exam is in the usual room, MGH 389, on Wednesday, March 19, 2025 from 8:30am to 10:20am.
  • You may bring one sheet of notes (8.5x11 inches or A4 or smaller, double sided) in any format (handwritten, typed, printed tablet notes, etc.).
  • Bring your Husky card, as we may check it.

Content:

  • All material covered in lecture, section, or on the homework is in scope.
  • You can expect more of an emphasis on the topics that were not in scope on the midterm, including:
    • Relational algebra
    • Entity-Relationship diagrams
    • Functional dependencies
    • Boyce-Codd Normal Form
    • Transactions (ACID, serializability, conflict serializability, locking)
    • Application development principles (SQL injection, password hashing)
    • Query processing and optimization
  • Old exams can be found here. Keep in mind that topics vary from quarter to quarter. Our exam will not contain questions about material we have not discussed.

Midterm

Logistics:

  • The midterm will be in class (in the usual room, MGH 389) on Wednesday, February 12, 2025 from 9:30am to 10:20am.
  • You may bring one sheet of notes (8.5x11 inches or A4 or smaller, double sided) in any format (handwritten, typed, printed tablet notes, etc.).
  • Bring your Husky card, as we may check it.

Content:

  • The midterm will cover material from the first four topics of the course, including material covered in lecture, in section, and on the homework.
  • Since relational algebra was discussed in class during topic 4, but not covered on Homework 4, we would only ask very simple questions about relational algebra. For example, we may ask a question that could be answered if you attended class or reviewed the lecture recording or slides.
  • Tricky things you should probably know how to do:
    • How to use joins when the condition is not just equality between attributes
    • How to use outer joins
    • How NULL behaves in expressions, in WHERE clauses, and in aggregate functions
    • How to compute "argmax" in SQL (ie, how to find not just the maximum value, but find the tuple that maximizes that value)
      • Be sure you know at least one way to do this that also works if you want to find all tuples that achieve the maximum value.
    • How to translate predicate-logic-like statements into SQL (exists is easy, for-all is hard)
    • How to translate everything we know in SQL (join, group-by, aggregation, and subqueries) into Java (not necessarily efficient Java)
  • Things not on the midterm: E-R design, functional dependencies, normalization, BCNF.

Tips:

  • The best way to prepare for the midterm is to do the homework, and review any deductions you received.
  • Most questions on the midterm will involve reading and/or writing SQL. You do not need to memorize all possible operators and functions we have mentioned, but you should practice translating English descriptions into SQL and vice versa, as well as SQL to Java.
  • If you want more practice problems writing SQL, consider sql-practice.com. (Content warning: all the questions involve fake medical data.) You can also practice reading SQL by reading the solutions.