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

Computer Science S-22
Data Structures

Welcome!

Most of the course materials are available on this site using the links in the navigation bar.

Important announcements are being made using Canvas. Make sure that you configure your Canvas account settings so that announcements will be emailed to you immediately; see Problem Set 0 for details. You can also find the archive of all of the announcements here.

Course information

Midterm exam

  • July 15, 3:15-4:15 pm, Maxwell-Dworkin G115
  • Students who are unable to come to campus must arrange for a proctored exam. See the syllabus for more information. Any questions about proctors or proctored exams should be emailed to distance_exams@extension.harvard.edu
  • The exam will cover the lecture notes from the beginning of the course through the material on references at the beginning of the notes on linked lists (the material covered by the questions on references in PS 2).
  • You will be able to use a single 8.5-inch by 11-inch sheet of paper with handwritten notes on both sides.
  • Practice exam
  • Solutions to the practice exam will be available on Canvas as we get closer to the exam.
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 S-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 July 3, 2025.