| Date | Reading | Topic | Lab | Reading Exercises Due |
| 1/13 | Notes | Introduction Going over the Syllabus Python Review | - | - |
| 1/14 | - | - | Set up Project 1 | - |
| 1/15 | Notes | Python Review | - | - |
| 1/16 | - | - | Set Up Project 1 | - |
| 1/17 | Notes | Review of Object Oriented Programming in Python | - | 2.1 - 2.4 |
| 1/20 | Notes | Review of Object Oriented Programming in Python Testing and Debugging Project 1 due before the start of lecture | - | - |
| 1/21 | - | - | Project 2 | - |
| 1/22 | 2.1, 2.16 | Basic Data Structures | - | - |
| 1/23 | - | - | Project 2 | - |
| 1/24 | 2.2 - 2.6 | Link Lists | - | 2.6 - 2.9 |
| 1/27 | 2.7 - 2.10 | Double Link Lists | - | - |
| 1/28 | - | - | Project 2 | - |
| 1/29 | Notes | Skip Lists | - | - |
| 1/30 | - | - | Project 2 | - |
| 1/31 | 3.1 - 3.3 | Basic data structures: stacks | - | 3.1, 3.3 |
| 2/3 | 3.1 - 3.3 | Basic data structures: stacks Project 2 due before the start of lecture | - | - |
| 2/4 | - | - | Project 3 | - |
| 2/5 | 3.4 - 3.6 | Basic data structures: Queues | - | - |
| 2/6 | - | - | Project 3 | - |
| 2/7 | 3.4 - 3.6 | Basic data structures: Queues | - | 3.4, 3.6 |
| 2/10 | Notes | Variations of stacks and queues | - | - |
| 2/11 | - | - | Project 3 | - |
| 2/12 | 4.1 - 4.3 | Recursion | - | - |
| 2/13 | - | - | Project 3 | - |
| 2/14 | - | Test # 1 Preparation Lecture | - | 4.8, 4.9 |
| 2/17 | - | Test # 1 Project 3 due before the start of lecture | - | - |
| 2/18 | - | - | Project 4 | - |
| 2/19 | 4.1 - 4.3 | Recursion | - | - |
| 2/20 | - | - | Project 4 | - |
| 2/21 | Notes | Backtracking | - | 5.2, 5.4 |
| 2/24 | Notes | Backtracking | - | - |
| 2/25 | - | - | Project 4 | - |
| 2/26 | 5.1 - 5.3 | Selection sort Running time analysis | - | - |
| 2/27 | - | - | Project 4 | - |
| 2/28 | 5.4 - 5.5 | Insertion sort Running time analysis | - | 5.8, 5.10 |
| 3/3 | - | No class (Spring Break) | - | - |
| 3/4 | - | - | No lab (Spring Break) | - |
| 3/5 | - | No class (Spring Break) | - | - |
| 3/6 | - | - | No lab (Spring Break) | - |
| 3/7 | - | No class (Spring Break) | - | - |
| 3/10 | 5.10 - 5.11 | Merge sort Project 4 due before the start of lecture | - | - |
| 3/11 | - | - | Project 5 | - |
| 3/12 | 5.10 - 5.11 5.8 - 5.9 | Merge sort Quick sort | - | - |
| 3/13 | - | - | Project 5 | - |
| 3/14 | 5.8 - 5.9 | Quicksort | - | 15.1, 15.3 |
| 3/17 | 4.6, 4.7 | Runtime analysis | - | - |
| 3/18 | - | - | Project 5 | - |
| 3/19 | - | No class (Advising Day) | - | - |
| 3/20 | - | - | Project 5 | - |
| 3/21 | 15.1 - 15.3 | Dynamic programing vs Memoization | - | 15.6, 15.7 |
| 3/24 | 15.1 - 15.3 | Dynamic programing vs Memoization Project 5 due before the start of lecture | - | - |
| 3/25 | - | - | Project 6 | - |
| 3/26 | 15.4, 15.5 | Dynamic programing vs Memoization | - | - |
| 3/27 | - | - | Project 6 | - |
| 3/28 | - | Test # 2 preparation lecture | - | 18.1 - 18.3 |
| 3/31 | - | Test # 2 | - | - |
| 4/1 | - | - | Project 6 | - |
| 4/2 | 15.6 | LCS | - | - |
| 4/3 | - | - | Project 6 | - |
| 4/4 | 15.6 | LCS | - | 19.1 - 19.3 |
| 4/7 | 15.6 | LCS | - | - |
| 4/8 | - | - | Project 6 | - |
| 4/9 | 18.1 - 18.3 | Object Oriented Programming in Python | - | - |
| 4/10 | - | - | Project 6 | - |
| 4/11 | 18.1 - 18.3 | Object Oriented Programming in Python | - | 19.5, 19.10, 19.11 |
| 4/14 | note | Object Oriented Programming in Java Project 6 due before the start of lecture | - | - |
| 4/15 | - | - | Project 7 | - |
| 4/16 | note | Object Oriented Programming in Java | - | - |
| 4/17 | - | - | Project 7 | - |
| 4/21 | note | Object Oriented Programming in Java | - | TBD |
| 4/22 | note | Object Oriented Programming in Java | - | - |
| 4/23 | - | - | Project 7 | - |
| 4/24 | - | Final exam preparation lecture | - | - |
| 4/25 | - | - | Project 7 | - |
| 4/26 | - | Final exam preparation lecture | - | - |
| 4/28 | - | Written test # 3 | - | - |
| 4/29 | - | - | Porgramming test # 3 Project 7 is due by midnight (no late projects will be accepted!!!!) | - |