Course syllabus


TDA357 / DIT622 Databases

LP3 VT24 (7.5 hp)

The course is offered by the department of Computer Science and Engineering.


NEWS: Tentagranskning on Thursday 18th of April 15:30 in room 6217 of the EDIT-building.


Contact Details

  • Examiner and lecturer: Ana Bove <bove @>
  • Guest lecturers: Jonas Duregård (on Software applications)
  • Teaching assistant:
    • Lorenzo Perticone
    • Isabel Ljungberg
    • Hugo Moeneclaey
    • Axel Solhall
    • Love Lindqvist
    • Victor Olin


Communication Channels

  • Mail Ana <bove @>
    • for questions regarding the course (including extensions of deadlines when justified) or when a particular concept from the lectures or exercise classes needs to be clarified;
    • if there are any administrative issue around groups, for example if there is a very special reason for which you need to do the assignment alone or if your lab partner is no longer following the course;
    • if for a very good reason you need an extension for your group's submission.
  • Questions about the lectures/exercises should be asked during the lecture/exercise or by mail to Ana.
  • Questions regarding the programming assignments should preferably be asked to the TAs during the lab slots.
    If you have a question you couldn't ask in the lab session do use Slack channel #questions, do not mail a TA!
  • Slack channels and their purpose (click here to join! link valid only during January so please do not wait!):
    • #general: This channel is only for important announcements from our side;
    • #find-lab-partner: To find a partner to do the programming assignment;
    • #questions: For general questions about the programming assignment. We will do our best to answer if there is time. If you are a student who knows the answer of a question, please contribute! You cannot post part of your code in your question or answer!
    • #lab-help: To queue in either of the lab rooms in order to get help with the programming assignment during scheduled lab sessions. Make sure to write the number of the room you are in so we can find you (IDE-D2505, EG-2514, EG-2515, EG-2516);
      OBS: You cannot start queuing before the lab sessions start!!
    • #demo: For the online demonstration during the last week.
      OBS: You cannot start queuing before the demo sessions start!!
  • OBS: You cannot communicate with your peers (outside your group) regarding the programming assignments. Any suspicious on cheating will be taken seriously and must be reported to the Disciplinary Committee for further investigation.
    It is however fine to discuss exercises or other issues not connected to the assignments.


Course Purpose

The course is a typical first course in database systems, and occupies a traditional place in the curriculum. It covers the basic principles of database systems as seen by users, application programmers and database administrators. A laboratory assignment develops these topics as a running example throughout the course. These include programming in SQL, as seen by a user querying or modifying an existing database, by a database designer, and by an application programmer invoking SQL from a host language. The course contents include:

  • Database querying and manipulation through SQL
  • Entity-Relationship modelling
  • Functional dependencies and normal forms
  • Interfacing to a database from a host language (Java/JDBC)
  • Alternative data models such as XML, JSON
  • Relational algebra



The current schedule is available at TimeEdit and on the course calendar.

Overview of Topics and Reading Material per Week (subject to change as we move along)

Week Topics Book/Notes Sections
1 Introduction

Book: ch 1; Notes: ch 1
Book: ch 2, 6.1-6.5, 7.1-7.4, 8.1-8.2 and 8.5;
Notes: ch 2, 7.4.1-7.4.3 and 4.9

Entity-Relationship modelling (ER)
Book: ch 2, 6.1-6.5, 7.1-7.4, 8.1-8.2 and 8.5;
Notes: ch 2, 7.4.1-7.4.3 and 4.9
Book: ch 4.1-4.6; Notes: ch 3
3 Functional dependencies (FD), Multivalued dependencies (MVD), and normal forms (NF) Book: ch 3; Notes: ch 4.1-4.3 and 5
4 Functions and triggers
Software applications
Book: ch 7.5; Notes: ch 7.4.4-7.46
Book: ch 9; Notes ch 8
5 Alternative data models
Book: ch 11-12; Notes ch 9
Book: --, Notes: ch 9.1-9.3
6 Transactions, authorisation, indexes

