Lecture (date) Summary Assignments and Handouts
L1 (2016/01/11) Introduction to the course - administrative and topical.
Insertion sort pesudocode

Slides used in class

Read all of Chapter 1 of the text
Do Qns 1.2-2 and 1.2-3 of the text
Read Chapter 2.1 of the text
Do Qn 2.1-3 of the text
L2 (2016/01/13) Loop invariants
The RAM model and running-time analysis
Divide and conquer; setting up recurrences
Merge sort and integer multiplication

Slides used in class

Read Chapter 2.2 and 2.3
Review (make sure you somewhat familiar with) Chapter 3.2, and the following parts of Appendix A: A.1 up to formula (A.7); A.2 - the first section (titled Mathematical induction)

HW1 is available here

L3 (2016/01/20) Asymptotic notation - Big-Oh, Omega, Theta, little-oh, and little-omega. Definitions and use
Divide and conquer: setting up recurrences

Slides used in class

Read Chapter 3.1 of the text. Do Questions 3.1-2, 3-2
Chapter 4: Read pages 65-67 of the text
L4 (2016/01/25)No class - Adverse weather alert (Condition 2)
L5 (2016/01/27) Solving recurrences: the Master Theorem and the Substitution Method.
Readings from Chapter 4: intro (pages 65-67). Chapter 4.5: The Master method. Chapter 4.3: The Substitution method.

HW2 is available here

L6 (2016/02/1) Solving recurrences: a review of Proof by Induction. The substitution method.
Guessing a solution: the iteration method. The recursion tree method.

Slides used in class

Read Chapter 4.4
Review Proof by Induction
L7 (2016/02/3) Further examples of the recursion tree method.
Brief review of sorting: running time and memory requirements ("in place" sorting)
Intro to probability. The Hiring Problem: worst-case and average-case analyses

Some notes outlining topics on probability discussed in class

Read Chapter 5.1 and 5.2
Do Questions 5.2-1, 5.2-5
L8 (2016/02/8) The Hiring Problem: expected-case analysis. Randomizing an array
Quicksort and Randomized quicksort, description and analysis

Slides used in class

Read Chapter 5.3 (you may skip the proofs of correctness for the array-permuting algorithms)

Read Chapter 7
Do question 7.1-1

L9 (2016/02/10) Linear-time randomized selection
Lower bound on comparison-based sorting
Linear-time sorting: counting sort and radix sort.
Read Chapter 9.2 (you may skip the derivation of the expected running time)
Read Chapter 8.1 - 8.3
Do questions 8.3-1 and 8.3-3

HW3 is available here

L10 (2016/02/15)No class - Adverse weather alert (Condition 2)
L11 (2016/02/17) Sorting in average linear time -- bucket sort.
Order statistics: maximum and minimum. Linear-time deterministic selection
Introduction to graphs

Slides used in class

Read Chapter 8.4 (you may skip the analysis)
Read Chapter 9.1 and 9.3
Do questions 8.4-2, 9.3-1, and 9.3-5

Read Chapter 22.1
Do Questions 22.1-3, 22.1-5, and 22.1-6

L12 (2016/02/22) Shortest paths in graphs: concepts.
Review for mid-term
Chapter 24: Read pages 642-650 of the text
L13 (2016/02/24) First in-class exam
L14 (2016/02/29) Dynamic Programming. Introduction via rod-cutting and Floyd-Warshall APSP Read Chapter 15.1 (you can skip the "subproblem graphs" portion)
Read Chapter 25.2

Practice problems: 15.1-2, 15.1-3

L15 (2016/03/02) Dynamic programming examples: knapsack (integer and 0-1). Shortest path via matrix multiplication
Read Chapter 25.1
The 0-1 knapsack problem is defined on page 425.

Practice problems: 16.2-2 and 16.2-3

HW4 is available here (due back: March 24th - after Spring Break)

L16 (2016/03/07) Dynamic programming example: making change. (Introducing [Integer] Linear Programs. Introducing Greedy Algorithms)

Shortest Paths vis Matrix multiplication: the O(V^4) and the O(V^3 log V) solutions

Review of some questions from the mid-term

Practice problems: 25.1-1 and 25.1-2

L17 (2016/03/09) Dynamic programming examples, including Optimal Binary Search Trees
(Guest lecture by Zhishan Guo)
L18 (2016/03/21) The Greedy strategy: introduction. The Activity Selection Problem. Read Chapter 16.1

Practice problems: 16.1-1, 16.1-3, 16.1-5

L19 (2016/03/23) Elements of the Greedy Strategy
DP on 0/1 Knapsack. A greedy algorithm for knapsack (that does not work). A 2-approximation algorithm for knapsack
Data compression: Huffman codes
Read Chapter 16.2

Practice problem: 16.2-5,

L20 (2016/03/28) Huffman encoding - algorithm and proof of correctness
BFS on graphs
Read Chapter 16.3. Read Chapter 22.2

Practice problems 16.3-2, 16.3-3, 22.2-2, 22.2-4

L21 (2016/03/30) BFS: running time
Single-source shortest path problems - definition and notation
Dijkstra's SSSP algorithm

Slides used in class

Read Chapter 24.3

Practice problems: 24.3-1, 24.3-4

L22 (2016/04/04) Second in-class exam
L23 (2016/04/06) Minimum Spanning Trees
Introducing NP-Completeness
Read Chapter 23.1 and Kruskal's algorithm from Chapter 23.2

Practice problems. 23.1-7, 23.1-8

L24 (2016/04/11) NP-Completeness: the class of problems P. Showing problems to (probably) not be in P Read the subsection Overview of showing problems to be NP-complete (pages 1050-1052) in the text
L25 (2016/04/13) Polynomial-time algorithms - running times in terms of input size
Showing problems to be hard: Decision Problems and Reductions
Illustration: the knapsack problem (<- Partition)
Defining the class NP of (decision) problems
Another example reduction: Partition -> bin-packing

Slides used in class

L26 (2016/04/18) Some more examples polynomial-time reductions: Partition to non-preemptive real-time scheduling; Hamiltonian circuit to TSP
Two-input verification algorithms
The class NP; NP-Complete problems
Read Chapters 34.3 (up to, but not including, circuit satisfiability). Chapter 34.5.4 describes the HAM-CYCLE to TSP reduction

HW5 is available here (due back on April 27)

L27 (2016/04/20) Showing problems to be in NP
Showing problems to be NP-Complete
The first NP-C problem: circuit satisfiablity
Read Chapters 34.4
L28 (2016/04/25) The class c--NP
Showing circuit satisfiability to be in NP, and NP-hard
Some other NP-complete problems - SAT, 3CNF-SAT, clique, vertex cover

Slides used in class

Read the proofs of Lemmas 34.5 and 34.6
L29 (2016/04/27) Summarizing the course

Slides used in class

Final exam on Thursday, May 5 at 8:00 am