// Course Details
Algorithm Design and Analysis
This course trains students to reason rigorously about computation: analyzing algorithm efficiency through asymptotic notation, proving correctness through formal methods, and decomposing unfamiliar problems by identifying structural properties and matching them to appropriate solution paradigms including Divide and Conquer, Greedy methods, Dynamic Programming, and Backtracking. The course culminates in complexity theory, where students distinguish tractable from intractable problems, verify NP membership, and establish NP-hardness through reduction from known NP-complete instances.
Course Information
- Course Code
- COMP6049001
- Academic Year
- 2026/2027
- Semester
- Ganjil
- Materials
- 0 items
Full Description
Algorithm Design and Analysis
Course Code: COMP6049001 Course Name: Algorithm Design and Analysis
Course Description
This course trains students to reason rigorously about computation: analyzing algorithm efficiency through asymptotic notation, proving correctness through formal methods, and decomposing unfamiliar problems by identifying structural properties and matching them to appropriate solution paradigms including Divide and Conquer, Greedy methods, Dynamic Programming, and Backtracking. The course culminates in complexity theory, where students distinguish tractable from intractable problems, verify NP membership, and establish NP-hardness through reduction from known NP-complete instances.
Learning Outcomes
On successful completion of this course, students will be able to:
| Code | Cognitive Level | Outcome |
|---|---|---|
| LO1 | (C6) Evaluation | Evaluate the time and space complexity of algorithms using asymptotic notation and formal analysis methods, and prove algorithm correctness using loop invariants, induction, or exchange arguments |
| LO2 | (C4) Analysis | Analyze unfamiliar computational problems by identifying their structural properties, classifying them into known algorithmic categories (graph, string, combinatorial), and recommending a solution strategy with justification |
| LO3 | (C5) Synthesis | Design solutions to unfamiliar computational problems by selecting and applying appropriate strategies, including Divide and Conquer, Greedy, Dynamic Programming, and Backtracking |
| LO4 | (C6) Evaluation | Assess the computational complexity of problems by distinguishing tractable from intractable cases, verify NP membership through polynomial-time verification, and recognize NP-hardness by mapping problem structure to known NP-complete instances |
Evaluation
| Component | Type | Weight |
|---|---|---|
| Theory: Assignment | Theory | 20% |
| Theory: Mid Exam | Theory | 30% |
| Theory: Final Exam | Theory | 30% |
| Theory: Case Study (AOL) | Theory | 20% |
| Total | 100% |
Textbooks
- Cormen, T. H., Leiserson, C. H., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms. Massachusetts Institute of Technology.
- Skiena, S. S. (2020). The Algorithm Design Manual. New York: Springer.
Course Content
- Role of Algorithms & Practical Problem Solving
- Algorithm Correctness
- Analyzing Algorithms
- Characterizing Running Times
- Data Structures Analysis I
- Data Structures Analysis II
- Amortized Analysis
- Divide and Conquer
- Analyzing Divide and Conquer Recurrences
- Randomized Algorithms & Hash Tables
- Greedy Algorithm I
- Greedy Algorithm II
- String Matching
- Review I
- Dynamic Programming I
- Dynamic Programming II
- Dynamic Programming III
- Dynamic Programming IV
- Graph Algorithms I
- Graph Algorithms II
- Backtracking
- NP-Completeness
- NP-Complete Problems
- Approximation Algorithms I
- Approximation Algorithms II
- Review II
Summary
| Attribute | Detail |
|---|---|
| Course Code | COMP6049001 |
| Course Name | Algorithm Design and Analysis |
| Core Focus | Rigorous algorithm analysis, correctness proofs & NP-completeness |
| References | Introduction to Algorithms (CLRS, 2022); The Algorithm Design Manual (Skiena, 2020) |
| Assessment Components | 4 (Assignment, Mid Exam, Final Exam, Case Study AOL) |
| Total Topics | 26 |