CSCI 256(S) Algorithm Design and Analysis (Q)
This course investigates methods for designing efficient and reliable algorithms. By carefully analyzing the structure of a problem within a mathematical framework, it is often possible to
dramatically decrease the computational resources needed to find a solution. In addition,
analysis provides a method for verifying the correctness of an algorithm and accurately estimating its running time and space requirements. We will study several algorithm design
strategies that build on data structures and programming techniques introduced in Computer
Science 136, including induction, divide-and-conquer, dynamic programming, and greedy
algorithms. Particular topics of study include graph theory, computational geometry, string
processing, approximation algorithms, and advanced data structures. In addition, an
introduction to complexity theory and the complexity classes P and NP will be provided.
Format: lecture. Evaluation will be based on problem sets and programming assignments,
and midterm and final examinations.
Prerequisites: Computer Science 136 and Discrete Mathematics. Enrollment limit: 40 (expected: 25).
Hour: HEERINGA