Course syllabus

Course-PM

TDA357 / DIT621 Databases

LP3 VT22 (7.5 hp)

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

News: The tentagranskning for the exam in March 18 will take place next week on Tuesday 12th of April at 15:30-16:30 in room Analysen in the 3rd floor of the EDIT building.
Analysen is found round the corner from café Linsen, across group room 3211.
In order for us to be able to manage things, we will allow a small group of students at a time, so wait outside the room and we will open the door with regular intervals.
You can always look at the exam yourself at the student office of the CSE building, so no need to wait until tentagranskning for that.
Suggeted solutions to the exam can be found here (or under Old Exams in Modules)

 

Latest News Related to Pandemic

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

  • (Feb 10th) Restrictions are not lifted but we will continue with the set-up we have in the course to facilitate those who are sick to stay at home and still be able to follow the course.
  • (Jan 14th) We will try to run lectures and exercises on a hybrid mode. We will evaluate this after the first week and maybe even on a weekly basis during the course.
    The campus teaching is on HC4. Make sure to keep distance when entering and leaving the room, and also while sited.
    The digital teaching is on this zoom link.
  • (Jan 7th) We have decided to have ALL lab sessions online.
    This said, we have anyhow booked rooms at campus during the lab sessions (some with computers, some just group rooms where you can sit and work) which you are welcome to use during the course. If you bring a headset, you can use the computers in the lab room for your zoom meeting with us.
    Demos during the last week will also be online and during that week, no rooms at campus are booked for your to use since it is better you are in a quiet place during the demo.

 

Contact Details

  • Examiner and lecturer: Ana Bove <bove @ chalmers.se>
  • Guest lecturers: Matthías Páll (on JSON), Jonas Duregård (on Software applications)
  • Teaching assistant:
    • Alejandro Gómez <alejandro.gomez @ chalmers.se>
    • Agustín Mista
    • Iulia Bastys
    • Alex Phu
    • Bharath Poojary
    • Kuvalaya Datta Jukanti
    • Yenan Wang

 

Communication Channels

  • Mail Ana <bove @ chalmers.se> 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.
  • Mail Alejandro <alejandro.gomez @ chalmers.se> 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.
  • All other questions regarding the programming assignments should be asked to the TAs during the lab slots.
  • Questions about the lectures/exercises should be asked during the lecture/exercise or by mail to Ana.
  • 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!
    • #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.

 

Schedule

The current schedule is available at TimeEdit. Keep yourself updated (on this page and on the course calendar) on whether part or all of the teaching will move to zoom.

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

Week Topics Book/Notes Sections
1 Introduction
SQL
Book: ch 1; Notes: ch 1
Book: ch 2 and 6; Notes: ch 2
2 SQL
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 4 and 5
Book: ch 3 and 7; Notes: ch 5 and 7
4 Functions and triggers
Software applications
Book: ch 7; Notes: ch 7.4
Book: ch 9; Notes ch 8
5 Alternative data models Book: ch 11-12; Notes ch 9
6 JSON
Transactions, authorisation, indexes

Notes: ch 9
Book: ch 6.6, 8.3, 10.1;
Notes ch 7.1-7.3, 7.5, 6.6
7 Relational algebra (RA)
Invited lecturer, quiz with recap
Book: 2, 5, 16; Notes: ch 6

8 No lectures, reserved for demonstrations

 

Lectures

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

Lectures will not be recorded. If recorded lecturers are really important to you you can search for the recorded lectures in the instance of the course in LP2 HT21 (same content, different lecturer).

Exercises

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 dedicate lab slots where you can ask for help with your programming assignment.
ALL lab sessions will be online. This said, we have anyhow booked rooms at campus during the lab sessions (some with computers, some just group rooms where you can sit and work) which you are welcome to use during the course. If you bring a headset, you can use the computers in the lab room for your zoom meeting with us.

Make sure to use the first lab slots on Thursday 20th and Friday 21st to get help with the installation of Postgres (see section on Tools and Tips under Modules for help with this). You can of course use these 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 can however 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.
    No obligatory book but recommended. Good to have if you plan to read the course on Advanced Databases.
  • 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 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 HT21 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 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. 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 reserved to resubmissions. More information about the demos can be found at Demonstration and final submission under Assignments.

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 are possible only if resources and time allows it).  So make sure to test your solutions thoroughly before you attempt to demo it!

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.

Deadlines for the Different Parts of the Programming Assignment

First Deadline Last Deadline
Part 0: Registration in Fire Jan 23rd
Part 1: Tables and views Feb 6th Feb 16th
Part 2: ER and FD Feb 13th Feb 27th
Part 3: Triggers Feb 27th Mar 11th
Part 4: Software application Demo Mar 7-10th Extra demo Mar 11th

 

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:

Chalmers
U: 0-26
3: 27-37
4: 38-48
5: 49-60
GU
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). 

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

Exam dates for 2021/2022: 18 March 2022 am, 25 August 2022 pm, January 2023.

 

Course Evaluation

Student Representatives

CTH

  • Carl Ridderstolpe <ricarl @ student.chalmers.se>
  • Daniel Rygaard <daniel.rygaard @ live.se>
  • Jacob Bengtsson <jacobben @ student.chalmers.se>
  • Mateo Nicolás Vega Quezada <mateoveg @ gmail.com>
  • Max Hvid-Hansen <Max.Hvid-Hansen @ hotmail.com>
  • Ronja Hedberg <ronjah @ student.chalmers.se>
  • Simon Engström <simon_0_0_ @ live.se>

GU

  • Edina Dedovic <edina.ded @ outlook.com>
  • Hjalmar Fridén <hjalmar.friden @ gmail.com>
  • Kinga Jenei <gusjeneki @ student.gu.se>
  • Viktor Kjellberg <viktor.kjellberg @ hotmail.se>

Meetings

First meeting: Thursday 3rd February 15:30, protocol

Second meeting: Thursday 3rd March 15:30, protocol

Course summary:

Date Details Due