CS 302 - Introduction to Algorithms

Fall 2019
Course Information



Instructor: Ananya Das Christman

Email: achristman 'at' middlebury 'dot' edu

Office Hours: Mon, Fri: 1:30pm - 2:30pm, Wed: 2:30pm - 3:30pm (and by appointment)

Office: Room 209 Shannon


Section A: MWF 10:10am - 11:00am, Room 203 Shannon

Section B: MWF 11:15am - 12:05pm, Room 203 Shannon

Link to Course Schedule & Assignments

Course Announcements:

Link to Course Information Sheet

Course Objective:

This course will focus on the design and analysis of algorithms. Topics include divide and conquer, graph algorithms, randomized algorithms, dynamic programming, and NP-completeness. We will also cover basic techniques for analyzing the efficiency of algorithms.

Learning Goals:

Course Webpages/Resources:


No required text but the following is a good reference and on reserves at Armstrong Library:

Introduction to Algorithms, by Cormen, Leiserson, Rivest, and Stein (CLRS). 3rd edition, Addison Wesley, 2009.  

Some homework problems may come from this book.

Course Grading:



Midterm 1


Midterm 2
Class Participation/Attendance




Assignments will be due on Mondays, Wednesdays, and Fridays so evening tutors will be available (at least) on Sundays, Tuesdays, and Thursdays.

More info will also be posted at go/cstutors.


Much of what is learned in this course will be from trying to solve the homework problems, so make a conscientious effort to complete them well. Some of the problems may be quite challenging so do not be surprised if some of them stump you; you are not expected to solve every homework problem perfectly.

In previous CS courses you may have encountered problems that ask you to apply an algorithm (or technique) to a sample set of data, for example: ''Show the ordering of a preorder traversal on the following tree...'' or ''Draw a Min Binary Heap with the following values...''  While these problems are really good at testing whether you understand an existing algorithm, you will rarely see problems like these in this course. Instead, the majority of the problems will ask you to develop a new algorithm. Since every problem is different, there is no set of steps for designing a new algorithm - you simply have to come up with an idea and check if it works; if it doesn't, go back and try something new. This process requires creativity and more importantly, lots of trial and error, so be prepared to spend a good amount of time on the problem sets. The more you practice coming up with and trying new algorithms, the better you will get at designing them.

Your solutions should be concise, correct, and legible. Understandability of the solution is as necessary as correctness. Expect to lose points if you provide a "correct" solution with an unclear write-up. As with an English paper, do not expect to turn in a first draft: it takes refinement to describe something well. If you can't solve a problem, briefly indicate what you've tried and where the difficulty lies. Don't try to pull one over on me. :)

Problem sets will be assigned roughly every 1.5 weeks, due by the first 5 minutes of class typically using the following schedule: if an assignment is out on Monday, it will be due the following Wednesday; if out on Wednesday, due the following Friday; if out on Friday, due the Monday after the following Monday. You are encouraged to discuss homework problems with classmates, but you must write up your solutions independently. Homework submissions must be typed. I encourage you to use LaTex, but you may use any editor.

Homework Submission

Written homework submissions must:

If you are submitting a homework late and on a day when our class does not meet, please bring it to my office by the appropriate time (i.e., start of class time for 1 late day).

(Optional) Reflections:

After each homework solution is posted (three days after the assignment's due date), you will have the opportunity to earn back a portion of the points that you may have lost on the assignment. After reading and understanding the homework solutions, you may submit a reflection identifying and explaining your errors. Your reflection will be graded by one of your peers using a simple rubric to earn 50% (excellent), 30% (good), 15% (so-so), or 0%(gibberish/garbage) of the points back.  (I will provide more details on both the reflection and the grading rubric).



There will be two midterms and one final.

Midterm 1: Tuesday, October 15, 6-7:30pm (tentative)

Midterm 2: Tuesday, November 19, 6-7:30pm (tentative)


Final Exam:

Section A: Tuesday, December 10, 9:00am-12:00pm

Section B: Wednesday, December 11, 7:00pm-10:00pm

Class Attendance:

Since many of the topics covered in this class will not be directly from the textbook, it is extremely important for you to attend the lectures. Class attendance and participation will also make up a small but important portion of your grade. Your attendance/participation grade will be based on your attending class regularly and showing evidence that you are actively engaged in the class.


Please keep in mind that if you do miss class, you are responsible for any missed material. I will not reiterate material that has already been covered solely for students who missed the original lecture. If you miss class, you are certainly welcome to review topics with me during my office hours, but please do so only after reviewing the notes on line and discussing them with a classmate who was present during the lecture.

Lateness Policy:

You will be allowed three late days for the semester (including weekends/holidays). You must notify me before the due date if you are planning to use a late day (no exceptions). After the three late days, no late assignments will be accepted.

Computer and Cell Phone Policy:

You may use desktop or laptop computers (quietly) during lecture to take notes. You should not use computers during lecture for any other purposes (e.g. email, web browsing, games, work for other classes, etc.). You may not use cell phones during lecture, lab, or exams.

Disabilities Accommodations

Students with documented disabilities who believe that they may need accommodations in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. Assistance is available to eligible students through the ADA Office. Please contact Jodi Litchfield, the ADA Coordinator, at litchfie@middlebury.edu or 802-443-5936 for more information. All discussions will remain confidential.

Academic Honor Code:

Any form of plagiarism, including copying others' solutions or solutions posted on the web, is considered a violation of the honor code and will be heavily penalized. Note that allowing someone else to copy your solutions also violates the honor code. Any assignment that shows signs of plagiarism will be investigated and reported if necessary. Violations will result in a homework grade of 0 and will be reported to the academic judicial board.