This course is an introduction to the design and analysis of algorithms.

- It introduces a variety of fundamental problems like searching, sorting and selection, graphs and optimization.
- It discusses a variery of solutions to these problems, while illustrating design techniques such as divide-and-conquer, dynamic programming, greedy approach.
- It discusses methods for proving correctness and analysing the efficiency of these solutions.

The class is purely theoretical and involves no programming.

**Prerequisites**: a good mathematical background and good
QR skills. Csci 210 and Math 200 are a plus.

**Instructor**: Laura Toma
*Office:* 219 Searles Hall *Email:* ltoma at bowdoin
**Office hours:** Mon, Tue 3-4:30
For *quick* questions you can drop by any time I am in the office.

If you cannot come during office hours, send me an email to make another appointment.

**TA:** none this semester

**Class webpage:**
*http://www.bowdoin.edu/~ltoma/teaching/cs231/fall11/*. Note that
this is a link from my personal website at Bowdoin. This site will
contain all class-related material along the semester. The class does
not have a Blackboard site.

**Main Topics:**

- 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)

**Textbook:**

- Cormen, Leiserson, Rivest and Stein, Introduction to Algorithms, 4th Edition, McGraw Hill, New York, 1990. (bugs).

**Grading policy**

- Homework assignments (approx. 30%).
- In-class quizes and exams (approx 70%).

**Homework**

Homework assignments will be made available online as the semester progresses. They will usualy be due one week after they are assigned, and partial 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 me in advance.

Homework policy:

- 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 is a good experience to try typing the solutions, at least to some problems, given that it will motivate you to be concise and clear. If it does not, I prefer handwriting.

**Make-up classes**

There will be a few times throughout the semester when I will need to skip a class because of conflicting engagements (conferences, committees, etc). I will inform you of the exact dates and we will schedule make-up classes ahead of time.

**Academic Integrity**
You are expected to follow the academic honor code. Collaboration on
homeworks is encouraged, however you are responsible to write the
solutions on your own, and list the names of all your
collaborators. Any violation will be severely punished.