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



Homework assignments are designed for you to practice certain skills and techniques, they are not graded. If you want feedback on your solutions, please ask in office hours.


Projects are designed to evaluate how well you’ve mastered course material. They are graded. Please check the individual projects for due dates and the structure your solutions should have. See our Piazza site for detailed submission instructions.


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.