Spring 2006
Williams College
Algorithm Design and Analysis
| Instructor: | Prof. Stacia Wyman |
| Email: | ![]() |
| Phone: | x4711 |
| Office: | TCL 305 |
| Office Hours: | M 1:00-3:00, F 1:00-2:00 and by appointment |
| Teaching Assistant: | Alex Constantin |
| TA Hours: | TBD |
| Meeting Times: | Lecture: MWF 11:00am-12pm |
| Location: | Lecture: TCL 206 |
Announcements
>And a clarification on top down splay trees: if you have a tree where you >are splaying node x, with a normal splay tree, you search on the way down, >then splay on the way up. With a top down tree, you do the search AND the >splay work to splay x on the way down the tree. You are splaying one node, x.
You are splaying one node x, but it may be that the splaying substeps don't directly involve x.
And a hint: the tree resulting from a top-down splay will not necessarily be the same as the tree resulting from a traditional splay. You might consider answering why that is in your solution to this problem.
A splay operation is NOT a splay substep. A splay operation takes a node and splays it to the root.
And a clarification on top down splay trees: if you have a tree where you are splaying node x, with a normal splay tree, you search on the way down, then splay on the way up. With a top down tree, you do the search AND the splay work to splay x on the way down the tree. You are splaying one node, x.
Answer: No, since you are required to write psuedocode for this answer, you may assume the methods on p. 141, as I said in the exam:
but if you want to use removeElement(k), then you have to write the pseudocode for that as well.
Course Description
This course is concerned with investigating methods of designing efficient and reliable algorithms. By carefully analyzing the underlying structure of the problem to be solved it is often possible to dramatically decrease the computationalresources needed to find a solution. Through such analysis one can also verify that an algorithm will perform correctly, as well as accurately estimate its running time and space requirements. We will present several algorithm design strategies that build on data structures and programming techniques introduced in CS 136, including induction, divide-and-conquer, dynamic programming, and greedy algorithms. Particular topics to be considered will include algorithms in graph theory, computational geometry, string processing, and advanced data structures. In addition, an introduction to complexity theory and the complexity classes P and NP will be provided.Course Text

The book is available at Water Street Books, or online (i.e. Half.com) and will be on reserve in Schow. You are responsible for the material in the book co vered by the assigned reading.
There is also a website associated with the book which you may use as a resource:
Evaluation
There will be frequent homework assignments which will count as 55% of your grade. Late assignments are not accepted without permission in advance from me, but one or two of the lowest homework scores will be dropped. We may have a programming project during the semester, which would count as 10% of the homework grade.There will be three take home exams each of which you will have approximately 48 hours to complete. Each exam will count as 15% of your final grade.
Policies