CSE 431/531 Analysis of Algorithms

## Syllabus

Professor-in-charge: Dr. Jinhui Xu

Office: 315 Davis Hall
Regular office hours: Fri. 1:00 - 1:50pm
Phone: (716) 645-4734
E-mail:   jinhui@buffalo.edu

Teaching Assistants :

Jiayi Xian
Office hours: Mon.  Wed. 10:00 - 10:50am
E-mail:   jxian@buffalo.edu

Le Fang
Office hours: Tue.  Thu. 1:00 - 1:50pm
E-mail:   lefang@buffalo.edu

Lecture: MWF, 9:00-9:50pm,  Knox 109,
Course web site:   http://www.cse.buffalo.edu/~jinhui/courses/cse531

Required Texts:

• Introduction to Algorithms (3e), Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, and Clifford Stein, MIT Press, 2001
• Algorithms: Sequential & Parallel, Russ Miller and Lawrence Boxer,  Prentice Hall PTR,1999
Recommended Texts:

• Michael Goodrich and Roberto Tamassia, Algorithm Design: Foundations,Analysis, and Internet Examples, John Wiley & Sons, 2002
• Network Flows, Theory, Algorithms, and Applications,  R. K. Ahuja, T.L. Magnanti, and J. B. Orlin, Prentice Hall, 1993.
Prerequisites: CSE 250, Caculus II,  a course that requires formal proofs.

Course Description:

This course introduces basic elements of the design and analysis of computer algorithms. Topics include
asymptotic notations and analysis, divide and conquer, greedy methods and
dynamic programming, basic graph algorithms, NP-completeness, approximation algorithms, and
network flows analysis. For each topic, beside in-depth coverage, one or more representative problems and
their algorithms shall be discussed.

In addition to the design and analysis of algorithms, students are expected to gain substantial discrete
mathematics problem solving skills essential for computer engineers.

Main Objective:

• Grasp the essential ideas algorithm analysis and design
• asymptotic notations analysis
• typical algorithm design methodologies: divide-and-conquer, greedy algorithms, dynamic programming, network flow analysis
• basic graph algorithms: BFS, DFS, MST, ...
• the notions of NP-completeness and approximation algorithms
• Gain substantial problem solving skills in designing algorithms
At the end of this course, each student should be able to:
•  Have a good overall picture of algorithm analysis and design techniques
• Solve simple to moderately difficult algorithmic problems arising in applications
• Understand the notions of NP-completeness and approximation algorithms
• Be able to demonstrate the hardness of simple NP-complete problems
• Class Participation                            5% in total
• Homeworks (6 problem sets)           25% in total
• Midterm                                            20%
• Final Exam                                       50%
Note: Each component will receive a numerical score. The course grade will be based on the weighted total of all components and the class curve.
Class participation includes attendance, participation in class discussions, and general interest towards the course material.

The exams will be closed-book, and closed-notes.