Algorithm Design and Analysis

CSCI 256 - Section 2

Spring 2020

Catalog Description

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. These include induction, divide-and-conquer, dynamic programming, and greedy algorithms. Additional topics of study include algorithms on graphs and strategies for handling potentially intractable problems.


Meetings

Lectures: MWF 12:00 pm - 12:50 pm

Room: Physics 205


Instructor

Aaron Williams

Office: TBL 309A

Phone: (413) 597-2774


Teaching Assistants

Minwoo Kang

Garett Liang

Catherine Yeh

Note: For general questions about the course, students may also attend office hours for the TAs associated with Section 1.


Materials and Syllabus

Materials for the course are hosted on Google Classroom and are available only to students enrolled in the class.

The full syllabus for the course is available here.


Cover illustration by George Retseck for Scientific American circa 2017.