CMSC-641 Algorithms (fall 95):
Assumed Material from 441

Algorithms Background

Undergraduate algorithms CMSC-441 is a preprequisite for graduate algorithms CMSC-641. Students in 641 are expected to have taken a strong undergraduate algorithms class, comparable with UMBC's CMSC-441. Students who lack such background should take CMSC-441 before attempting CMSC-641.

Discrete Mathematics Background

Students are also expected to have a strong background in discrete mathematics. In particular, CMSC-203 Discrete Mathematics is a prerequisite for CMSC-441, and Statistics 355 is a required course for admission into the graduate program in computer science. Students who lack a strong background in theorem-proving, problem solving, counting, probability, modeling, and approximation are advised to take CMSC-603 Advanced Discrete Mathematics before attempting CMSC-641.

Programming Background

All students in the graduate program are expected to be able to program on conventional machines, including programming in C in a Unix environment. In particular, CMSC-341 Data Structures is a required course for admission into the graduate program in computer science.

Assumed Chapters from CMSC-441

CMSC-441 and CMSC-641 cover different chapters from the same text:

Each CMSC-641 student is expected to have mastered the material and skills from each of the following chapters covered in CMSC-441 (excluding any starred-sections):

These chapters will not be covered in CMSC-641. To assist students, in fall 1995, Alan Sherman offered three voluntary supplemental review sessions covering fundamental skills from CMSC-441.

This list of assumed chapters is intended to be a minimal list. All sections of 441 should cover this material, in addition to supplemental topics chosen by the instructor.


Important Skills

The most important skills to learn from CMSC-441 are how to design and analyze new algorithms. In addition, the student should be familiar with and be able to apply fundamental algorithms. Similarly, the student should be fluent in fundamental mathematical tools (e.g. asymptotic notations, bounding summations, solving recurrences, proofs of algorithm correctness) useful in the study of algorithms.