CS 91.404 (Section 201) |
|
Analysis of AlgorithmsFall, 2008 |
|
Instructor: Prof. Benyuan Liu Email: bliu@cs.uml.edu Office Hours: Thursday 3:00-4:30pm, Friday 10:30-12:00pm, or by appointment; in Olsen Hall 210 |
TA: Anwar Saipulla Email: asaipull@cs.uml.edu Office Hour: Wed 1:30 - 2:30 pm, in OS 219A (student lounge) |
|
|
|
|
General Description:
This is a required course for Computer Science majors. It builds on the introduction to data types and data structures that students receive in CSII (91.102).
Learning Outcomes: in Word format.
In this course (91.404) we distinguish between an abstract data type (such as a list, stack, queue, tree, or hash table) and a data structure that represents how the abstract data type is represented and stored in the computer's memory. We learn about algorithms for manipulating information in a variety of fundamental abstract data types and data structures.
Information tasks such as searching, retrieving, inserting, updating, sorting and deleting arise frequently in Computer Science problems that are central to many computer applications. We focus on algorithms to correctly and efficiently accomplish these types of core tasks.
What do we mean by "efficiently?" We measure efficiency in terms of speed and space (storage) usage. We use techniques from theoretical computer science and discrete mathematics for our analyses.
Why does efficiency matter in computing environments
in which processors are very fast and storage space is abundant? Here are two reasons that
have significant practical impact:
- The amount of information continues to explode quickly, and for large amounts of information
the differences in speed and storage requirements across different algorithm/data structure combinations can be huge.
- Some types of problems are inherently difficult and we cannot expect to solve them as efficiently
as we can solve easier ones. It is important to learn to recognize such problems and be
familiar with ways to tackle them.
The algorithms we study represent a variety of important Computer Science problem-solving strategies, or algorithmic paradigms. We examine major characteristics of several algorithmic paradigms.
Prerequisites: Computing III (91.201), Discrete Math I & II (92.321, 92.322), Statistics for Scientists and Engineers (92.386), Calculus I-II (92.131-231).
Required Textbook :
Grading: The course will have 2 exams: one midterm exam and one final exam (see syllabus for expected dates). Each exam is cumulative and open book. Grades will be calculated approximately as follows:
Homework 30%
Midterm Exam 30%
Final Exam 30%
Discretionary 10%(attendance, participation)
Homework: This is primarily a "paper-and-pencil" course whose homework and exams involve writing algorithms using "pseudo-code", establishing their correctness and analyzing their efficiency. Although programming will not be required, programs will be provided whenever possible to illustrate and reinforce concepts. Students are also encouraged to implement their algorithms.