CS 91.404 (Section 201)

Analysis of Algorithms

Spring, 2008


General Information

Announcements (current as of 12 May) in Word format.
Level: Advanced Undergraduate
Category: Required for Computer Science Majors
Credits: 3
Location: OS 402
Time: M, W, F 1:30-2:30
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.


Topics: Algorithms, Data Structures, Time and Space Complexity Analysis

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.

  • Last Updated: 5/12/2008