Algorithm Design and Analysis
Winter 2018

Important announcement:

Zhaojun Bai,
Office: 3005 Kemper Hall
Phone: 752-4874
Email: bai at

Teaching Assistants:
Nima Joharizadeh (johari at
Kenan Nalbant (kanalbant at
Yuan Pan (yapan at

M.W.F. 12:10pm - 1:00pm
Hunt 100

TA Section Time Place
Yuan A01 (CRN51558) Mon. 10-10:50 Olson 106
Nima A02 (CRN51559) Wed. 10-10:50 Olson 106
Kenan A03 (CRN51560) Wed. 3:10-4:00 Chemistry 176
Website for discussion sessions

Office Hours:
Day Time Place
Mondays 3:00 - 4:00 Kemper 3005, Bai
5:00 - 7:00 Kemper 53, Nima
Tuesdays 10:00 - 11:00 Kemper 55, Yuan
5:00 - 7:00 Kemper 53, Kenan
Wednesdays 2:00 - 3:00 Kemper 3005, Bai
5:00 - 6:00 Kemper 53, Kenan
Thursdays 6:00-8:00 Kemper 53, Yuan
Fridays 10:00 -- 11:00 Kemper 3005, Bai
5:00 -- 6:00 Kemper 53, Nima

Course Objectives:
The notion of an algorithm is fundamental to all of computer science. In this course, we study methods for designing efficient algorithms, evaluating their performance, and ways of establishing precise limits on the possible effectiveness of classes of algorithms.

Textbook and lecture notes:

ECS20 and ECS60.

Course Outline
  1. Introduction and foundations (Ch.1-3)
  2. Algorithm design paradigms:
    • Divide-and-conquer (Ch.4)
    • Dynamic programming (Ch.15)
    • Greedy algorithms (Ch.16)
  3. Algorithms on graphs and trees (Ch.22-25)
  4. NP-completeness and approximate algorithms (Ch.34-35)


Exams (All exams are closed-book, no notes allowed):

Grading may reflect the clarity of your presentation as well as the correctness of your answers.
Regrading of homeworks and midterm exams is only considered within 5 days from the return day. Regrading request must be submitted in writing.

Online Info:
Annoucements, handouts and homework assignments will be posted at the following sites. They get updated frequently throughout the quarter.

Lecture-by-Lecture summaries, handouts and homework assignments

Date Topics Handouts/Homeworks
1/8 I. Introduction and getting started LN: Introduction and getting started
Reading: Chaps. 1 and 2
Review: linear recurrences (ECS20)
Warmup exercise
1/10 I. Introduction and getting started (2/3) Problem set 1
1/12 I. Introduction and getting started
II. Asymptotic notations
LN: Asymptotic notations
Reading: Section 3.1
1/15 holiday, no class
1/17 II. Asymptotic notations
III. Divide-and-Conquer (DC) recurrences
LN: DC recurrences
Reading: Section 3.2
Problem set 2
1/19 III. Divide-and-Conquer recurrences
Reading: Section 4.4
1/22 IV. DC algorithms: maximum-subarray
IV. DC algorithms: Strassen's method
LN: maximum-subarray
LN: Strassen
Reading: Sections 4.1 and 4.2
1/24 IV. DC algorithms: the closest pair
LN: closest pair
Problem set 3
1/26 V. Greedy algorithms: activity selection
LN: activity selection
1/29 V. Greedy algorithms: Huffman codes
LN: Huffman codes
1/31 V. Greedy algorithms: knapsack problem
LN: knapsack
Problem set 3 due
Extra reading: money changing
2/2 VI. Dynamic programming: rod cutting
Brief review for midterm I
LN: rod cutting
Reading: section 15.1
Review checklist, Slides
Problem set 4
2/5 Midterm 1
2/7 VI. Dynamic programming: matrix-chain product LN: matrix-chain product
Reading: sections 15.2 and 15.3
2/9 VI. Dynamic programming: longest common subsequence LN: LCS
Reading: section 15.4
2/12 VI. Dynamic programming: LCS and edit distance LN: edit distance
Problem set 5
2/14 VI. Dynamic programming: Knapsack problem and summary LN: knapsack revisited
Handout on knapsack
Reading: section 15.3
2/16 VII. Graph algorithms: Intro and BFS
LN: Graph intro
Reading: Sections 22.1 and 22.2, Appendix B.4
2/19 holiday, no class ...
2/21 VII. Graph algorithms: DFS
Handout: DFS
Problem set 6, due 4:00pm, Feb.28
2/23 VII. Graph algorithms: DFS apps and MST
LN: DFS apps
2/28 Problem set #6 due
3/5 Midterm 2: cover topics in Problem Sets #4, #5 and #6
3/16 ... (instruction ends)
3/17-3/19 ... (extra office hours and reviews... to be announced)
3/20 6:00-8:00pm, Final Exam Hunt 100

Maintained by Zhaojun Bai