CSE 431/531 Algorithm Analysis and Design (Summer 2026)

Site Map

Announcements

Logistics

Lecture Time Location Link
Tue & Thu, 10:00 AM – 11:20 AM Zoom See (Piazza-Resources)

Communication Policy

All students must only use the course Piazza for any course-related issues.

UBlearns should be used only for submitting assignments, checking grades, and completing the Quiz – All other materials such as syllabus, announcements, homework, and project assignments, as well as Q&As, are handled by Piazza only.

All questions/requests to the instructor, TAs, and Graders should be sent using Piazza, and not via emails (which can be used as a secondary means if Piazza post didn't work).

Teaching Team

Role Name Office Hours
Instructor Kelin Luo (kelinluo@buffalo.edu) See Piazza
Grader XXX XX (xxx@buffalo.edu)

Course Description

Introduces basic elements of the design and analysis of algorithms. Topics include asymptotic notations and analysis, divide and conquer, greedy algorithms, dynamic programming, fundamental graph algorithms, NP-completeness, and approximation algorithms. For each topic, beside in-depth coverage, we discuss one or more representative problems and their algorithms. In addition to the design and analysis of algorithms, students are expected to gain substantial discrete mathematics problem solving skills essential for computer scientists and engineers.

Course Credits: 3

Learning Outcome:

Master the fundamental concepts in algorithm analysis and design.

Learning Outcomes Method of Assessment
1. Proficiently understand and apply asymptotic notations and analysis Quiz, Homeworks, Exam
2. Have a good overall picture of algorithm analysis and design techniques Quiz, Homeworks, Projects, Exam
3. Solve simple to moderately difficult algorithmic problems arising in applications Quiz, Homeworks, Projects, Exam
4. Understand the notions of NP-completeness and approximation algorithms Quiz, Homeworks, Exam
5. Be able to demonstrate the hardness of simple NP-complete problems Homeworks, Exam

Pre-requisites

You should have taken CSE250 (data structure) or similar courses before. We expect you to have certain levels of mathematical maturity: You should have basic understanding of calculus (e.g., limit, differentiation, integration) and linear algebra (e.g., matrix, vector space, linear transformation); You should be comfortable to read and write mathematical proofs, understanding common proof strategies (e.g., proof by induction, contradiction). We also expect you to have some programming experience: know what is a computer program, and be able to read and write code.

Recommend resources

Course Information from Previous Years

There are no required textbooks, but most of the content we will discuss is covered in the following books:

Other Course References

Similar courses taught at other universities: