Here is this semester's tentative schedule; I will update it as the semester progresses.
Please note that lecture notes are provided as a supplement, and are NOT a substitute for attending lecture. In particular, these are not guaranteed, so expect technical difficulties to prevent them from being posted at least a few times in the semester; they also will not contain exercises whose solutions are worked out on the board in class. Please plan accordingly to either take notes or get them from a friend if necessary.
Date Topic Reading Lecture Notes Extra links (if any) Monday August 24 Introduction and overview Lecture Notes Wednesday August 26 Logic and sets Friday August 28 Proofs Monday August 31 Asymptotics Wednesday September 2 Algorithms and pseudocode Friday September 4 Proofs of correctness Wednesday September 9 Induction Friday September 11 Recursion Monday September 14 Recurrences Wednesday September 16 Recurrences (cont) Friday September 18 Sorting Monday September 21 Arrays and lists Wednesday September 23 Amortized analysis Friday September 25 Stacks and queues Monday September 28 Hashing Wednesday Septmeber 30 Hashing (cont) Friday October 2 Trees Monday October 5 Tree traversals, BSTs Wednesday October 7 Balanced BSTs Friday October 9 Graph theory Monday October 12 Graph representations Review for exam Friday October 16 Midterm Monday October 26 Graph traversals: DFS and BFS Wednesday October 28 DAGs Friday October 30 Topological sort Monday November 2 Greedy Algorithms Wednesday November 4 Greedy algorithms Friday November 6 Greedy Algorithms Monday November 9 Greedy Approximation Wednesday November 11 Dynamic Programming Friday November 13 Dynamic Programming Monday November 16 Dynamic Programming Wednesday November 18 Dynamic Programming Friday November 20 Computability and undecidability Monday November 23 Complexity theory Monday November 30 Complexity Wednesday December 2 Complexity Friday December 4 Complexity Monday December 7 Wednesday December 9 Review