Back to the Home Page

EECS 281: Data Structures and Algorithms

University of Michigan - Fall 2006

Prof. Igor Guskov

In this course you will learn fundamental data structures and algorithms that power much of existing software. You will also develop practical skills important in Information Technology, and other applications of Computer Science and Engineering. The programming language used in this course is C++.
The course will start with mathematical and empirical techniques for comparing the performance of algorithms (based on material from EECS 203). It will then cover a number of important data structures and their applications (extending the material from EECS 280), and demonstrate the design of new algorithms. Several software projects form an integral part of the course where you will learn the Standard Template Library, while training in both independent S/W development and teamwork.

Official catalog description

EECS 281. Data Structures and Algorithms
Prerequisites: EECS 203 and 280.
Introduction to algorithm analysis and O-notation; Fundamental data structures including lists, stacks, queues, priority queues, hash tables, binary trees, search trees, balanced trees and graphs; searching and sorting algorithms; recursive algorithms; basic graph algorithms; introduction to greedy algorithms and divide and conquer strategy. Several programming assignments.

Instructional Staff and Locations

Lectures:

Discussion sections:

Communication

The main online resource for this course is the UofM Coursetools Web site. http://ctools.umich.edu All students enrolled in this course will be given acccess to the Web site. Lecture notes, announcements, problem assignments, software handouts will be available on this site. All active users are typically listed to every active user, the site contains chat a rooms and a bullet boards. Additionally, we will send email announcements, often to notify you of new material on Coursetools. When you submit assignment electronically, you will receive feedback by email. Therefore you must check your email regularly. If your mailbox becomes full or if your mail is not delivered, you may miss important announcements about deadlines, etc. Therefore, we do not recommend forwarding your UofM mail elsewhere.

In team projects, communication with your teammates is essential. It is your responsibility to be available for group meetings, respond to email and contribute to your group's work. You will not receive a high score if most of your group's work is done by someone else.

Typically, early exams will not be available. When we announce exam times, it is your responsibility to check for potential time conflicts with other courses you are taking and report it to the teaching staff of all involved courses.

Textbook and References

Required reading:

Recommended additional reading (on reserve in the library):

More references on C++:

Coursework and Grading Policies

Besides attending lectures you are expected to produce evidence of your performance in this course based on:

Your numeric course grade will be computed according to the formula:
CourseGrade = 10% * HWK_average + 25% * Midterm_exam + 30% * Final_exam + 35% * Project_average
After the numeric scores are mapped to a curve, the typical average letter grade in this course ranges from B- to B. Students with 2 or more missing projects will receive a failing grade.

Re-Grading. Requests for re-grading of homework and exam problems must be received by the lecture instructor within one week after the return of the papers to the class. This applies whether or not a student was present on the day they were returned. To request a re-grade, write "Re-grade # < problem number > " in red on the top of the first page of the paper. Do not put any new writing anywhere else on the paper.

Homework Policies

Software Projects

This is the most time-consuming part of the course, therefore please plan accordingly and start working on assignments in advance.

Examinations

The Honor Code

The Honor Code outlines certain standards of ethical conduct for persons associated with the College of Engineering at the University of Michigan. The policies of the Honor Code apply to graduate and undergraduate students, faculty members, and administrators. The Honor Code is based on these tenets: