Csci 231: The Design and Analysis of Algorithms

Fall 2010: M, W 11:30 - 12: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 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: Csci 210 and (Csci 189 or Math 200 or permission of the instructor). The goal of the Math prerequisite is to ensure that the students have achieved a certain mathematical maturity, and a dexterity with induction and proofs. When there are no good reasons to postpone Algorithms for another year, we let students take Algorithms and Math 200 at the same time. Occasionaly it is possible to substitute Math200 with a different 200-level math class.

Instructor: Laura Toma
Office: 219 Searles Hall
Email: ltoma at bowdoin
Office hours: Mon, Tue 3-4:30

If you cannot come during these times, send me an email to make another appointment. For quick questions you can drop by any time I am in the office.

Class webpage: http://www.bowdoin.edu/~ltoma/teaching/cs231/fall10/. 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:

• Kleinberg and Tardos, Algorithms.

Other good reference books include:

• Cormen, Leiserson, Rivest and Stein, Introduction to Algorithms, 2nd Edition, McGraw Hill, New York, 1990. (bugs).
• Skienna, The algorithm design manual.

• Homework assignments (approx. 30%).
• Two in-class exams (20% each) and a final exam (30%).
I find 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 an exception.

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.