CSE 3500:  Algorithms and Complexity
Fall 2016

Instructor: Yufeng Wu

Chong Chu (chong.chu@engr.uconn.edu)

: Monday, Wednesday and Friday 10--11 am.

Office Hour: ITE 235, Monday, Wednesday and Friday 9 to 10 am, and 11:00-12:00, or by appointment.
Note: solutions of homework and exams will be posted on HuskyCT.


Course Description. See the Syllabus.

Schedule. Planned schedule is here, but this is what is happening:

Lecture 42: Algorithm for NP complete problems. Review for final exam.
Lecture 41: Algorithms for NP complete problems
Lecture 40: NP complete: knapsack and partition. Algorithms for NP complete problems: special case of 2SAT

Lecture notes from last semester
Lecture notes (2nd) from last semester.
Sections 10.2 and 11.4.
Wikipedia page on 2-SAT.
Wikipedia page on dynamic programming algorithm for TSP

Lecture 39: More NP complete problems
Lecture 38: NP completeness: 3SAT, clique, independent set and vertex cover
Lecture 37: NP completeness: concept

Lecture notes on NP completeness from last semester.
More lecture notes on NPC.
Sections 8.4 to 8.7.
HW9. Due: 12/9.
Lecture 36: Polynomial-time reduction.
Lecture 35: Concept of NP.
Lecture 34: Network flow: bipartite matching and project selection

Lecture notes on NP from last semester.
Lecture notes on network flow applications.
Sections 7.5 and 7.11. Sections 8.1 and 8.3.
HW8. Due 11/30.
Lecture 33: Exam three.
Lecture 32: Why Ford-Fulkerson algorithm works?
Lecture 31: Network flow: Ford-Fulkerson algorithm

Lecture notes
Sections 7.1, 7.2 and 7.3. Applications of network flow: see Section 7.5 (bipartite matching) and 7.11 (project selection)

Lecture 30: Shortest path: properties of relaxation; DAG; Bellman-Ford
Lecture 29: Shortest path: Dijkastra's algorithm
Lecture 28: Dynamic programming and shortest path

Lecture notes from last spring.
Section 4.4 (of Chapter 4). Section 6.8.

HW7. Due 11/7.

Programming assignment: edit distance.
Due 11/28.
Test data (for Linux/Mac)
Test data (for Windows)
Lecture 27: Sequence alignment and matrix chain multiplication.
Lecture 26: Weighted interval scheduling
Lecture 25: Dynamic programming: coin change and knapsack

Lecture notes from last spring.
Sections 6.1, 6.4 and 6.6. And see the notes. Wikipedia page on matrix chain multiplication.
HW6. Due 10/31.
Lecture 24: Exam 2
Lecture 23: Dynamic programming: longest common subsequence
Lecture 22: Dynamic programming: longest increasing subsequence

Lecture notes from last semester (on LIS and LCS).
The LCS problem is closely related to sequence alignment in Section 6.6. Wikipedia page on LCS.

Lecture 21: Linear time selection. Introduction to dynamic programming.
Lecture 20: Divide and conquer: integer multiplication, matrix multiplication, closest points
Lecture 19: Divide and conquer algorithms: design and analysis

Lecture notes from last spring.
Lecture notes from last spring
Lecture notes from last spring
Chapter 5: 5.4 and 5.5. Chapter 6: section 6.2.
HW5. Due: 10/17
Lecture 18: Divide and conquer: the Master theorem
Lecture 17: Divide and conquer: merge sort
Lecture 16: Greedy algorithm: MST

Lecture notes from last spring
Lecture notes on the Master theorem. This is from a lecture I gave for the other section of CSE 3500 a few weeks ago.
Chapter 4: 4.5 on MST
Chapter 5: 5.1 and 5.2.

Lecture 15: Exam 1
Lecture 14: Greedy algorithm: Huffman coding
Lecture 13: Greedy algorithm: scheduling with minimum lateness

Lecture notes from last spring.
Chapter 4: 4.2 and 4.8.
HW4. Due: 10/7. 
Lecture 12: Greedy algorithm: interval scheduling; scheduling with minimum lateness.
Lecture 11: Strongly connected components. Greedy algorithm: coin change.
Lecture 10: Graph DFS applications: topological sort and strongly connected components.

Lecture notes.
Lecture notes from last spring.
Chapter 3. Chapter 4 (sections 1 and 2). See 4.2 for scheduling with minimum lateness.
HW3. Due: 9/26, end of day.
Lecture 9: Graph DFS
Lecture 8: Graph BFS and its application in testing bipartite graph.
Lecture 7: Heap and priority queue.

Lecture notes from last spring.
Chapter 3. See Section 2.5 for heap and priority queue.

Lecture 6: Common running time
Lecture 5: Asymptotic notations.
Lecture 4: No class (holiday)

Lecture notes
Chapter 2.
HW2. Due: 9/19, end of day.
Lecture 3: Insertion sort. Big-O notation.
Lecture 2: Several computational problems.
Lecture 1: Basic concepts of algorithms. Stable matching problem: a motivating example.

Lecture notes 1 (from last spring)
Lecture notes 2 (from last spring)
Chapter 2. We discussed insertion sort in the class. Check out these slides which contain detailed explanation on insertion sort.
Chapter 1 of the textbook (also available online here).

HW1. Due: 9/6, end of day.
Submit electronically to HuskyCT.