| Credit Hours: | 4 |
| Course Coordinator: | Dave Maier |
| Course Description: | An advanced, in-depth study of the design and analysis of algorithms. Topics include models of computation, sorting, data structures, graph algorithms, matrix multiplication, fast Fourier transforms, polynomial arithmetic, pattern matching, and NP-complete problems. |
| Prerequisites: | Introductory course in algorithms, data structures, discrete math. |
| Goals: | Upon the successful completion of this course students will be able to:
|
| Textbooks: | Introduction to Algorithms (2nd edition), by Cormen et al. |
| References: | None. |
| Major Topics: |
|
| Laboratory Exercises: | The class requires written homework and a major project, plus occasional programming exercises. |
| CAC Category Credits | Core | Advanced |
| Data Structures | 0.5 | 1.0 |
| Algorithms | 0.5 | 2.0 |
| Software Design | ||
| Computer Architecture | ||
| Programming Languages |
| Oral and Written Communications: | Every student writes a paper of about 10 pages explaining and commenting on a paper in the recent computing literature. |
| Social and Ethical Issues: | None. |
| Theoretical Content: | Analysis of algorithms, algorithm selection, associated mathematical techniques, concept of NP-completeness, techniques for proving algorithms are correct. |
| Problem Analysis: | A major goal of the course is to teach students to choose an appropriate algorithm to solve a problem. In a sense the whole class is about analyzing this problem. |
| Solution Design: | The students will learn to design good algorithms for solving problems of various types. |