CSE 431/531: Algorithms Analysis and Design

Fall 2002
Time:
MWF 09:00am--09:50am, Place: Knox 14

### Course Syllabus

```Instructor:     Prof. Hung Q. Ngo
Office: 239 Bell Hall            Office Hours: Thursdays 1:00-3:00pm
Phone: 645-3180 x 160            Email: hungngo@cse.buffalo.edu

Teaching Assistants:  (in random order)
Mr. Yang Chen
Office: Trailer B8
Office Hours: Mondays 2:00-4:00pm
Email: yangchen@cse.buffalo.edu
Recitations: B3, Fridays, 10:00-10:50, 422 FRNCZK
Mr. Guang Xu
Office: Trailer E12
Office Hours: Tuesdays 3:00-5:00pm
Email: guangxu@cse.buffalo.edu
Recitations: B2, Thursdays, 15:30-16:20, 209 Norton.
B1, Mondays, 12:00-12:50, 250 Park.```

Course Description:

This course introduces basic elements of the design and analysis of computer algorithms. Topics include asymptotic notations and analysis, parallel sorting networks, divide and conquer, greedy methods and matroids, 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.

Course Objectives:

• Have fun learning!
• Grasp the essential ideas of algorithm analysis and design
• asymptotic notations analysis
• basic parallel sorting network design
• typical algorithm design methods: divide and conquer, greedy, 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 and discrete mathematics

Prerequisites:

Data Structures (CSE250), Calculus II, and a course that requires formal proofs.
The desire and ability to learn new ideas quickly.

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 from practical programming situations
• Understand the notions of NP-completeness and approximation algorithms
• Be able to demonstrate simple NP-complete problems
• Love designing and analyzing algorithms

References:

• Required Textbooks:
• Introduction to Algorithms (2e), 1180pp, Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, and Clifford Stein, ISBN: 0262032937, MIT Press, September 2001.
• Algorithms: Sequential & Parallel, 330pp, Russ Miller and Lawrence Boxer, ISBN: 0130863734, Prentice Hall PTR, December 1999.
• Other recommended references:
• Donald Knuth, The Art of Computer Programming Volumes 1, 2, 3, Addison Wesley.
• Gilles Brassard, Paul Bratley, Fundamentals of Algorithmics, Prentice Hall
• Alfred V. Aho John E. Hopcroft Jeffrey Ullman, Data Structures and Algorithms, 427pp. ISBN: 0201000237, Addison Wesley, January 1983.
• Plus other reading material specified on the class homepage

Class homepage:

`        http://www.cse.buffalo.edu/~hungngo/classes/cse531_fall02/`

• Heavy! So, start early!!
• Approx. 50 pages of fairly dense reading per week
• 6 written homework assignments (to be done individually)
• 1 midterm exam
• 1 final exam

• 6 written assignments: 6% each
• Midterm: 27%
• Final: 37%
• Assignments due at the end of the lecture on the due date
• 1 day late: 10% reduction
• Each extra day late: 20% reduction
• Incomplete/make-up exams: not given, except in provably extraordinary cases

• No tolerance on plagiarism:
• 0 on the particular assignment/exam for first attempt
• Fail the course on the second
• Consult the University Code of Conduct for details on consequences of academic misconduct