Samuel Z. Guyer
Associate Professor, Computer Science
Department of Computer Science
Tufts University
News
July 11, 2022 IMPORTANT: A number of students have received email from me purporting to offer research assistantships. These emails are NOT legitimate; they are part of a scam to take your money. I will never request money from any student, and I will never offer to pay a student in any manner other than through the official Tufts payroll. Please check all correspondence that appears to come from me. Feel free to get in touch with me directly if necessary.
Teaching
Fall 2019 -- COMP10: Computer Science for All
Spring 2020 -- COMP181: Compilers
Research Projects
I work in a variety of areas of programming language research, including compilers, optimizations, program analysis, and run-time systems. I am particularly interested in techniques that increase communication and cooperation between the runtime system and the programmer, and among runtime system components. Projects are listed below in roughly chronological order starting with the most current.
Garbage Collection for Server Applications
We are currently looking at new algorithms for garbage collection specifically targeting server applications where heaps are very large, and the time-space tradeoffs are complex. Publications are in the works!
Heap Analysis
We are working on several tools and techniques for understanding the structure of program heaps. Elephant Tracks is a highly precise GC tracing tool based on the Merlin Algorithm (see software). HeapViz is a tool for interactive visualization of heap snapshots.
Elephant Tracks in ISMM 2013
Visualizing the Allocation and Death of Objects in ISMM 2013
Heap Assertions
We developed a family of techniques for checking heap properties at runtime by piggybacking on the garbage collector. They enable very efficient checking of complex properties, such as data structure invariants.
GC Assertions in PLDI 2009
DeAL in OOPSLA 2010
Asynchronous Assertions in OOPSLA 2011
Dynamic bug diagnosis
The idea behind these projects is to collect extra information (cheaply) at runtime that enable better diagnosis of program failures. Origin tracking encodes the origin of a null reference in its value for use in a null pointer exception. Breadcrumbs encode a full stack trace as single value.
Origin Tracking in OOPSLA 2007
Breadcrumbs in PLDI 2010.
Compiler-assisted Garbage Collection
We developed two compiler-based techniques for helping improve the efficiency of garbage collection. Colocation is a form of pretenuring that instruments allocation sites with a "colocation object" that determines where the new object should reside. FreeMe is a static analysis for automatic individual object reclamation, which helps reduce the burden on the collector.
Free Me in PLDI 2006
Dynamic Object Colocation in OOPSLA 2004.
Static analysis for security
The key novelty in this work is a static analysis algorithm that adapts its precision to the client problem. It starts with a fast flow-insensitive, context-insensitive analysis, which it monitors to determine where precision is lost. It then constructs a fine-grained custom precision policy that is used in a second pass of the analysis.
Client-driven Analysis in SCP 2005
my dissertation
Library-level optimization
My dissertation is about providing compiler support for libraries. Libraries are essentially domain-specific languages without compiler support. Our key contribution is an annotation language for expressing library-specific analyses and optimization.
Broadway Compiler in IEEE
Library-level optimization in LCPC 2000
my dissertation
People
Current students
Diogenes Nunez -- PhD student working on memory management
Raoul Veroy -- PhD student working on heap visualization
Mike Shah -- PhD student working on analysis of concurrent programs
Karl Cronburg -- PhD student working on new kinds of debuggers
Moses Huang -- PhD student working on dynamic analysis of control systems software
Former students
Eddie Aftandilian (PhD) now at Google
Nathan Ricci (PhD) now at Microsoft
Software
Elephant Tracks
We have built a GC tracing tool for Java based on the Merlin algorithm that is implemented using a combination of bytecode rewriting and JVMTI callbacks, so it can be used with any JVM that implements the expected APIs. See the Elephant Tracks web-page for downloads and documentation.
Service
Program chair
OOPSLA SRC 2014
ISMM 2014
OOPSLA SRC 2013
NEPLS 2007
Program committees
VEE 2014 PPPJ 2013 PLDI 2012 OOPSLA 2012 CGO 2010 VEE 2010 VEE 2009 VEE 2007 PPPJ 2006 PACT 2005
Personal
Updated August 2014