Data Structures I

I am teaching English version of the course Data Structures I [NTIN066] in the summer semester of 2018/2019.

Lectures are held every Thursday from 9:00 in room S4. Sign up for recitations in SIS. The course is accompanied by optional practicals on Analysis of data structures.

Please read the complete rules of the game.

date topics sources
21. 2. Introduction: what is a data structure – interface vs. implementation, static vs. dynamic, model of computation. Examples of interfaces: queue, set, ordered set, dictionary. Flexible arrays (with both stretching and shrinking). [L01]
28. 2. Different approaches to amortized analysis: aggregation, accounting, coins, potentials. Examples: flexible arrays, binary counters, lazily balanced BB[α] trees. Splay trees: description of the Splay operation, incorporating splaying to Find, Insert, and Delete. [L01] [L02] [ST]
7. 3. Splay trees: amortized analysis. Remarks on static and dynamic optimality, sequential traversal, and working set bound. [L02] [ST]
14. 3. (a,b)-trees: definition, logarithmic height, Find, Insert, Delete, choice of parameters. Amortized bounds for (a,2a-1) and (a,2a)-trees. Top-down splitting and joining, parallel (a,b)-trees. At the practicals: Equivalence between (2,4)-trees and left-leaning red-black trees. [L03]
21. 3. Heaps: binary and d-regular heaps, strict and lazy binomial heaps, Fibonacci heaps. Use in Dijkstra's algorithm.
28. 3. There will be no lecture.
4. 4. Plan: External memory model, cache-aware and cache-oblivious algorithms.


Description of assignments can be found in ReCodEx. You need to create an account there and sign up to a group for the recitations you chose.

Additional material (especially source code) is available as a Git repository. You can also browse it on the web.

Please submit your solutions to ReCodEx.

Lecture notes

chapter version
01. Preliminaries 2019-03-16
02. Splay trees 2019-03-11
03. (a,b)-trees 2019-03-17

The notes are work in progress. If you find any mistakes or hard-to-understand parts, please let me know.


This page is maintained by Martin Mareš