Lecture (date) Summary Handouts/ Assignments
L1 (2018/01/16) Introduction to the course - administrative and topical.
Read all of Chapter 1 of the text
A brief outline of the lecture
L2 (2018/01/18) Pseudocode; the RAM machine model; Algorithm efficiency & Asymptotic analysis
Proving programs correct: loop invariants
Algorithm design technique: Divide and conquer. Run-time analysis via recurrences. Examples: merge-sort, egg-drop
Read all of Chapter 2 of the text
A brief outline of the lecture

Look through homework assignment 1 before the next lecture; we will discuss it then

L3 (2018/01/23) Divide and conquer: further examples. Review of Asymptotic (Big-Oh) notation Read Chapter 3, Section 3.1 of the text

A brief outline of the lecture.
Here are some of the algorithms discussed in class.

L4 (2018/01/25) Asymptotic notation: o and lower-case omega
D&C Examples: maximum subsequence array sum, counting inversions
The substitution method of solving recurrences
Read the introductory material in Chapter 4, as well as Sections 4.1 and 4.3

A brief outline of the lecture.

L5 (2018/01/30) D&C example: Quick-sort
Recursion-tree method for guessing solutions to recurrences
D&C example: Deterministic Selection in linear time
Read Sections 7.1 and 7.2 (quick-sort), Section 4.4 (Recursion trees), and Section 9.3 (selection)
L6 (2018/02/01) Deterministic selection in linear time
The Master Method: statement and (outline of) proof
Introducing Dynamic Programming: computing Fibonacci numbers; rod-cutting
Memoization and bottom-up implementations of DP
Read Section 2.4.5 and 4.6.1 of the text (the Master Method)

Look through homework assignment 2 before the next lecture; we will discuss it then

L7 (2018/02/06) DP examples: Rod-cutting and egg-drop Read Section 15.1 of the text
Announcement: the due-date for HW2 will be postponed (and some question[s] added to it)
L8 (2018/02/08) DP examples: Longest Increasing Sequence and 0-1 Knapsack

Principles of Dynamic Programming

Read Section 15.3 of the text
(The 0-1 knapsack problem is described in page 425 of your text)

The updated version of homework assignment 2 may be found here; it's due on Sunday Feb 18th

L9 (2018/02/13) Principles of DP: continued. These principles applied to Activity Selection
Greedy algorithms: a greedy algorithm for activity selection
The coin change problem
Read Sections 15.4 and 16.1 of the text
L10 (2018/02/15) The Greedy strategy: Principles
Application to Activity Selection and coin-change
Introduction to Huffman condes
Read Section 16.2 of the text

Look through homework assignment 3 before the next lecture; we will discuss it then

Here's a revised version (a typo - Theorem 15.1 incorrectly referred to as Theorem 15.5 - has been fixed)

L11 (2018/02/20) The greedy strategy: Huffman encoding
Introducing shortest-path problems on graphs
Huffman codes: Read Section 16.3 of the text
Representation of Graphs: Read Section 22.1 of the text

Announcement: the first in-class exam will be held on March 6th

L12 (2018/02/22) Shortest paths: Optimal substructure property
A DP algorithm for single-source SP: The Bellman Ford algorithm
No negative edges: greedy choice property and Greedy algorithm: The Dijkstra algorithm
Read Chapter 24 - the introductory material, 24.1 (Bellman-Ford) and 24.3 (Dijkstra)

Here's a practice test

L13 (2018/02/27) All-pairs shortest paths: Matrix multiply and Floyd-Warshall
Introduction to probabilistic analysis
All-pairs Shortest Paths: Read Chapters 25.1-25.2
The Hiring Problem is described in Chapter 5.1; Appendix C.2 discusses probability
L14 (2018/03/1) Probabilistic analysis of the hiring problem and quick-sort. Randomized quicksort Chapter 5.2 discusses analysis of the hiring problem
Randomized quick-sort, and its analysis, are discussed in Chapters 7.3 and 7.4
L15 (2018/03/6) In-class exam (on lectures 1 - 11) Here are some sample solutions (hopefully, without any bugs!)
L16 (2018/03/8) No class

Look through homework assignment 4 before the next lecture; we will discuss it then

L17 (2018/03/20) Probabilistic analysis: review. Application to the hiring problem and randomized quick-sort
Conditional probabilities. Randomly permuting an array (Randomize-in-place)
The pseudocode and analysis of Randomize-in-place are in pages 126-128 of the text
L18 (2018/03/22) Independent RVs. Analysis of Randomized Selection
Introducing intractability
The randomized selection algorithm, and its analysis, are covered in Section9.2 of the text.
L19 (2018/03/27) No class
L20 (2018/03/29) In-class exam on lectures 11 - 18 (excluding Huffman encoding) Sample solutions
L21 (2018/04/3) Intractability and Lower Bounds
Reductions for lower bounds: Reducing sorting to Priority Queue implementations
Decision versus optimization problems. A formal-language representation of decision problems
Polynomially-related encodings of abstract problems
Read the introductory material (pages 1048-1053) of Chapter 34
The sorting lower bound is discussed in Chapter 8.1
L22 (2018/04/5) The Hamilton cycle problem and TSP. Reducing the Hamilton cycle problem to TSP
Polynomial time. Example algorithms that are and are not polynomial-time algorithms
The Hamilton cycle problem is described on pages 1061-1062. The TSP, and the reduction, are in Section 34.5.4 (pages 1096-1097)

Review some of algorithms we have previously discussed in class (such as rod-cutting, activity selection, etc), and determine whether these algorithms have polynomial running time of not

L23 (2018/04/10) The classes P, NP, co-NP, and NPC
Introducing CIRCUIT-SAT: a first NPC problem
Read Sections 34.1 - 34.3 of the text
Practice problems: 34.1-3, 34.1-4, 34.1-5, 34.3-1, 34.3-2
L24 (2018/04/12) Showing CIRCUIT-SAT to be NP-complete
Showing SAT, 3CNF-SAT, and CLIQUE to be NP-complete
CIRCUIT-SAT, SAT and 3CNF-SAT are discussed in Section 34.4 of the text; CLIQUE is discussed in Section 35.5.1

Read up on the VERTEX-COVER problem (Sec 35.5.2) on your own.

Look through homework assignment 5 before the next lecture; we will discuss it then

L25 (2018/04/17) Some more NP-completeness proofs: SUBSET-SUM, PARTITION, MULTIPROCESSOR SCHEDULING, REAL-TIME SCHEDULING SUBSET-SUM is discussed in Section 34.5.5; PARTITION is Exercise 34.5-5
L26 (2018/04/19) Example of Intractability analysis, and of dealing with intractability: the Restricted Shortest Paths problem. Proof of intractability. Dynamic Programming algorithm.
L27 (2018/04/24)
L28 (2018/04/26) In-class exam (comprehensive)