Relational algebra.
Book: ch 6.6, 10.1, 8.3-8.4; Notes ch 7.1-7.3, 7.5, 6.6
2.4-2.5, 5 and 16.2-16.3; Notes: ch 6.1-6.5
7 Invited lecturer. Quiz with recap
Exercises from old exam

8 No lectures, reserved for demonstrations



Most weeks, on Mondays and Thursday 10-11:45, but first week also on Wednesday at 10-11:45. If everything goes as planned, there will be no lecture on the last week of the course.


Exercise will take place on Tuesdays 15:15-17 on (course) weeks 2-7.
So, no exercise class the first nor the last week of the course.

Lab times

There will be on campus (rooms IDE-D2505, EG-2514, EG-2515, EG-2516, all in Idéläran) dedicated lab slots during course weeks 1-7 and Monday week 8, where you can ask for help with your programming assignment.

Make sure to use the first lab slot on Friday 19th January to get help with the installation of Postgres in your own computer (see section on Tools and Tips under Modules for help with this). You can of course use this slot to start working with SQL!

Lab slots in the last week of the course will be reserved for demonstration of the programming assignment (see the text regarding Examination Form further below and also the text on Obligatory Programming Assignment for more information about the demonstration of your solution to the assignment). This said, we will also offer some help on Monday during the last week, but resources will be limited.

Demos will be taken place online and you must have a camera on and your id card available for us to check.
You might be able to demonstrate your programming assignment before the last week if it is ready and if we have time to take care of your demo (previous to the last week we need to prioritise helping students to becomes ready with their assignment). Camera on and id card still applies for earlier demonstrations (id applies even if you arrange the demo to take place on campus).


Course Literature and Other Material

  • Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer Widom, Database Systems: The Complete Book, 2/E, Pearson Education, 2013.
    Book page at editor. Paper copies and eBook available in the Chalmers Library.
    The book is not obligatory but recommended. Good to have if you in particular plan to read the course on Advanced Databases.
  • Jyrki Nummenmaa and Aarne Ranta, Databases in 137 pages, (manuscript in pdf).
    Lecture notes/a book under construction.
  • Lecture slides will be published continuously in the section Lectures under Modules.
  • Exercises will be published in the section Exercises under Modules where solutions will be made available some time after the corresponding exercise class.


Course Design

The language of instruction is English.

The course is organised as followed:

  • Usually two lectures per week;
  • Usually one exercise class per week;
  • Obligatory programming assignments usually carried out in pairs;
  • Supervised work in programming class ("lab session"), a few slots per week;
  • Obligatory individual written exam.


Changes Made since the Last Occasion

The content of the course is basically the same as last year. There might be though some minor changes in the exercises and the lectures when we review the material before presenting it this time around.

Observe that both this and the LP2 HT23 edition of the course are two instances of the same course so they need to be in sync. The also share exams and re-exams.


Learning Objectives and Syllabus

After completing the course the student is expected to be able to:

Knowledge and understanding:

  • explain the semantic meaning of queries using relational algebra,

Competence and skills:

  • construct an Entity-Relationship diagram for a given domain,
  • translate an Entity-Relationship diagram into a relational database schema,
  • apply design theory concepts for relational databases such as functional dependencies and normalization,
  • retrieve and modify data using a database language for respective task,
  • design a database interface using constraints, views, and triggers,
  • implement a relational database schema and related interface using a data definition language,
  • use a semi-structured data model,
  • communicate with a database, through a database interface, from a software application.

Judgement and approach:

  • evaluate and create different models for a database domain using Entity-Relationship diagrams and relational schemas,
  • contrast the relational and the semi-structured data models.

Link to the syllabus on


Examination Form

The course is examined by an obligatory programming assignment normally carried out in groups of two, and an obligatory individual written exam done in an examination hall at the end of the course.
You need to pass both parts in order to pass the course.
The final grade of the course is based on the grade of the final exam.

As always in life, you should not cheat in any part of the examination!
Any suspicious on cheating will be taken seriously and must be reported to the Disciplinary Committee for further investigation.


Obligatory Programming Assignment

