Algorithms and Data Structures is a first course on fundamental data structures and algorithms. It covers theoretical analysis based on implementations in Python.
Introduction; concept of asymptotic analysis, big-Oh notation (GTG 3.3.1 and 3.3.2); typical growth functions (GTG 3.2)
Basic examples: finding the maximum, prefix averages, three-way disjointness, element uniqueness (GTG 3.3.3); arithmetic progression (GTG, Proposition 3.3); experimental analysis
Fundamental techniques of proof (GTG 3.4); introduction to recursion (GTG 4.1.1)
Discusson of Exercise Sheet 1; more recursion (GTG 4.1), remark on interpolation search
Discusson of Exercise Sheet 2; good and bad recursion (selected parts of GTG 4.3 and 4.4)
Discusson of Exercise Sheet 3; Low-level arrays, referential arrays, dynamic arrays; amortization (selected parts of GTG Chapter 5)
Stacks and queues (GTG 6.1 and 6.2)
Discusson of Exercise Sheet 4; Linked lists (selected parts of GTG Chapter 7)
Discusson of Exercise Sheet 5; Trees (begin, GTG 8.1)
Trees (ctd.): computing depth and height (GTG 8.1.3), binary trees (GTG 8.2), tree traversals (GTG 8.4.1-3)
Discusson of Exercise Sheet 6; linked-list structure for implementing binary trees (GTG 8.3.1)
Final tree topics: Binary search trees, array-based implementation of a tree (parts of GTG 8.4.3, GTG 8.3.2); priority queues, heaps, heap sort (GTG Chapter 9, without implementation details)
Discusson of Exercise Sheet 7; analysis of bottom-up heap construction (GTG 9.3.6); adaptable priority queues (GTG 9.5.2 without Python implementation)
Maps, hash tables and skip lists (selected topics from GTG Chapter 10)
Discusson of Exercise Sheet 8
Review of binary search trees, adding and deleting items from a binary search tree, AVL trees (GTG 11.1, 11.3)
Discusson of Exercise Sheet 9; splay trees (GTG 11.4, splay tree interactive visualization)
Sorting: strict total order, merge sort, quicksort, \(O(n \log n)\) lower bound on general sequences, bucket sort (GTG 12.1-4)
Discusson of Exercise Sheet 10, comparison of sorting algorithms
Introduction to graphs, data structures for graphs (GTG 14.1, 14.2)
Discusson of Exercise Sheet 11, graph traversals (GTG 14.3)
Mock Exam, in class
Shortest path, Dijkstra’s algorithm (GTG 15.6)
Discussion of the mock exam
Minimum spanning trees (GTG 14.7), topological sorting of directed acyclic graphs (GTG 14.5)
Final Exam, 10:00-11:30, NB-101