This Course at MIT

This Course at MIT pages are part of the OCW Educator initiative, which seeks to enhance the value of OCW for educators.

Course Overview

This page focuses on the course 6.851 Advanced Data Structures as it was taught by Prof. Erik Demaine in Spring 2012.

This course serves as a broad overview of the many different types of data structures, including geometric data structures, like a map, and temporal data structures, as in storage that happens over a time series. This course covers the major directions of research for a wide variety of such data structures. The real motivating question is about making queries super-fast, close to constant time, and independent of the problem size as possible. Very small variations in the problem statement can have a significant impact on how fast queries can be.

Course Outcomes

Course Goals for Students

  • To possess an understanding of the types of data structures covered in the course
  • To feel comfortable with using LaTeX through practice from the problem sets and scribe notes
  • To explore in-depth a research topic in the field of advanced data structures
 

Instructor Insights

In general, I try to focus on the newer developments in the field. At least half the course is dedicated to research that was done in the last decade.

—Prof. Erik Demaine

Below, Prof. Demaine describes various aspects of how he teaches 6.851 Advanced Data Structures.

Dynamic Material

  • This course is all about how to store your data and how to access it efficiently. There are a lot of different meanings of that, such as what the data could be and what kind of accesses you want to do efficiently. It is a big area of research, and one of the oldest areas of computer science. For every type of query you might want to do on your data, there is a corresponding data structure. Most of these structures we know, but for some of them we still do not know the best way to answer these kinds of queries very efficiently.
  • In this course, there is a mixture of material. A lot of old material that was completed in the 70’s was done perfectly, so in those aspects, the subject matter has not changed much. This material is still important, but there has not been much evolution. In general, I try to focus on the newer developments in the field. At least half the course is dedicated to research that was done in the last decade—some of it by me, and some of it by my colleagues. The course, in this sense, is still a moving target.
  • The teaching assistants (TA’s) have shaped the content of the class substantially. Nearly every time I have taught the course, I had a TA who knows data structures really well, but in a somewhat different way from how I do; in such cases, I reserved a few lectures for their topics of expertise. Over the years, I have collected all these different influences from TA’s in the lecture content. I can point and say that one group of lectures was introduced by a particular TA, and that the next few lectures were introduced by another TA. These TA’s have really made the course what it is today.
  • This course was originally modeled after a class at the University of Waterloo, where I was a graduate student. My advisor had taught a course on advanced data structures so the first time I taught this course at MIT, it was closely modeled after what I had experienced as a student. This course has since evolved many times under the TAs’ influences, though there are still parts of the course that reflect the original iteration. I always incorporate new material produced by researchers in the field, and I also reference the materials that have been produced by people who may have taught a similar topic in the past.

Scribe Notes

  • I handwrite notes for all of my lectures and I really like that style of lecture notes. These are the notes that I bring into the classroom and use to write on the blackboard and to remember what to say—though I try not to look at them! Essentially, they are supposed to be what I talk about in class but they are not very detailed. They omit a lot of the things that I remember easily or things that come to me quickly. In the handwritten format, you cannot fill in all the details. The idea of student scribe notes is to be a little more thorough and explain the material in a more textbook-style, especially since there is no official textbook for this course. The exercise is to have students write these scribe notes, which are based on my notes and what was covered in lecture, and try to fill in all the gaps. This is partly just an experience in writing for the students because it is hard to write lecture notes and hard to write a textbook.
  • This course has been offered five times over the years, and while sometimes the lectures change, a portion of the lectures are essentially the same as in previous years. There are usually some scribe notes from the past that students can build upon when constructing their own. Two or three students scribe each lecture. These students also collaborate with past versions of the course, which makes things interesting. The hope is that the notes keep iterating and get better each year.

Problem Sets

  • Similar to how the course is organized, the problem sets are designed to focus on a particular types of data structure. There are problems that are motivated by different models of time travel, what that means, and whether one can prove that time travel is impossible or possible in different models. As we think about these problems, it makes the scientific research a lot more fun by infusing cool, interesting, quirky problems inside of it.

In Spring 2014, this course was offered in the inverted lecture format, and Prof. Demaine also shares his insights on the changes to the course as a result of this new format.

 

Curriculum Information

Prerequisites

Requirements Satisfied

H-Level Graduate Credit

Offered

Typically every other spring semester

