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