Csci 231: Introduction to the Design and Analysis of Algorithms
Fall 2007: Tue, Thu 2:30 - 3:55 in Searles 126
This course is an introduction to the design and analysis of
algorithms, building on the concepts from Data Structures (csci
210). It discusses a variety of algorithms for fundamental problems
like searching, sorting and selection, and introduces graphs and
optimization problems. It discusses analysis methods, such as
recurrences and amortization, as well as design approaches such as
divide-and-conquer, dynamic programming, and the greedy approach.
Prerequisites: Csci 210 and (Csci 189
or Math 200 or permission of instructor)
Instructor: Laura Toma
Office: 219 Searles Hall
Email: ltoma at bowdoin
(Official) office hours: Tue, Thus after class
4-5pm. I will normally be in the office the evening before homework is
due, but do not take it for granted and do not rely on it. Also, you
can drop by for a quick question any time I am in the office (and in a
good mood). Or, just send me an email to setup a (different) time.
http://www.bowdoin.edu/~ltoma/teaching/cs231/fall07/. Note that
this is a link from my personal website at Bowdoin.
- Mathematical foundation (growth of functions, summations, recurrences)
- Sorting algorithms (insertion sort, mergesort, quicksort, heapsort, bucket sort, radix sort)
- Searching and data structures (binary search trees, red-black trees, augmented search trees, skip lists)
- Priority queues (binary heap)
- Amortized Analysis (splay trees)
- Paradigms (divide-and-conquer, greedy, dynamic programming)
- Graph Algorithms (traversal, minimum spanning tree, shortest paths)
Cormen, Leiserson, Rivest and Stein,
Introduction to Algorithms, 2nd Edition, McGraw Hill, New York, 1990. (bugs).
Other good reference books include:
- D. Kozen,
The Design and Analysis of Algorithms, Springer Verlag,1991.
- A. Aho, J. Hopcroft, and J. Ullman,
Design and Analysis of Algorithms,Addison Wesley 1974.
- G. Brassard and P. Bratley,
Algorithmic - Theory and Practice, Prentice Hall, 1988.
- R. Tarjan,
Data Structures and Network Algorithms,
- C. H. Papadimitriou,
Computational Complexity, Addison Wesley, 1994.
I feel that 'class participation' has become too much of a cliche, so
I am not including it in the list above. Have you seen a class where
participation is not encouraged, and does not count? This class is not
- Homework assignments (approx. 30%).
- Two in-class exams (20% each) and a final exam (30%).
Homework assignments will be
made available online as the semester progresses. They will usualy be
due one week after they are assigned, and solutions will be handed out
the day the homework is due. Because of this no credit is given for
homework received late. For special situations contact Laura (in
- Write your name on each sheet.
- Write the solutions in the space provided.
- Collaboration is allowed, even encouraged, provided that
it helps you study better. Don't overdo it, and remember
that exams are individual! Even if you collaborate with others, you
must write up the solutions individually, and list
the names of the collaborators.
- Homework should be submitted at the beginning
of class on the due date.
- You'll find it a good experience to try typing the solutions, at
least to some problems---it will force you to be concise and clear.