COSC 3320 provides an introduction to fundamental principles of algorithm design and analysis.
A (tentative and subject to change) list of topics covered by the course follows.
- Fundamental concepts: computational problem, algorithm, model of computation. Analysis of correctness and complexity of algorithms.
- The divide-and-conquer paradigm, with applications to sorting and algebraic problems.
- Data structures: trees, heaps, hash tables, binary search trees.
- The dynamic programming paradigm, with applications to problems on strings.
- Graphs and graph algorithms: depth- and breadth-first search, minimum spanning trees, shortest paths.
- (if time permits) An introduction to NP-Completeness: complexity classes P, NP, co-NP and NPC, and polynomial-time reductions.