This course assumes prior programming experience in Java (at the level of 15-100) and is designed to expand students' knowledge of computer science and sharpen their programming skills through the implementation of a large project. The course extends object-oriented programming techniques begun in 15-100 and covers data aggregates, data structures (e.g., linked lists, stacks, queues, trees, and graphs), and an introduction to the analysis of algorithms that operate on those data structures. The course is currently taught in Java and, along with 21-127, serves as a prerequisite for 15-211. NOTE: students who receive a grade of C or less in 15-200 should discuss whether they are adequately prepared for 15-211 with their academic advisor.