E-22
Data Structures
  • Home
  • Lectures
  • Sections
  • Problem Sets
  • Syllabus
  • Schedule
  • Staff
  • Policies
  • Resources
  • Canvas
  • Ed Discussion
  • Gradescope

Computer Science E-22
Data Structures

Welcome!

The first lecture will be held on Tuesday, September 2 from 5:40–7:40 p.m. in One Brattle Square, room 204.

Students can attend in person on campus, participate live online at the time the class meets via web conference, or watch recorded video on demand.

More info is available on the Lectures page, which you can access using the link in the navigation bar. You can also obtain copies of the lecture handouts on that page.

Course information

Course description

This course is a survey of fundamental data structures for information processing — including lists, stacks, queues, trees, and graphs. The course explores the implementation of these data structures (including both array-based and linked representations) and examines classic algorithms that use these structures for tasks such as sorting, searching, and text compression. Techniques for analyzing the efficiency of algorithms are also covered. The Java programming language will be used to demonstrate the concepts discussed in lecture, and programming problems must be completed in Java. Key notions of object-oriented programming, including encapsulation and abstract data types, are emphasized.

Instructor
David G. Sullivan, Ph.D.
Master Lecturer on Computer Science, Boston University (see the staff page for contact information and office hours)
Prerequisites

A good working knowledge of Java or another object-oriented programming language. If your background is in another language, you will need to quickly come up to speed with Java, and you may want to consider first taking Computer Science E-10b. You should also consider taking E-10b if you have had little or no prior experience with recursion or arrays.

For a sense of the level of proficiency that is required, we encourage you to review some sample problems.

Requirements
  • problem sets: five assignments including a combination of written exercises and programming problems. All programming problems must be completed in Java, and they must compile and run in order to be eligible for full credit. Students taking the course for graduate credit will complete additional work on most assignments. In your work for the course, you must follow the course’s policies on academic conduct.
    Important note: The problem sets tend to be fairly time-consuming. You should plan on devoting approximately 10-20 hours of work per week to complete them. If you have other major time commitments, you should reconsider whether to take this course.
  • midterm exam
  • final exam
  • graduate-credit students: Students taking the course for graduate credit must complete additional homework. On most problem sets, the problems required of all students will be worth a total of 100 points; grad-credit students will complete one or two additional problems worth a total of 10 points. These grad-credit problems are typically more challenging than the other problems, and thus grad-credit students should plan to spend approximately 20% more time on the homework.
Textbook
  • Computer Science E-22 coursepack. This will be available for download from the course website. More information will be given during the first lecture.
  • Optional: Data Structures & Algorithms in Java (2nd edition), Robert Lafore (SAMS Publishing, 2003)
  • Optional reference: Core Java, Cay S. Horstmann and Gary Cornell (Prentice Hall, 2005)

Last updated on September 2, 2025.