C S 312
Download as PDF
Algorithm Design and Analysis
Computer ScienceCollege of Computational, Mathematical, & Physical Sciences
Course Description
A study of the design and analysis of algorithms as solutions to problems, including dynamic programming, linear programming, greedy algorithms, divide-and-conquer algorithms, graph algorithms, and intelligent search algorithms.
When Taught
Fall and Winter
Min
3
Fixed/Max
3
Fixed
3
Fixed
0
Prerequisite
Complete ALL of the following Courses:
- 10649-000
OR 14099-000
Title
Design novel algorithms
Learning Outcome
Formulate unfamiliar problems in mathematical terms and select appropriate algorithmic paradigms-such as dynamic programming, greedy algorithms, or divide-and-conquer-to design effective solutions. This process of creating order from complexity is spiritually strengthening, as it mirrors the application of divine laws to solve intricate problems.
Title
Analyze asymptotic behavior
Learning Outcome
Analyze the worst-case time and space complexity of algorithms and compare these findings with empirical results. This rigorous evaluation of efficiency is intellectually enlarging, providing students with the analytical depth to distinguish between surface-level performance and fundamental constraints.
Title
Evaluate computational efficiency
Learning Outcome
Distinguish between problems and their solutions while categorizing them into complexity classes like P, NP, and NP-Complete. Understanding these boundaries is intellectually enlarging and helps students exercise stewardship by focusing their talents on problems that are practically solvable.
Title
Prove algorithmic correctness
Learning Outcome
Construct formal proofs to verify that a subset of the algorithms considered in the course function correctly under all conditions. This commitment to provable truth is character building, fostering the integrity and precision required to stand behind one's work with total honesty.
Title
Implement complex solutions
Learning Outcome
Independently implement selected algorithms using Python to solve motivating, real-world applications. The persistence required to move from abstract theory to a working implementation is character building, while the ability to adapt these solutions to new contexts prepares students for a life of lifelong learning.