600.226: Data Structures

Fall Semester 2005: September 8, 2005 - December 12, 2005

Contents

Basics

Catalog Description: This course covers the design and implementation of data structures including collections, sequences, trees, and graphs. Other topics include sorting, searching, and hashing. Course work involves both written homework and Java programming assignments. An overview of Java will be provided.

Prerequisite(s): 600.107: Introduction to Programming in Java (preferred) or 600.109: Introduction to Programming in C/C++; 600.120: Intermediate Programming can be helpful as well.

Academic Honesty: It is your responsibility to adhere to the Department Integrity Code and other applicable university regulations. Feel free to email us your questions or concerns.

Coordinates

Discussion List: cs226-discuss@bloat.org (open discussion, but subscribe here first)
Staff List: cs226-staff@bloat.org (to contact all of us, but only staff can subscribe)
Submit Assignment: cs226-submit@bloat.org (we grade your last submission before the deadline)

Instructor: Peter Fröhlich
Office Hours: Thursday & Friday, 4:00 pm - 5:00 pm
Location: 326 New Engineering Building

Lecture: Thursday & Friday, 2:30 pm - 3:45 pm
Location: 301 Shaffer Hall

Teaching Assistant: Ryan Gardner
Office Hours: Tuesday, 2:00 pm - 4:00 pm; Wednesday, noon - 2:00 pm
Location: 225 New Engineering Building

Course Assistant: Michael An
Office Hours: Monday, 2:00 pm - 4:00 pm
Location: 317 Clark Hall

Course Assistant: Chris Weiland
Office Hours: TBD
Location: 225 New Engineering Building

Schedule

Week 1: Introduction and Overview (9/5-9/11)

Lecture:

Reading:

Deadlines:

Week 2: Theoretical Background (9/12-9/18)

Lecture:

Reading:

Deadlines:

Week 3: Fundamental Data Structures (9/19-9/25)

Lecture:

Reading:

Deadlines:

Week 4: Linear Data Structures (9/26-10/2)

Lecture:

Reading:

Deadlines:

Week 5: Hierarchical Data Structures (10/3-10/9)

Lecture:

Reading:

Deadlines:

Week 6: Graph Data Structures (10/10-10/16)

Lecture:

Reading:

Deadlines:

Week 7: Sets and Priority Queues (10/17-10/23)

Lecture:

Reading:

Deadlines:

Week 8: Maps and Hash Tables (10/24-10/30)

Lecture:

Reading:

Deadlines:

Week 9: Search Trees (10/31-11/6)

Lecture:

Reading:

Deadlines:

Week 10: Sorting and Selection (11/7-11/13)

Lecture:

Reading:

Deadlines:

Week 11: Text Processing (11/14-11/20)

Lecture:

Reading:

Deadlines:

Thanksgiving: No Class (11/21-11/27)

Nevertheless it's probably a good idea to work on the project.

Week 12: Memory Management & File Processing (11/28-12/4)

Lecture:

Reading:

Deadlines:

Week 13: Review and Outlook (12/5-12/11)

Lecture:

Reading:

Deadlines:

Week 13+1: Deadline Week (12/12)

Deadlines:

Resources

Books

While there are lots of useful books for this course, the most important one is the following required text on algorithms and data structures. We will be using Java exclusively, so getting the Java version is highly recommended.

The following books are not required but make for good reading anyway. The first is a recent classic, and a reference that can serve you throughout your career (or at least in 600.363/463 :-). It uses pseudo-code throughout and takes quite a different approach overall; it is also much, much longer.

Comparatively few people seem to know about the following book, but I like it quite a bit. It also uses pseudo-code instead of any particular language, but it is relatively concise.

Speaking of concise, the following book is the most concise text on advanced data structures that I know of; it is also a joy to read, although not necessarily the first time you try.

Since we will be using Java exclusively in the course, and since the required text only introduces the bare minimum, it might be a good idea to have some Java text handy as well. Here are a few options, the first one probably being the most useful.

The following is a popular Java text as well, and it's available for free. In don't like big books very much, but at least this one has a decent reputation. :-)

The official language specification for Java is a good resource to have around, but you can easily access it online, no need to shell out money. The official tutorial is slightly out-of-date, but if you have a lot of catching up to do, you won't really care.

If you already know Java but need a concise reference to carry around without building up more muscle (i.e. something that actually fits into the proverbial nutshell) check this one out:

If you are looking for a concise summary of good Java programming style, the following short booklet comes in handy.

Finally two more general books on programming and software development, both highly recommended (not just for this course).

This list is hardly exhaustive. Feel free to email me suggestions if you find a good book on any of the topics we deal with in the course. :-)

Previous Offerings

Standards

Programming Style

When it comes to issues of programming style, it's more important to develop some consistent style than to develop any particular style; this is different in team projects of course, here everyone should agree on a common style. In terms of grading, the safest thing is to pick a style advocated by some "authoritative" entity (without "mixing and matching" of course); here are some possible style guides.

If you are thinking "Safety first!" pick either the first or the second. The fourth has lots of nice reasoning in it, useful if you are ever asked to define a style for a team.

Animations

Miscellaneous

Tools

Teams

The following teams are currently registered. If there are any changes in your team (and of course there shouldn't be any), or if any information below is wrong, be sure to let us know.

Code Busters

I.M.P.

J.Y.A.

Legion of Doom

MaxHeaps

Stack Overflow

Tirodan

Two Girls and a Guy

Workless Recrossed Conquistador

Assessment

Assignments (13): 50%, Midterms (2): 20%, Final (1): 20%, Miscellaneous (unknown number): 10%.

Class Picture

Students in CS 226, Fall 2005
Updated: $Id: index.html 283 2005-12-18 20:29:59Z phf $ Validate: XHTML CSS
Copyright © 2002-2005 Peter H. Fröhlich. All rights reserved.