Automatic memory management is any technique for managing the memory of programs that does not require explicit release of unused resource (e.g. C's free or C++'s delete). The most common implementation of automatic memory management currently is garbage collection (GC), and virtually all modern language implementations include garbage collectors. Although few programmers are expected to implement GCs in their careers, virtually all will interact with GC'd langauges, so a grasp of GC implementation is valuable in diagnosing memory issues such as performance problems. This course introduces automatic memory management in general, and the state of the art in garbage collection in particular.

Course details

This course is being taught by Prof. Gregor Richards in Fall 2015. Office hours are by request; please email me at .

Note: Due to a bug, some email between 2015-09-28 and 2015-10-01 may have been lost. If you emailed me and I didn't respond, please try again.

This is an implementation-oriented course. Students are expected to be proficient in C or C++, as they will implement several garbage collectors in either of these languages. A basic background in compilers is recommended, as GCs must cooperate with their language compilers, but this is not a compilers course and will not focus on that aspect. A background in operating systems and virtual memory is equally valuable.

This is the first time this course has been taught, so details are subject to change. Students will implement [at least] three garbage collectors, using GGGGC as a framework, and make a short presentation on a recent paper in garbage collection or automatic memory management. The final project will be of the student's choice.

The book The Garbage Collection Handbook is available in the math library as a reference for students.


Projects will be the implementation of garbage collectors, in the context of GGGGC. The version of the GGGGC framework for this course is available here:

GGGGC 2015-10-06

Please note that there has been one bug-fix to GGGGC since this course began, going from version 2015-09-22 to 2015-10-06. The following patch is available:

GGGGC 2015-10-06 patch (from 2015-09-22)

The old version is still available as well:

GGGGC 2015-09-22




Please see slide deck 18 for the overall schedule outline. Projects will be assigned every two weeks. The final project is due on the final Friday. See deck 9 for more information on the final project and presentation.