CSE 3500:  Algorithms and Complexity
Fall 2017

Instructor: Yufeng Wu

Vinayak Gupta (vinayak.gupta@uconn.edu), Chioma Ezete ( chioma.ezete@uconn.edu)

: Tuesday and Thursday 12:30--1:45 pm, LH 306.

Office Hour: ITE 235, Tuesday and Thursday 9:30 to 11:30 am, 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 28: Algorithms for NP complete problems
Lecture 27: NP completeness

Lecture notes on algorithms for NP complete problems.
Lecture notes
Chapter 8

Lecture 26: NP completeness
Lecture 25: NP.

Notes on concept of NP.
Notes on polynomial-time reduction.
Chapter 8.
HW9. Due: 12/8.
Lecture 24: Randomized algorithms.

Lecture 23: Probabilistic analysis.

Lecture notes.
Read the textbook chapter 13 carefully on randomized algorithms.
Sections 13.2, 13.3, 13.4 and 13.5 (Quicksort) 
Programming assignment. Due: 12/1.
Test data.
Another test data.

HW8. Due: 11/28.
Lecture 22: Exam two.

Lecture 21: Shortest path.

Lecture notes on shortest path (see below).
Section 6.8.

Lecture 20: Shortest path

Lecture 19: Minimum spanning tree

Lecture notes on shortest path.
Lecture notes on minimum spanning tree.
Sections 4.4 and 6.8.
Section 4.5. If you are interested in union-find, check out section 4.6 (not required).
HW7. Due: 11/7. Note: this HW is due in one week.
Lecture 18: Dynamic programming.

Lecture 17: Dynamic programming.

Lecture notes from last semester.
Chapter 6.

Lecture 16: Dynamic programming: longest common subsequence.

Lecture 15: Divide and conquer (linear time selection). Dynamic programming: the first example (longest increasing subsequence).

Lecture notes from last semester.
Chapter 6.
HW6. Due: 10/31.
Lecture 14: Divide and conquer.

Lecture 13: Divide and conquer.

Lecture notes on divide and conquer
Chapter 5.
HW5. Due: 10/19.
Lecture 12: Exam one.

Lecture 11: Divide and conquer

Lecture notes on Master theorem.
Sections 5.1 to 5.2.

Lecture 10: Scheduling problems. Divide and conquer.

Lecture 9: Greedy algorithm: Hoffman coding.

Lecture notes on Huffman coding.
Lecture notes on scheduling: this part follows closely the textbook.

Sections 4.1, 4.2 and 4.8.
Sections 5.1

HW4. Due: 10/03. Note: this HW is due in one week.
Lecture 8: Greedy algorithm.

Lecture 7: DFS: connected components. Heap.

Notes on greedy algorithm.
Notes on Heap.
Chapter 4.
Section 2.5.
HW3. Due: 9/26. Note: this HW is due in one week.
Lecture 6: DFS and applications.

Lecture 5: BFS application: bipartite graph. DFS.

See lecture notes 3 below. Read Section 3.4 for bipartite graph.
Sections 3.1 to 3.6.

Lecture 4: Common running time. Graph BFS.

Lecture 3: Asymptotic notations.

Lecture notes 3 (from last year).
Lecture notes 2 (from last year).
Sections 3.1 to 3.4.
Sections 2.4 and 2.5.
HW2. Due: 9/19, end of day.
Lecture 2: Basics of algorithm analysis.

Lecture 1: Basic concepts of algorithms. Stable matching problem: a motivating example.

Lecture notes 1 (from previous offering of this course): please note lecture topics will be similar with previous offering of this course. So I often will re-use the lecture notes.
Chapters 1 and 2 of the textbook.

We discussed insertion sort in the class. Check out these slides which contain detailed explanation on insertion sort.
HW1. Due: 9/7, end of day.
Submit electronically to HuskyCT.