The Classroom

  • Tiered lecture hall with tablet arm desks, and chalkboards and projector at the front of the room.

    Lecture

    The professor delivered lectures using the chalkboard to guide the students through the course material.

  • Open-Problem Session (Optional)

    The optional open-problem sessions were held in a conference room where students were able to easily collaborate in groups to work on the problems. The conference room size was able to hold around 30 individuals comfortably.

 

Assessment

The students' grades were based on the following activities:

The color used on the preceding chart which represents the percentage of the total grade contributed by attendance. 10% Attendance
The color used on the preceding chart which represents the percentage of the total grade contributed by class participation. 10% Class participation
The color used on the preceding chart which represents the percentage of the total grade contributed by in-class reports. 20% Assignments
The color used on the preceding chart which represents the percentage of the total grade contributed by essay assignments. 60% Final project
 

Student Information

On average, 69 students take this course each time it is offered.

Breakdown by Year

2/3 undergraduate upperclassmen; 1/3 graduate students

Breakdown by Major

Primarily Computer Science majors

Typical Student Background

This course is a graduate theory course, but many systems students who care a lot about data structures and want to use them within their own research also enroll in the course.

 

How Student Time Was Spent

During an average week students were expected to spend 12–14 hours on the course, roughly divided as follows:

Lecture

3 hours per week
  • Met 2 times per week for 1.5 hours per session; 22 sessions total
  • 21 mandatory lectures were given as traditional chalkboard lectures. An optional, bonus lecture was given at the end of the semester.
 

Out of Class

9 hours per week
  • Scribe notes for one or two lectures during the entire semester
  • Lightweight homework assignments in the form of weekly problem sets
  • Research-oriented final project (paper and presentation)
 

Open-Problem Sessions (Optional)

2 hours per week

To read more about these sessions, refer to the Instructors Insights on open-problem sessions as explained in the context of 6.849 Geometric Folding Algorithms: Linkages, Origami, Polyhedra as it was taught by Prof. Demaine in Fall 2012.

 

Semester Breakdown

WEEK M T W Th F
1 No classes throughout MIT. Lecture session. No session scheduled. Lecture session; optional open-problem session. No session scheduled.
2 No session scheduled. No session scheduled. No session scheduled. No session scheduled. No session scheduled.
3 No classes throughout MIT. No session scheduled. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
4 No session scheduled. Lecture session. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
5 No session scheduled. Lecture session. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
6 No session scheduled. Lecture session. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
7 No session scheduled. Lecture session. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
8 No classes throughout MIT. No classes throughout MIT. No classes throughout MIT. No classes throughout MIT. No classes throughout MIT.
9 No session scheduled. Lecture session. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
10 No session scheduled. Lecture session; project deliverable due. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
11 No classes throughout MIT. No classes throughout MIT. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
12 No session scheduled. Lecture session. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
13 No session scheduled. Lecture session. No session scheduled. Lecture session; problem set due; optional open-problem session. No session scheduled.
14 No session scheduled. Lecture session. No session scheduled. No session scheduled. No session scheduled.
15 No session scheduled. No session scheduled. No session scheduled. Project deliverable due. No classes throughout MIT.
16 No classes throughout MIT. No classes throughout MIT. No classes throughout MIT. No classes throughout MIT. No classes throughout MIT.
Displays the color and pattern used on the preceding table to indicate dates when classes are not held at MIT. No classes throughout MIT
Displays the color used on the preceding table to indicate dates when lecture sessions are held. Lecture session
Displays the symbol used on the preceding table to indicate dates when problem sets are due. Problem set due date
Displays the color used on the preceding table to indicate dates when no class session is scheduled. No class session scheduled
Displays the color used on the preceding table to indicate dates when optional open-problem sessions are held. Open-problem session (optional)
Displays the symbol used on the preceding table to indicate dates when project deliverables are due. Project deliverable due date
 

Course Team Roles

Lead Instructor (Prof. Erik Demaine)

The lead instructor prepares and delivers all of the lectures for the course. Other responsibilities include working with the teaching assistants to select the problems that are posed in the problem sets. Typically, Prof. Demaine offers his ideas of what would be a good problem, but as a group, the course team chooses the ones that make the best problems. Then, among all of those problems, they organize the problems into groups that form the best problem sets.

Teaching Assistant (mostly PhD students, occasionally Master’s students in computer science)

The TA’s handle administrative aspects of the course such as making sure all of the problem sets are available when assigned and grading the problem sets. They also play a role in the design of the problem sets.