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:
- Cormen, Thomas H.; Charles E. Leiserson; and Ronald L. Rivest,
``Introduction to Algorithms,'' MIT Press (Cambridge, MA) and McGraw-Hill
(New York, 1990).
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):
- Fundamentals: 1-6
- Sorting and Order Statistics: 7-10
- Data Structures: 12-14, 22 (Chapter 11 assumed as prerequisite from 341)
- Design Techniques: 16-17
- Graph Algorithms: 23-26
- Topics:
31.2 (Strassen's Algorithm),
33.2 (Euclid's Algorithm),
33.6 (Pingala's "repeated squaring" Algorithm)
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.