Daniel Spoonhower

Research | Talks | Service | Teaching | Course Work | Contact | Personal

I received my Ph.D. from the School of Computer Science at Carnegie Mellon University in 2009. My advisers were Bob Harper and Guy Blelloch. I now work for a large Internet search company.

Curriculum Vitae


Out of BalanceMy research interests include the design and implementation of programming languages and focus on the application of formal semantics and type theory to program compilation and execution. In particular, I am interested in extending high-level languages to support performance-sensitive programming environments including parallel algorithms and real-time systems.


The aim of my current research is to characterize how different scheduling algorithms can affect the performance of parallel programs. The choice of scheduler can dramatically, and even asymptotically, change the space use of a given program. My approach uses a cost semantics to give an abstract measure of performance. This abstract cost can then be used to reason about program transformations or the performance on concrete architectures with a given scheduler. This cost semantics is also the basis for set of prototype programmer tools.

More details can be found in the companion technical report.

As part of my work on parallelism, I am developing a parallel extension to MLton.

Previously, I gave a talk on this work at DAMP '07, and a summary of the talk is available here:

Real-Time Systems

In earlier work with members of the research staff at IBM, I designed an extension to the Java language that supports high-frequency, real-time tasks. This extension, called Eventrons, was later branded as Expedited Real-Time Threads.

My work on supporting high-frequency tasks is also discussed in the following paper.

Garbage Collection

As part of my work on run-time systems, I also designed and built an incremental garbage collector that provides low latency and supports object pinning. This work has led to some interesting observations on the nature of tracing garbage collectors.

I've made an initial release of our collector implementation for Rotor. The benchmarks used in this work are also available online.


Slides from my talk at DAMP '07 are available. This talk gives an introduction to the cost semantics that I have designed to track the use of space in parallel functional programs.

You can download the slides from my talk at PLDI '06. This is a presentation of joint work with my colleagues at IBM Research on support for implementing real-time systems in Java.

The slides from my talk at VEE '05 are also available online. This is a presentation of my work on using page residency to improve collector throughput.

I presented a progress report on my memory management work at SPACE 2004. The goal of this work was to understand the impact of language semantics (e.g. object pinning) on the design and implementation of a real-time collector.


I was a member of the Doctoral Review Committee between 2003 and 2008. The DRC is comprised of both students and faculty, and its members advise the director of the computer science Ph.D. program on a variety of issues including curriculum, recruiting, and facilities.

I was the student observer of the Handshake Committee in 2008.

I am a member of the ConCert Reading Group.

I helped organize the 2006 ICFP Programming Contest where I played the role of "Robot Psychologist" and implemented several resource managers. Many people enjoyed the task, and even though the contest is over you can still download the contest materials and test your skills. You can also read about the results in our report or in the Post-Gazette.


During the fall of 2004, I was the teaching assistant for 15-814 Type Systems for Programming Languages.

I was the teaching assistant for the fall 2003 instance of 15-312 Foundations of Programming Languages.

Course work

15-721 Database Management Systems (Project: An Implementation of View Updates)
15-745 Optimizing Compilers
15-781 Machine Learning
15-814 Type Systems
15-819A3 Specification, Verification and Refinement of Software
15-819A4 Separation Logic
15-819F Type Refinements
15-855 Computational Complexity Theory
80-713 Category Theory
80-820 Categorical Logic


Phone (mobile): (415) 377-6686
Email: ...@cs.cmu.edu
Public key: GPG

spoons xhtml1.0 css2.0