![]() |
CS 91.404 (Section 201) |
Analysis of AlgorithmsSpring, 2008 |
|
Instructor: Prof. Karen Daniels Email: kdaniels@cs.uml.edu Office Hours: M,W,F 2:30-3:30 or by appointment; in Olsen Hall 216 Phone: (978)934-3631 |
TA: Jie (Jane) Yang Email: jyang@cs.uml.edu Office Hour: Wednesday 6 p.m.-7 p.m. 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 NOTE THIS IS THE 2001 EDITION : |
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
35%
Midterm Exam
30% (open book)
Final Exam  
30% (open book)
Discretionary  
5% (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.