The programming assignment consists of four parts that each needs to be submitted and passed before their final deadlines. Submissions will be done through the Fire system.

Part 0 simply means creating your own account and group in Fire. You will need to anyhow make an (empty) submission.

Parts 1 to 3 have also a first deadline. This means that you need to submit a solution to these parts before this deadline in order to be able to continue. This solution doesn't need to be perfect but you should try to make it as good as possible already by the first deadline. Few days after the first deadline (our aim is at most 3 working days) you will receive a correction with some comments from the TA. You need to make sure to correct all the points made by the TA and resubmit again before the final deadline. If time and resources allows it, you might even be able to resubmit more than once before the final deadline but there is no guarantee we will have the resources, so make use of lab supervision to prepare your submissions in the best possible way!

By the end of the course, your group needs to demonstrate the complete solution to the assignment and each of the members of the group needs to individually answer some questions about different parts of your solution to the lab. Make sure to revise the different parts of your solution before your demo so you can properly answer our questions!

Demos will be taken place online and you must have a camera on and your id card available for us to check.
Demos are done during the last week of the course. There are only limited slots for demos per day, so do not unnecessarily postpone your demo since you might run out of time!  On the other hand, you can only demo at most once a day, so make sure your complete lab is working properly before you book a demo. Please take into account that the very last demo session is primarily reserved for re-submissions.

All parts of the assignment, the demonstration and the question session need to be passed before the end of reading week 8 in order to pass the assignment part of the course. You will be given the opportunity to resubmit your solutions/redo the question session if something went wrong but observe that there are limited resources and time slots, so we can only guarantee one re-submission per group/person (meaning further re-submissions are possible only if resources and time allow it).  So make sure to test your solutions thoroughly before you attempt to demo it and revise the different parts of your solution so you can properly answer our questions!

More information about the demos can be found at Demonstration and final submission under Assignments

NOTE: There are few reasons why not to have predetermined slots that can be booked in advance for the demos. One reason is that you might pre-book a time but then the solution is not really ready by that time, so we prefer you to try to demo your solution when you are sure everything works fine. Another reason is that demos can last everything from 5 minutes (when we discover something is not working) to more than 30 (if you are having trouble answering the questions). So a static table with slots is not really optimal even if a priori it might look so to you.

Deadlines for the Different Parts of the Programming Assignment

First Deadline Last Deadline
Part 0: Group registration in Fire Jan 21st
Part 1: Tables and views Feb 4th Feb 14th
Part 2: ER and FD Feb 11th Feb 25th
Part 3: Triggers Feb 21st Mar 3th
Part 4: Software application Demo Mar 4-7th Extra demo Mar 8th/
Files 10th Mar


Individual Written Exam

The exams has a maximum of 60 points and the passing grades in the exam are as follows:



U: 0-26
3: 27-37
4: 38-48
5: 49-60
U: 0-26
G: 27-44
VG: 45-60


Allowed aids on exam: You are allowed to bring one hand written double sided A4 of notes to the exam that you must hand in along with your solutions (you can get it back later if you want). 

Note: It is the student responsibility to inform me (the teacher) that they have been granted extra time and sit in different room, otherwise I will not know about it and I won't be visiting those rooms.
See section 1.14.1 of the Regulations for planning courses and holding examinations at pre-university, first cycle and second cycle level.

Old exams and suggested solutions can be found in the section Old Exams under Modules.

Exam dates for 2023/2024: 15 March 2024 am, 29 August 2024 pm, January 2025.


Course Evaluation

Student Representatives


  • Annelie Hansson <annelieh @>
  • Hanna Carling <hannacar @>
  • Kevin Collins <kevinco @>
  • Phichamon Sakdarat  <sakdarat @>


  • Albin Larsson <guslaralr @>
  • Laura Schelling <gusschella @>


First meeting: Friday 2/2 at 16:00, protocol1.pdf

Second meeting: Friday 1/3 at 16:00, protocol2.pdf

Final meeting: Friday 3/5 at 13:00.

Course summary:

Date Details Due