| Lecture Time | Location | Link |
|---|---|---|
| Tue & Thu, 10:00 AM – 11:20 AM | Zoom | See (Piazza-Resources) |
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).
| Role | Name | Office Hours |
|---|---|---|
| Instructor | Kelin Luo (kelinluo@buffalo.edu) | See Piazza |
| Grader | XXX XX (xxx@buffalo.edu) |
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
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 |
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.
There are no required textbooks, but most of the content we will discuss is covered in the following books:
Similar courses taught at other universities: