Undergraduate Course: Advanced Database Systems (INFR11199)
|School||School of Informatics
||College||College of Science and Engineering
|Credit level (Normal year taken)||SCQF Level 11 (Year 4 Undergraduate)
||Availability||Available to all students
|Summary||This course replaces Advanced Databases (INFR11011).
Database management systems are at the core of computer applications that need to store, manipulate, and query data. This course takes a deep dive into how modern database systems function internally, from studying their high-level design to understanding the underlying data structures and algorithms used for efficient data processing. The course covers a range of data management techniques from both commercial systems and cutting-edge research literature, enabling students to apply these techniques to other fields of computer science.
The covered topics include database architecture, storage manager, data models (row, columnar), indexing (tree-based, hash tables), transaction processing (ACID, concurrency control), crash recovery, parallel architectures (multi-core, distributed), cloud databases, and ML in databases. These topics will be valuable to students who plan to work in the data science industry but also to students who want to do research in the area of data management. The programming component of this course will allow students to develop first-hand experience working with database systems that goes beyond writing SQL queries.
Lectures will cover roughly the following topics:
- Database systems architectures, row stores and column stores, OLTP vs. OLAP, in-memory database systems.
- Storage: secondary-storage devices.
- Indexing: tree-based and hash-based techniques, multi-dimensional indexing, learning indices from data.
- Write-optimised data structures: LSM trees, LSM hash tables, B^eps trees.
- Query evaluation: sorting and join processing, selection, projection, aggregation, query compilation.
- Query optimisation: cardinality estimation, cost-based query optimisation, dynamic programming, rule-based optimisation, learning query plans.
- Transaction management: ACID properties, concurrency control, locking and multi-version protocols, crash recovery.
- Distributed database systems: parallel query evaluation, distributed transaction processing.
- Data warehousing and decision support: OLAP, materialised views, incremental view maintenance.
- Stream processing systems, data streaming algorithms.
- Scientific (array) databases, cloud databases, database systems for machine learning.
In practical lab sessions, students will implement various components of a prototypical database system. The labs will require programming in C++ and will have increasing difficulty to allow students to familiarise with the language and environment.
Entry Requirements (not applicable to Visiting Students)
|| It is RECOMMENDED that students have passed
Database Systems (INFR10070) OR
Introduction to Databases (INFR10080)
|Prohibited Combinations|| Students MUST NOT also be taking
Advanced Databases (Level 11) (INFR11011)
||Other requirements|| This course is open to all Informatics students including those on joint degrees. For external students where this
course is not listed in your DPT, please seek special permission from the course organiser.
The course assumes an understanding of algorithms and data structures (e.g., quick sort, merge sort, binary trees,
hash tables, big-O notation). It is recommended that students have basic knowledge of databases (e.g., SQL and relational algebra) although key concepts will be covered in the course.
A good level of programming is assumed and will not be covered during lectures. The coursework will involve
implementing different parts of a database system in C++.
Information for Visiting Students
|Pre-requisites||Same as other requirements
|High Demand Course?
Course Delivery Information
|Academic year 2020/21, Available to all students (SV1)
|Learning and Teaching activities (Further Info)
Lecture Hours 28,
Supervised Practical/Workshop/Studio Hours 6,
Feedback/Feedforward Hours 2,
Revision Session Hours 2,
Programme Level Learning and Teaching Hours 4,
Directed Learning and Independent Learning Hours
|Assessment (Further Info)
|Additional Information (Assessment)
||Weighting: 50% exam, 40% coursework, 10% course engagement.
The coursework will consist of at least one programming assignment.
||Students will receive feedback from demonstrators during practical sessions and from the instructor on at least one piece of formative assessment similar to the final exam.
||Hours & Minutes
|Main Exam Diet S2 (April/May)||2:00|
On completion of this course, the student will be able to:
- Describe how database management systems function internally. Interpret and comparatively criticise database systems architectures.
- Implement major components of a database management system and analyse their performance.
- Analyse and compare the fundamental query evaluation and concurrency control algorithms. Identify strengths and weaknesses of query evaluation plans. Optimise query evaluation plans.
- Identify trade-offs among database systems techniques and contrast distributed/parallel techniques for OLTP and OLAP workloads.
|Raghu Ramakrishnan and Johannes Gehrke, Database Management Systems (Third Edition) - McGraw-Hill 2003.|
Research papers on the topics of the syllabus.
|Graduate Attributes and Skills
|Keywords||Database system architecture,Query optimization,Indexing,Transactions,Parallel databases
|Course organiser||Dr Milos Nikolic
Tel: (0131 6)51 7112
|Course secretary||Miss Clara Fraser
Tel: (0131 6)51 4164