Contact Information
Professor:
Brent Heeringa
Email: heeringa [at] cs.williams.edu
Office: Thompson Chemistry Laboratory 306
Phone: 413.597.4711
Course Information
Course Classroom: Thompson Chemistry 206Course Time: 11.00 - 11.50
Office Hours: Monday and Wednesday from 15.30-17.00
Teaching Assistant: Alexandra E. Constantin
Teaching Assistant Office Hours:Tuesday20.00-23.00
Course Text: Algorithm Design by Jon Kleinberg and Éva Tardos. The text is available at Water Street Books or online
Course Description
From the course catalog:
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 desgin 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 structure. In addition, we will provide an introduction to complexity theory and the complexity classes P and NP.We all have problems. This course is not only about finding solutions to the problems, but rather, good solutions--even provably good solutions. We begin by developing techniques for algorithm analysis--mathematical methods for putting bounds on time and space complexity. We'll study asymptotic analysis, recurrence relations, and some probability theory. Next, we'll delve into problem solving strategies like divide and conquer, randomization, and implicit data structures. We'll highlight these techniques with specific sorting algorithms including mergesort, quicksort, and heapsort. Now that we've got some practice solving problems and analyzing our solutions, we'll try our hand at some algorithms on advanced data structures like graphs and balanced trees. Probing further we'll learn some advanced algorithm design techniques like dynamic programming, linear programming, and maybe even fast Fourier transforms. Finally, we'll look at a set of problems for which no known polynomial time solutions exist. We'll talk about ways of identifying these seemingly different problems, and proving that they are all, in some way, intimately related.
Course Grading
Problems will be assigned at each lecture and due two lecture periods later. For example, during a normal week if I assign a problem on Monday, it would be due at the beginning of class on Friday. Most problems will be worth 5 points each, but occasionally I may assign problems worth more points (particuarly if the problem is challenging). Only your top 200 attempted points worth of problems count toward your grade. I expect this covers all extenuating circumstances such as illness and natural disasters. Problems count 50% toward your grade; a take-home midterm is worth 25% of your grade and a 24-hour, cumulative final is worth another 25% of your grade.
Some points of clarification:- The teaching assistant will give provisional grades on your assignments based on sample solutions I provide. In addition, I'll examine every problem so that I know what topics you've individually mastered. Often, I'll exclusively correct some problems. I will also adjust the provisional grades when appropriate.
- The homework counts significantly toward your grade. I expect you will discuss the problems with members of the class, but I expect you will not discuss the solutions, nor will you write up solutions together. Insightful discussion with others must be cited in your homework solution. You will not lose points for citations, nor will you fall from my good graces; quite the contrary, citation gives credit where credit is due. However, failure to cite properly is considered an honor code violation. Your understanding of the problems should be sufficient enough to recount the key arguments of the solution by yourself.
- Late homework will not be accepted.
- Homework should be written clearly and concisely. Rewrite your proofs if they do not flow well. Messy solutions will be considered wrong. If your handwriting is messy, consider using LaTeX. If your handwriting is not messy, still consider using LaTeX.
- Here's the typical grading scale:
- 5: The solution is clear and correct. This solution would easily find a home in a research article.
- 4: The solution contains a few mistakes, but they are mostly arithmetic or of little significance to the overall argument.
- 3: The solution hits on the main points, but has at least one logical gap.
- 2: The solution contains several logical mistakes, but parts of it are salvageable.
- 1: The solution is just plain wrong.
- 0: No attempt is made at solving the problem.
Midterm
A few notes on the midterm:
- The midterm will be take home. You may only use your course notes and course text.
- It will be assigned Tuesday, 13 March 2007 at 17.00 and due at 11.00 on Friday, 16 March 2007.
- No collaboration is allowed.
- I will answer questions about the midterm for the first 15 minutes of class on Wednesday, 14 October 2006.
- You may turn the midterm in early.