Date  Topic and/or Event  Readings 
January 17  Lecture 1: Introduction and Overview; Lab 0: Data Structures Refresher  Topic Notes: Introduction and Overview; Topic Notes: Fundamental Data Structures; Levitin Ch. 1 
January 19  Lecture 2: Bubble Sort; Counting Operations; GCD; Summations Practice  Levitin Ch. 2.3; Topic Notes: Counting Operations 
January 22  Lecture 3: Graph Data Structures  Topic Notes: Fundamental Data Structures: Graphs; Bailey Ch. 16.116.3 
January 24  Lecture 4: Lab Meeting #1; Lab 1: Counting Operations, Graphs (paper handout only)  Knuth article: NYT Site or Library Archive also in Canvas 
January 26  Lecture 5: Asymptotic Analysis; Analysis Practice  Topic Notes: Analysis Fundamentals; Levitin Ch. 2.12.2 
January 29  Lecture 6: Asymptotic Analysis  
January 31  Lecture 7: Lab Meeting #2; Lab 2: METAL Data and Analysis Practice (paper handout and shared document)  
February 2  Lecture 8: BruteForce Algorithms; Brute Force Practice  Topic Notes: BruteForce Algorithms; Levitin Ch. 3 
February 5  Lecture 9: Brute Force/Exhaustive Search; Exhaustive Search Practice  
February 7  Lecture 10: Lab Meeting #3; Lab 3: BruteForce Closest Pair (paper handout and shared document)  
February 9  Lecture 11: BruteForce Convex Hull  
February 12  Lecture 12: Decrease and Conquer Algorithms; Recurrences; Decrease and Conquer Practice  Topic Notes: Decrease and Conquer Algorithms; Levitin Ch. 2.4, 4 
February 14  Lecture 13: Lab Meeting #4; Lab 4: Brute Force and Decrease and Conquer (paper handout only)  
February 16  Lecture 14: Solving Recurrences  
February 19  Lecture 15: Decrease and Conquer Wrapup; Review  
February 21  Exam 1 During Lab Meeting Times (alternate time: 2 hours between Noon and 3 on Tuesday 2/20)  
February 23  No Class: February Break  
February 26  Lecture 16: Decrease and Conquer Wrapup; Divide and Conquer Introduction  Topic Notes: Divide and Conquer Algorithms; Levitin Ch. 5 
February 28  Lecture 17: Exam 1 Recap; Graph Traversals Intro; Lab Meeting #5; Lab 5: Graph Traversals (shared document only)  
March 1  Lecture 18: Divide and Conquer Closest Pair  
March 4  Lecture 19: More Divide and Conquer; Academic Showcase Project: [HTML] [PDF] Introduction  
March 6  Lecture 20: Quicksort Wrapup; Lab Meeting #6; Lab 6: Recurrences and Divide and Conquer  
March 8  Lecture 21: Lab 6 Wrapup; AVL Trees  Topic Notes: AVL Trees 
March 11  Lecture 22: AVL Trees; 23 Trees  Topic Notes: 23 Trees; Levitin Ch. 6.3 
March 13  Lecture 23: Lab Meeting #7; Lab 7: Search Trees  
March 15  Lecture 24: Dynamic Programming  Levitin Ch. 8; Topic Notes: Dynamic Programming 
March 18  Lecture 25: Dynamic Programming  
March 20  Exam 2 During Lab Meeting Times  
March 22  Lecture 26: (Virtual Lecture) Hashing  Levitin Ch. 7.3; Topic Notes: Hashing 
March 25April 1  No Classes or Labs: Happy Easter!  
April 3  Lecture 27: Lab Meeting #8; Lab 8: Dynamic Programming  
April 5  Lecture 28: Greedy Algorithms  Topic Notes: Greedy Algorithms; Levitin Ch. 9 
April 8  No Class: Eclipse Day! Get in the Shadow! Work on your Problem Sets!  Levitin Ch. 6.46.5; Topic Notes: Heaps 
April 10  Lecture 29: Lab Meeting #9; Lab 9: Prim's Algorithm, Dijkstra's Algorithm, Traversals  
April 12  Lecture 30: Greedy Algorithms Wrapup  Topic Notes: Dijkstra's Algorithm Handout; 
April 15  Lecture 31: Backtracking  Levitin Ch. 12.1 
April 17  Lecture 32: Lab Meeting #10; Lab 10: Backtracking  
April 19  Lecture 33: Limitations of Algorithms  Levitin Ch. 11; Topic Notes: Limitations of Algorithms 
April 22  Lecture 34: Limitations of Algorithms  
April 24  Lecture 35: Lab Meeting #11  
April 26  Academic Showcase: 1:452:45, RB 340  this is a required part of the course  
April 29  Lecture 36: P and NP; Wrapup  
May 1  Final Exam, 46 PM, RB 340  
