CS 231: Introduction to the Design and Analysis of Algorithms
Fall 2005: M, W 1:00 - 2:25 in Searles 126
| Grade stats
This course is an introductory undergraduate course on the design
and analysis of algorithms building on the concepts from CS210 (Data
Structures). It introduces a number of basic algorithms for a variety
of problems such as searching, sorting, selection and graph problems
like spanning trees and shortest paths. It discusses analysis
techniques, such as recurrences and amortization, as well as algorithm
design paradigms such as divide-and-conquer, dynamic programming, and
Prerequisites: CS 210 and either CS 189 or Math 200
(or permission of instructor)
Instructor: Laura Toma
Office: 219 Searles Hall
Email: ltoma AT
bowdoin.edu (replace AT with @)
Office hours: M,W after class 2:30-4pm. 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.
Class Email: csci231 AT bowdoin.edu (replace AT
Class webpage: http://www.bowdoin.edu/~ltoma/teaching/cs231/fall05/
- 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.
- Homework assignments (approx. 30%).
- Two in-class exams (20% each) and a final exam (30%).
- Class participation (tiebreaker).
Homework assignments will be
made available online as the semester progresses. Since solutions are
handed out the day the homework is due, no credit is given for
homework problem solutions received late. For special situations
contact Laura (in advance).
- 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.
- It would be nice if you try to type the solutions, at least to