Course syllabus


TDA357 / DIT621 Databases

LP3 VT23 (7.5 hp)

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

OBS: This page is under construction so some references/links might not yet be available.


Contact Details

  • Examiner and lecturer: Ana Bove <bove @>
  • Guest lecturers: Matthías Páll (on JSON), Jonas Duregård (on Software applications)
  • Teaching assistant:
    • Agustin Mista
    • Emma Litvin
    • Kinga Jenei 
    • Konstantin Hanlon
    • Lorenzo Perticone
    • Love Lindqvist
    • Samuel Karlsson

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 or Fire, 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 on Slack to join!):
    • #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!
    • #ed3507 and #ed3582: To queue in either of the lab rooms in order to get help with the programming assignment during scheduled lab sessions;
      OBS: You cannot start queuing before the lab sessions start!!
    • #demo: For the online demonstration during the last weeks.
      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, normal forms, and relational algebra
  • Interfacing to a database from a host language (Java/JDBC)
  • Altenative data models: XML, JSON, NoSQL



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.8; 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, invited lecturer
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 Relational algebra, Quiz with recap
Exercises from old exam
Book: 2.4-2.5, 5 and 16.2-16.3; Notes: ch 6.1-6.5
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 Mondays 15:15-17 on (course) weeks 2-7.
So, no exercise classes the first nor the last week of the course.

Lab times

There will be on campus (rooms E-D3507 and E-D3582) dedicated lab slots during courses week 1-7 where you can ask for help with your programming assignment.
Be aware that Thursday's lab sessions have slightly less TA capacity than Wednesdays or Fridays sessions (3 TAs instead of 4).

Make sure to use the first lab slot on Friday 20th 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).
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.


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 HT22 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,
  • describe the effects of transactions and indexes in a relational database.

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, triggers and privileges,
  • implement a relational database schema and related interface using a data definition language,
  • 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 EntityRelationship diagrams and relational schemas,
  • contrast different data models, such as 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 you need to submit and pass before their final deadlines.

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. 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 book a time but then not really be ready by that time, so we prefer you to try to demo your solution when you are sure everything works fine. Another reason is demos can last anything 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 apriori it might look so to you.

Deadlines for the Different Parts of the Programming Assignment

First Deadline Last Deadline
Part 0: Registration in Fire Jan 22nd
Part 1: Tables and views Feb 5th Feb 15th
Part 2: ER and FD Feb 12th Feb 26th
Part 3: Triggers Feb 26th Mar 10th
Part 4: Software application Demo Mar 6-9th Extra demo Mar 10th


Individual Written Exam

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

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 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.8.1 of the Regulations for planning and conducting first cycle and second cycle courses and examinations.

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

Exam dates for 2022/2023: 17 March 2023 am, 24 August 2023 pm, January 2024.


Course Evaluation

Student Representatives


  • Johanna Edh <johanna.edh1 @>
  • Gustav Gille <gustavgi @>
  • Adina Hellström <adinahellstrom @>
  • Johannes Johansson <johanssonjohannes19 @>
  • Jan Pawel Kula <jan.kula @>
  • Arpita Naik <arpitan @>


  • Moa Ahlberg <ahlberg.moa @>
  • Natalia Alvarado <contact @>
  • Sara Nilsson <sara-s-n @>
  • Tim Zetterquist <guszetti @>


First meeting: 3rd of February, 16:15, protocol.

Second meeting: 24th of February, 16:15, protocol.

Final meeting: 5th of May, 13:00.

Course summary:

Date Details Due