
| Date: | Topic: | Readings: | Lecture notes and handouts: |
| Wed, Jan 14 | Introduction to the course | Lecture 1 | |
| Thu, Jan 15 | Pseudocode Intro algorithm anlysis |
Lecture 2 | |
| Mon, Jan 19 | NO CLASS | ||
| Tue, Jan 20 (Brandeis Monday) |
Algorithm analysis | Chapter 4, sec. 4.1 and 4.2 | Lecture 3 |
| Wed, Jan 21 | Algorithm analysis | Chapter 4, sec. 4.1 and 4.2 | Lecture 4 |
| Thu, Jan 22 | Algorithm analysis | Chapter 4, sec. 4.1 and 4.2 | Lecture 5 |
| Mon, Jan 26 | Algorithm analysis. Intro to Stacks. | Chapter 5, sec. 5.1 | Lecture 6 |
| Wed, Jan 28 | Stacks | Chapter 5, sec. 5.1 | Lecture 7 |
| Thu, Jan 29 | Queues | Chapter 5, sec. 5.2 | Lecture 8 |
| Mon, Feb 2 | Singly linked lists | Chapter 3, sec 3.2 | Lecture 9 |
| Wed, Feb 4 | Doubly linked lists | Chapter 3, sec 3.3 Chapter 6, sec 6.2 |
Lecture 10 |
| Thu, Feb 5 | End of the beetle game for CS22 | Lecture 11 | |
| Mon, Feb 9 | Induction and Recursion | Chapter 3, sec 3.5 | Lecture 12 |
| Wed, Feb 11 | Induction and Recursion | Chapter 3, sec 3.5 | Lecture 13 |
| Thu, Feb 12 | Trees | Chapter 7, sec. 7.1 | Lecture 14 |
| Feb 16 - Feb 19 | Break | ||
| Mon, Feb 23 | Trees: definitions and properties LMCHILD-RSIB representation Tree traversal algorithms |
Chapter 7, sec. 7.1, sec. 7.2 | Lecture 14 and 15 |
| Wed, Feb 25 | Trees, Binary Trees | Lecture 16 | |
| Thu, Feb 26 | Binary Trees | Chapter 7, sec. 7.3 | Lecture 16 and 17 |
| Mon, Mar 2 | Snow day | ||
| Wed, Mar 4 | Binary Search Trees | Chapter 10, sec. 10.1 | Lecture 18 |
| Thu, Mar 5 | EXAM 1 | ||
| Mon, Mar 9 | Balancing BST: rotation operation | Lecture 19 | |
| Wed, Mar 11 | Heaps | Chapter 8, sec. 8.3 | Lecture 20 |
| Thu, Mar 12 | Heaps | Chapter 8, sec. 8.3 | Lecture 20 and 21 |
| Mon, Mar 16 | Hash tables and hash functions | Chapter 9, sec. 9.1, 9.2 | Lecture 22 |
| Wed, Mar 18 | Hash tables and hash functions | Chapter 9, sec. 9.1, 9.2 | Lecture 23 |
| Thu, Mar 19 | Review | Lecture 24 | |
| Mon, Mar 23 | Priority Queues | Chapter 8, sec. 8.1, 8.2 | Lecture 24 and 25 |
| Wed, Mar 25 | Sorting algorithms: Bubblesort, Insertionsort, Selectionsort | Lecture 26 | |
| Thu, Mar 26 | Sorting algorithms: Shell sort Algorithm design technique: Divide-and-Conquer |
Chapter 11, sec. 11.1.1 | Lecture 27 |
| Mon, Mar 30 | Sorting algorithms: Mergesort | Chapter 11, sec. 11.1, 11.2 | Lecture 28 |
| Wed, Apr 1 | Sorting algorithms: Quicksort | Lecture 29 | |
| Thu, Apr 2 | Sorting algorithms: Quicksort | Lecture 29 and 30 | |
| Mon, Apr 6 | EXAM 2 | ||
| Wed, Apr 8 | Heapsort and intro to graphs | Lecture 30 | |
| Apr 9 - Apr 16 | Break | ||
| Mon, Apr 20 | Graphs | Lecture 31 | |
| Wed, Apr 22 (Brandeis Thursday) |
BFS Single-source shortest paths: Dijkstra's algorithm |
Lecture 32 | |
| Thu, Apr 23 | DFS, Topologiacal sort | Lecture 33 | |
| Mon, Apr 27 | Minimum spanning tree. Prim's algorithm. | Lecture 34 | |
| Wed, Apr 29 | EXAM 3 |