Course syllabus


TDA357 / DIT621 Databases

LP3 VT21 (7.5 hp)

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



OBS: We follow Chalmers and GU directives related to Covid-19.

Please make sure to keep up with the latest development at your university (Chalmers, GU).


Contact Details

  • Examiner and lecturer: Ana Bove <bove @>
  • Guest lecturers: Matthías Páll
  • Teaching assistant:
    • Alejandro Gómez <alejandro.gomez @>
    • Agustín Mista
    • David Bejmer
    • Beata Burreau
    • Jakob Hendén
    • Lo Ranta


Communication Channels

  • Mail Ana <bove @> for general questions regarding the course or when a particular concept from the lectures or exercise classes needs to be clarified.
  • Mail Alejandro <alejandro.gomez @> if there are any administrative issue around assignments, for example if there is a very special reason for which you need to do the assignment alone or your lab partner is no longer following the course.
  • All other questions regarding the programming assignments should be asked to the TAs during the lab slots or the corresponding Slack channel (see below).
  • Questions about the lectures/exercises should be asked during the lecture/exercise or by mail to Ana.
  • Slack channels and their purpose:
    • #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!
    • #zoom-labs: To get help with the programming assignment during scheduled lab sessions;
    • #demo: For the demonstration during the last weeks.
  • OBS: You cannot communicate with your peers (outside your group) regarding the programming assignments. It is however fine to discuss exercises or other issues not connected to the assignments.


Course Purpose

The course 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. 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 course is thus a typical first course in database systems, and occupies a traditional place in the curriculum.



All teaching will take place online, even though they are assigned a room in the schedule in TimeEdit. This said, you can use the lab rooms booked during the lab slots in the course, but supervision will take place via Zoom as instructed under Assignments.


Overview of Topics and Reading Material per Week

Week Topics Book/Notes Sections
1 Introduction
Book: ch 1; Notes: ch 1
Book: ch 2 and 6; Notes: ch 2
Entity-Relationship modelling (ER)
Book: ch 2 and 6; Notes: ch 2
Book: ch 4; Notes: ch 3
3 Functional dependencies (FD), normal forms (NF)
Multivalued dependencies, Constraints

Book: ch 3; Notes: ch 5

Book: ch 7; Notes: ch 7

4 Functions and triggers Book: ch 7; Notes: ch 7
5 Software applications
Alternative data models
Book: ch 9; Notes: ch 8
Book; ch 11-12; Notes 9
Transactions, authorisation, indexes

Book: ch 6.6, 8.3, 10.1;
Notes: ch 6.7, 7.1, 7.4, 7.6

7 Relational algebra (RA)

Invited lecturer, recap
Book: 2, 5, 16;
Notes: ch 4 (a bit), 6

8 No lectures.



  • Wednesdays 10:00-11:45, online weeks 2-3 and 5-8.
  • Wednesday 8:00-9:45, online week 4.

Lab times

There will be dedicate lab slots, all of them online, where you can ask for help with your programming assignment. See Help during lab sessions under Assignments for information on how to proceed to get help.

Make sure to use the first lab slots on Friday 22nd, and eventually Monday 25th if needed, to get help with the installation of Postgres (see section on Tools and Tips under Modules for help with this).

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 "Programming Assignment" for more information about the demonstration of your solution to the assignment).
You can however demonstrate your programming assignment before that if it is ready.


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.
    No obligatory book but recommended.
  • Jyrki Nummenmaa and Aarne Ranta, Databases in 137 pages, (manuscript in pdf).
    Lecture notes/a book in 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 2 lectures per week (though sometimes 1 or 3);
  • Usually one exercise class per week (there might be two sessions per week but if so, they will cover the same material);
  • Obligatory programming assignment 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 will be though some minor changes in the exercises and the lectures since this instance of the course has a new teacher.

Observe that both this and the LP2 HT20 edition of the course are two instances of the same course so they need to be in sync.


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 before their deadlines.
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.
All four parts, 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 only if resources and time allows).  So make sure to test your solutions thoroughly.

Individual Written Exam

OBS: We follow Chalmers and GU directives regarding exams during Covid-19 times so what we write here might change due to these circumstances. In that case we will inform as soon as possible.

Information about examination at Chalmers during Covid-19 times.

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

U: 0-23
3: 24-35
4: 36-47
5: 48-60
U: 0-23
G: 24-41
VG: 42-60


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

Exam dates for 2020/2021: 19 March 2021 pm, 26 August 2021 pm, January 2022.


Course Evaluation

Student Representatives


  • Johan Gottlander <johgottl @>
  • Johannes Kvernes <kvernes @>
  • Yenan Wang <yenan @>
  • Jakob Wik <wikj @>


  • Martin Björklund <gusbjomabq @>
  • Hampus Jernkrok <gusjernkha @>
  • Irja Vuorela <gusvuoir @>
  • Michelle Schneider <gusschmib @>


First meeting: Friday 5th of February at 9:00. protocol1.pdf 

Second meeting: Friday 5th of March at 9:00. protocol2.txt 

Course summary:

Date Details Due