CS 311 Algorithms and Complexity
Spring 2007
Welcome to CS311! CS311 is about helping you learn important techniques to solve problems algorithmically. We will study general methods that help us find efficient solutions to a wide range of practical problems. Additionally, we will look at ways to identify problems that are unlikely to have efficient optimal solutions, and find near optimal solutions.
Our study of algorithms is machine and language independent. Much of your work will be analyzing problems, finding algorithmic solutions, and proving that your solution is correct and efficient. However, the best way to truly understand an algorithm is to implement it. Therefore, there will be some programming projects (in Java) during the semester.
All the material for the course will be available on line. You will be able to find them on the web on the course home page, http://www.stonehill.edu/compsci/cs311/.
Kleinberg and Tardos, Algorithm Design, Pearson Addison Wesley, 2006, ISBN 0-321-29535-8
We will be covering material related to the first 8 chapters of the text (and more). You will need to demonstrate your understanding of the algorithms and techniques we study. Understanding an algorithm usually includes being able to:
· identify applications where the algorithm is appropriately used, including understanding the tradeoffs when several are possible;
· explain the steps of the algorithm and motivate its time and space complexity; and
· implement the algorithm.
Your grade is a reflection of my assessment of how well you have mastered the course material. I will use your scores on coursework to determine your grade. The following table shows what my grades mean qualitatively:
|
A |
Demonstrates
mastery of most course topics. |
|
B |
Demonstrates
mastery of most course topics. Occasionally
exceeds minimum requirements for coursework. |
|
C |
Demonstrates
understanding of most course topics. |
|
D |
Demonstrates
understanding of at least some course topics.
|
|
F |
Demonstrates
understanding of few course topics. |
There will be approximately 12 assignments during the semester. Some assignments will be written while others are programming projects. All assignments will be collaborative, which means you can work with one other student on your projects.
No late assignments will be accepted for any reason (including illness, technical problems, system crashes, etc.). Get your assignments done early!
On days that written assignments are due we will have student presentations of solutions. Each individual will have to lead the discussion of at least two solutions during the semester. You will be marked on both your presentation and on your participation in the discussion of other presentations.
There will be no
exams for CS311.