Instructor: Prof. Richard Chang

Office: ECS 225E

Office Hours: Tuesday & Thursday, 4:00pm - 5:00pm, or by appointment

Telephone: 455-3093

E-mail: chang@gl.umbc.edu

**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.

Last Modified: Thu Feb 1 17:20:34 EST 1996 Richard Chang, chang@gl.umbc.edu