Computer Science 140 and Mathematics 168
Algorithms
Syllabus, Fall 2002
Professor: Ran (``RON'') Libeskind-Hadas
Office: Olin 1245
Phone: x18976
E-mail: hadas@cs.hmc.edu
Office Hours: TBD
Course Time and Location: Tuesdays and Thursdays, 9:35-10:50 AM in Parsons 2358
Course Assistants: Will Chang, Avani Gadani, Adrian Mettler, Rosie Wacha
Course Homepage:
www.cs.hmc.edu/courses/2002/fall/cs140
What Is This Course About?
This course will introduce you to fundamental algorithm
design and analysis techniques.
By the end of the course, you will have the tools necessary
to design new algorithms for a variety of different kinds of computational
problems and to analyze the efficiency of your algorithms. On the way, you
will learn about a number of important classical algorithms.
Is This Course for You?
The answer is YES! Alright, seriously, if you are registered for CS 140
the prerequisites for this course are Math 55 and CS 70. If
you are registered for Math 168, you may replace CS 70 with Math 131.
Much of our time will be spent carefully analyzing algorithms using
mathematical induction, recurrence relations, and
summation techniques.
On some homeworks there will be short programming assignments.
Any high-level language
(which is defined formally to be an element of {C, C++, Java,
Pascal, SML}) may be used for these assignments.
Text
Introduction to Algorithms, 2nd Edition by T. Cormen, C. Leiserson, R. Rivest, and C. Stein
Attendance
On-time attendance in every class is absolutely required in order to
pass the course.
If you are sick or have a
special reason for missing class, please send Ran e-mail before the class
that you will miss. Otherwise, you are expected to be in class.
Please make sure to arrive on-time as a courtesy to the instructor and your
classmates.
Assignments
There will be two assignments each week. On Tuesdays, you will receive
a short assignment typically comprising 2-3 problems and worth approximately
20-35 points.
This assignment is
due on Thursday at the beginning of class. On Thursdays, you will receive
a longer assignment typically comprising 5-6 problems and worth approximately
65-80 points. This assignment
is due on the following Tuesday at the beginning of class.
Late homeworks will not be accepted unless arrangements have been made with Ran
in advance for special circumstances.
Worksheets
In almost every class, you will be asked to solve a problem on a worksheet.
These worksheets will be turned in at the end of class. If you turn in a
worksheet which exhibits effort, you will receive full credit for it.
Worksheets will not be returned but you can assume that you have received
full credit for it unless you hear otherwise from Ran.
Exams
There will be 3 exams in this course: two exams during the semester and a
comprehensive final exam. Dates and details of the exams will be announced in class.
Grades
The components of the course are worth the following:
Homework: 40 course points
Worksheets: 10 course points
Two "Midterm" Exams: 25 course points
Final Exam: 25 course points
Note: You must turn in all worksheets in order to receive
the 10 points for this component (unless you miss class due to illness or
special circumstances).
Since attendance is required, it is expected that all students will receive
their 10 worksheet points.
Collaboration Policy
Collaboration on homeworks is encouraged. This means that you may
discuss approaches to solving a problem with anyone in the class.
On each submitted homework, please indicate the names of all people
with whom you discussed your solutions.
Copying written solutions from any source (such as person or written source) is
disallowed. There should be no collaboration on the exams.
All parties, including off-campus students,
are expected to follow the Harvey Mudd Honor code.
List of Topics
- Fundamentals of Algorithm Design and Analysis
- Worst-case analysis of algorithms.
- Asymptotics and nonlinear recurrence relations.
- Sorting algorithms.
- Order statistics.
- Divide-and-Conquer paradigm.
- Dynamic programming paradigm.
- Greed paradigm.
- Amortized analysis.
- Fundamental Data Structures
- Union-Find structures.
- Red-Black trees.
- B-Trees.
- Graph Algorithms
- Data structures for graphs.
- Depth-first search and breadth-first search.
- Minimum spanning tree algorithms.
- Shortest path algorithms.
- Network flow algorithms.
- Linear Programming and the Simplex Algorithm
- NP-Completeness and Approximation Algorithms
- Polynomial-time reductions.
- Karp's NP-Complete problems and others.
- Approximation algorithms.
- Advanced Topics