601.226: Data Structures

You’re in the right place if you want to improve your Java programming skills and learn lots about the various ways to organize data efficiently for your applications. You’ll also learn about analysis of algorithms, formal specifications, automated unit testing, performance analysis, and a few more things.


Catalog Description: This course covers the analysis, design, and implementation of data structures including arrays, stacks, queues, linked lists, binary trees, heaps, balanced trees, and graphs. Other topics include sorting, hashing, Java generics, unit testing, and benchmarking. Course work involves both written homework and Java programming assignments.

Prerequisite(s): 601.107: Introductory Programming in Java or 601.220: Intermediate Programming.

Policies: Please read the general course policies and take them to heart. Additional policies specific to this course may be posted at a later date.


Text Books

There is no required text book for this course, but it’s highly recommended that you obtain reference material to supplement lecture. Here are some suggestions.

Algorithms and Data Structures

Programming in Java

Other Resources

Algorithms and Data Structures

Programming in Java

Unix and Linux



Please check the individual assignments for due dates and the structure your solutions should have. See the course policies for detailed submission instructions.

If you have an opinion on these assignments, be it good or bad, please let us know about it. We’re always trying to make these things more enjoyable (if that’s an applicable term? :-).


This is not a schedule. It’s a “log” of what we did, roughly, in each lecture. Don’t expect it to turn into a schedule, it won’t. Also there will eventually be gaps, sorry.