CSE 431/531: Algorithm Analysis and Design (Spring 2019)
Course Information
Time: MoWeFr 9:00~9:50am
Location: Alumni 97
Credits: 3
Please sign up the course on Piazza.
Instructor
Shi Li
Office: 328 Davis Hall
Email: [first name][last name initial][at][buffalo][dot][edu]
Homepage: http://www.cse.buffalo.edu/~shil/
Overview
Algorithm design and analysis is fundamental to all areas of computer science and gives a rigorous framework for the study of optimization. This course provides an introduction to algorithm design through a survey of the common algorithm design paradigms of greedy optimization, divide and conquer, dynamic programming, and linear programming, and the NP-completeness theory.
Textbook
There is no required text book for the class, but it is recommended that you have one of the following books:
- Jon Kleinberg and Eva Tardos Algorithm Design. 1st Edition, 2005, Pearson.
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduction To Algorithms 3rd Edition, 2009, MIT Press.
Grading
Your final grade will be computed as follows:
- Homeworks: 40%. There are 5 homeworks, 3 will which will have programming tasks.
- Mid-Term Exam.
- Final Exam.
- The two exams contribute to 60% of the final score. Your score for exams is computed as follows:
max{M × 20% + F × 40%, M × 30% + F × 30%} ,
where M and F are your scores for the mid-term and final exams respectively (each score is a number between 0 to 100).
Policies
- Late policy You have one late credit. If you use the credit, you can submit a homework or a project 3 days late. No other late submissions will be accepted.
- Collaboration policy For homework problems, you are allowed to discuss with classmates. However, it is highly recommended that you first think about each problem for enough time before the discussion. You must write your solutions by yourself, in your own words. You need to write down the names of the students you collaborated with. For the programming problems, you must implement the algorithms by yourself.
- You can not copy codes, homework and exam problem solutions from other students and external resources. Per departmental policy of academic integrity violations, if we determined that you committed an academic integrity violation, you will get an "F" for the course, and the case will be reported to the department and the university and recorded in their databases.
Important Dates
- Mid-Term Exam: Mon, Apr 15 2019, 9:00am-9:50am.
- Final Exam: Wed, May 15 2019, 8:00am-11:00am.
Homeworks
Syllabus
- Introduction, slides(with animation, without animation), last updated: 02/03/19 21:30
- syllabus
- asymptotic notations (KT 2.2)
- common running times (KT 2.4)
- Graph Algorithms, slides(with animation, without animation), last updated: 01/27/19 17:06
- graph basics (KT 3.1)
- connectivity and traversal (KT 3.2, 3.4)
- topological order (KT 3.6)
- Greedy Algorihtms, slides(with animation, without animation), last update: 02/17/19 21:46
- interval scheduling (KT 4.1)
- Kruskal's and Prim's algorithm for minimum spanning tree (KT 4.5, 4.6)
- Dijkstra's algorithm for shortest path (KT 4.4)
- Huffman code (KT 4.8)
- Divide and Conquer, slides(with animation, without animation), last update: 03/05/19 18:22
- merge sort and counting inversions (KT 5.1, 5.3)
- quicksort and selection (KT 13.5)
- polynomial and matrix multiplications (KT 5.5)
- solving recurrences (KT 5.2)
- Dynamic Programming
- weighted interval scheduling (KT 6.1)
- subset sums and knapsack (KT 6.4)
- sequence alignment (KT 6.6)
- shortest path with negative weights and Bellman-Ford (KT 6.8)
- all-pair shortest paths (KT 6.9)
- NP-Completeness
- P, NP, Co-NP, P=NP?, NPC (KT 8.1-8.4)
- circuit-SAT, 3-SAT (KT 8.5)
- independent set, vertex cover, Halmitonion Cycle (KT 8.5)
- 3-coloring (KT 8.7)
Exercise Problems will be posted before a recitation lecture. Try to solve them before coming the class.
Calendar