Classes
The lectures are broken into 13 units, as shown below. The notes will be updated after every class. These pages are also reachable from the main calendar.
- Unit 1: Intro and OOP (Classes 1–2)
- Unit 2: Big O (Classes 3–6)
Introduction, Analysis, Using Big-O - Unit 3: Recursion (Classes 7–9)
Understanding recursive functions, Recursive Big-O analysis - Unit 4: ADTs and LSQs (Classes 10–12)
Data Types, Lists, Stacks, Queues - Unit 5: Trees (Classes 13–15)
Traversal, Binary Search Trees - Unit 6: Sets and Maps (Classes 16–21)
Set ADT, Map ADT, AVL Trees, B+ Trees - Unit 7: Hash tables (Classes 22–24)
Hash functions, Separate chaining, Open addressing, Ordered Maps - Unit 8: Priority Queues (Classes 25–26)
Priority Queue ADT, Heaps - Unit 9: Graphs (Classes 27–31)
Adjacency list, Adjacency matrix, BFS, DFS - Unit 10: Graph search (Classes 32–33)
Dijkstra's algorithm - Unit 11: Sorting (Classes 34–36)
HeapSort, MergeSort, Lower Bound - Unit 12: Secure Communication (Classes 37–39)
Number-Theoretic Groups, Modular exponentiation, Diffie-Hellman Key exchange, RSA Encryption - Unit 13: P vs NP (Classes 40–40)