Description
This course provides an introduction to the theory underlying computer algorithms. Students successfully completing this class will have a basic understanding of how algorithms for problem solving on computers are designed and analyzed, and will be prepared begin independently designing algorithms to solve new problems. The course begins with a tutorial of the basic algorithmic analysis techniques, continues with a study of basic algorithms for solving common computing problems, and concludes with a look at computational complexity and approximate solutions.
Topic include efficiency classifications and mathematical analysis of recursive and non-recursive algorithms; design techniques: brute force, greedy, decrease-and-conquer, divide-and-conquer, transform-and-conquer, dynamic programming, iterative improvement, backtracking, branch-and-bound, space and time tradeoffs; NP-completeness; approximation algorithms; computational problems: sorting, searching, string processing, graphs, arithmetic, linear algebra.
Specific Outcomes
- Establish an understanding of fundamental techniques for the design and analysis of algorithms
- Establish an understanding of efficiency classifications and mathematical analysis of recursive and nonrecursive algorithms
- Apply design and analysis techniques to important problems from various areas of computing including sorting, searching, string processing, graphs, arithmetic, and matrix algebra
Prerequisites
- CSC 1300 (or MAT 2600)
- CSC 1052 (or ECE 2620)
- If you lack the prerequisite, please contact the instructor