Time and Place: Tuesday & Thursday 5:30pm-6:45pm, CP 206.
Textbook: Introduction to Algorithms, Cormen, Leiserson and Rivest, McGraw-Hill.
Prerequisites: You should have mastered the material covered in the following courses: CMSC 203 (Discrete Structures), CMSC 341 (Data Structures) and MATH 152 (Calculus and Analytic Geometry II). The material in Chapters 5, 11 and 13 of the textbook (covering sets, elementary data structures and binary search trees) should be familiar. Also, proficiency in the implementation of the elementary data structures (e.g. stacks, queues, linked lists, binary trees and graphs) in PASCAL or C is assumed.
Topics: This course will introduce you to a variety of fundamental algorithms. You will also develop the skills to analyze the running times of these algorithms. At the end of the course, you should be able to design and analyze new algorithms. The material covered in this course will include algorithms for sorting, order statistics, hashing, balanced binary trees, dynamic programming and graphs. If time permits, a selection of advanced topics (such as amortized analysis, NP-completeness, Strassen's algorithm or parallel algorithms) may also be included.
Grading: Your final grade will be based upon homework assignments (40% total), a programming project (10%), Exams 1 & 2 (15% each) and the final exam (20%). It is very important that you do the weekly homework assignments. The homework assignments count for a major portion of your grade --- more than each exam.
Your final letter grade may be curved above the standard formula: 0 <= F < 60, 60 <= D < 70, 70 <= C < 80, 80 <= B < 90, 90 <= A < 100. Under no circumstances will the grades be curved downward. Graduate students may be graded on a separate scale.
Your grade is given for work done during the semester; incomplete grades will only be given for medical illness or other such dire circumstances.
Lecture and Homework Policy: You are expected to attend all lectures. You are responsible for all material covered in the lecture as well as those in the assigned reading. However, this subject cannot be learned simply by listening to the lectures and reading the book. In order to master the material, you need to spend time outside the classroom, to think, to work out the homework and understand the solutions.
There will be a total of 10 homework assignments. The homework average will be computed from your 8 best homework grades. Homework is due at the beginning of lecture. Homework submitted after this time and before the next lecture will receive a 20% late penalty. After that, late homework will not be accepted so that the solutions may be discussed in class.
You are encouraged to work with other students and to consult other reference books. However, you must acknowledge your collaborators and reference materials by listing them on the last page of your homework. Also, you must write up your homework independently. This means you should only have the textbook and your own notes in front of you when you write up your homework --- not your friends notes, your friends homework or other reference material.
You should not have a copy of someone else's homework or project under any circumstance. For example, you should not let someone turn in your homework. Cases of academic dishonesty will be dealt with severely.
Exams: The exams will be closed-book and closed-notes. The dates for Exams 1 and 2 are Tuesday, February 27 and Tuesday, April 23. The final exam will be comprehensive and cover the material from the entire course. The final exam is scheduled for Tuesday, May 14 6pm to 8pm.
Programming Project: There will be one programming project for this course. Details will be provided at a later date.