Course Description
Sequential algorithm design and complexity analysis. Dynamic programming. Greedy algorithms. Graph algorithms. Selected advanced topics from NP-completeness; approximation, randomized, parallel, number-theoretic algorithms; Fast Fourier Transform; computational geometry; string matching.
Syllabus
Student Learning Outcomes, Goals, Objectives:
Students successfully completing this course will be able to:
- understand how recursion works;
- know how to design divide-and-conquer algorithms using three steps and apply to merge sort, quick sort, Strassen’s matrix multiplication;
- understand asymptotic notation, and analyze common algorithms using them;
- Apply graph algorithms, including graph traversal, shortest paths, minimum spanning trees, and graph search techniques.
- Understand the fundamentals of algorithmic game theory and analyze basic game-theoretic algorithms and solution concepts.
- use a greedy strategy to solve some problems such as minimum spanning tree and shortest path;
- apply dynamic programming to problems such as matrix chain product, longest common subsequence, and graph algorithms;
- understand NP-completeness and why it is important;
Course Grading Information:
| Activity/Performance Measure | Percentage/Points |
|---|---|
| Quiz 1–12 (lowest two dropped) | 100% |
Grading Scale:
| Percentage | Letter Grade |
|---|---|
| 93–100% | A |
| 90–92% | A- |
| 87–89% | B+ |
| 83–86% | B |
| 80–82% | B- |
| 76–79% | C+ |
| 70–75% | C |
| Below 75% | F |
Attendance/Participation:
Attendance is encouraged but will not be counted toward the final course grade.
Course Materials Purchased by the Students:
No purchase is required. The primary reference is: Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. Introduction to Algorithms (4th Edition, MIT Press, 2022).
Scholarly Perspectives
This course engages diverse scholarly perspectives to develop critical thinking, analysis, and debate and inclusion of a reading does not imply endorsement.