CSCI 256 - Fall 2020

Algorithm Design and Analysis

Home | Lectures | Assignments | Handouts | CS@Williams


Instructor: Sam McCauley
Phone: x2744
Office:TPL 315
Office Hours:Wednesday 1-3PM, Thursday 3:30-5:30PM
Lectures: MWF 10:40-11:30AM in CTD 280.
TAs : Kiersten Campbell, Nicholas Gonzalez, Tai Heinrichs, Jonathan Rogers, Peter Zhao (photos req. Williams signin)
TA Hours: See course calendar (req. Williams signin)
All TA Hours will take place over zoom. A link can be found in each calendar entry above. Students are also encouraged to ask questions via Slack.
Lectures will be posted on Glow, but synchronous attendance is required.
Assignments will be due on Thursdays, at 11:59pm Eastern time.

Course Description

This course is about mathematical modeling of computational problems, developing common algorithmic techniques to solve them, and about analyzing the correctness and running time of the algorithms. By clearly formulating and carefully analyzing the structure of a problem, it is often possible to dramatically decrease the computational resources needed to solve it. In addition, by analyzing algorithms you can provide provable guarantees of their performance. We will study several algorithm design strategies that build on data structures and programming techniques introduced in CS 136 and mathematical tools introduced in MATH 200. The course will roughly cover the following topics in order: graph algorithms, greedy algorithms, divide-and-conquer, dynamic programming, NP completeness and problem reductions, approximation algorithms and randomized algorithms. At the end of the course, the students should be able to:


The primary text for the course is Algorithm Design by Jon Kleinberg and Éva Tardos, Addison-Wesley 2006. This will be supplemented by readings from the Algorithms textbook by Jeff Erickson freely available online.

Course Requirements, Evaluation and Grading

Category Value
Weekly Problem Sets 50%
Class participation 5%
Midterm exam 20%
Final exam 25%

Students will be evaluated based upon their overall performance in the course, according to the table above. Exams and problem sets will be graded on the correctness, clarity, thoroughness, and appropriateness of responses.

Problem Sets. Much of the learning in this course happens through practice. Weekly problem sets will be assigned as homework. The released assignments, along with the corresponding due dates, are listed on the Assignments page. There is also a handout giving some tips on how assignments will be graded, both for proof correctness and for correct latex usage.

Class Participation. Learning is a collaborative endeavor and class participation is encouraged and rewarded in this class. Participation can take various forms such as coming to class prepared, staying engaged during lectures, answering and asking questions during lectures and using other tools such as Slack, attempting optional challenge problems on problem sets, keeping me informed of class absences, and showing up to instructor/TA office hours.

Midterm and Final Exam. The midterm and final exams will be 24 hour open-book take-home exams. The final exam will be cumulative, with an emphasis on the second half of the semester. The midterm will begin at 10:40AM on October 28th.

Special Accommodations

Students with disabilities of any kind who may need accommodations for this course are encouraged to contact Dr. G.L. Wallace (Director of Accessible Education) at 597-4672. Also, students experiencing mental or physical health challenges that are significantly affecting their academic work or well-being are encouraged to contact me and to speak with a dean so we can help you find the right resources. The deans can be reached at 597-4171. If you need accommodations for religious observances, you are encouraged to reach out to me. However, last-minute requests are unlikely to be granted.

Computer Science Honor Code

The Honor Code as it applies to non-programming assignments is outlined here (see the section Avoiding Violations). Further information is also given in the syllabus.

Computer Ethics

Students should be aware of and abide by the College's statement on Computer Ethics. Violations including uninvited access to private information and malicious tampering or theft of computer equipment or software are subject to disciplinary action.

Copyright 2020 | Department of Computer Science :: 47 Lab Campus Drive :: Williamstown, MA 01267