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