# 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)