What is TuPL

TuPL is the programming languages research group at Tufts University. Here, we do research that innovates the way to think about programming. More specifically, we do research in domain-specific programming languages (DSLs), program synthesis, language-based security, type systems, program verification, and more. For example the RedLine Systems research group, a subgroup of TuPL, primarily does research into automatic memory management. We are also interested in programming languages education: check out Norman's foundational programming languages educational material, which will be in the press soon!

If you are interested in doing research with us, please check out (and apply to) the PhD program in computer science at Tufts University.

Who is TuPL


Kathleen Fisher
Professor, Department Chair
Works on domain-specific languages, program synthesis, and high-assurance systems.
Samuel Z. Guyer
Associate Professor
Works on garbage-collection, and dynamic and static program analysis.
Norman Ramsey
Associate Professor
Works on functional programming and computer-science education.
Jeff Foster
Works on programming languages, software engineering, and security.

Current Graduate Students

Diogenes A. Nunez
Advisor: Sam Guyer
Works on application-aware garbage collection.
Karl Cronburg
Advisor: Sam Guyer
Works on memory layout verification and debugging.
Hu Huang
Advisor: Sam Guyer
Works on machine learning and software analysis.
Matthew P. Ahrens
Works on embedded languages and type systems.
Jeanne-Marie Musca
Works on embedded languages and type systems.
Samuel M. Lasser
Works on parsing and verification.
Jared Chandler
Works on high-assurance systems and protocols.
Brian LaChance
Works on fast, executable semantics.
Nate Bragg
Works on resource analysis, and program synthesis.
Milod Kazerounian
Advisor: Jeff Foster
Works on refinement types.
Xuanrui (Ray) Qi
Advisor: Sam Guyer
Works on dependently-typed programming languages.

Current Undergraduate Students

Marilyn Sun
Works on functional programming analyses.

Alumni & Former Members

Raoul Veroy
Mike Shah
Edward Aftandilian
PhD, Google
Nathan P. Ricci
PhD, Microsoft
Remy Wang
Graham Baker
Brandon Lucia
Robert Dockins
MS, Galois
Adam Lewis
Connor Gramazio
Sean Kelley
UG, Palantir
Ben Schwalb
Sara L. Su
Asst Prof, Google
João Dias

TuPL publications

Synthesizing Quotient Lenses, Solomon Maina, Anders Miltner, Kathleen Fisher, Benjamin C. Pierce, David Walker, Steve Zdancewic, ICFP 2018, [ACM]

Synthesizing Bijective Lenses, Anders Miltner, Kathleen Fisher, Benjamin C. Pierce, David Walker, Steve Zdancewic, POPL 2018, [ACM]

WIP: Markedly: a cartographic approach for mapping eDSL implementation costs . Matthew Ahrens, Karl Cronburg, Jeanne-Marie Musca, META 2017, [SPLASH]

Incremental Forest: A DSL for Efficiently Managing Filestores, Jonathan DiLorenzo, Richard Zhang, Erin Menzies, Kathleen Fisher, Nate Foster, OOPSLA 2016, [ACM]

Prioritized Garbage Collection: Explicit GC Support for Software Caches . Diogenes Nunez, Samuel Z. Guyer, , OOPSLA 2016, [ACM]

Autobahn: using genetic algorithms to infer strictness annotations . Yisu Remy Wang, Diogenes Nunez, Kathleen Fisher, Haskell 2016, [ACM]

Symbolic Bayesian Inference by Lazy Partial Evaluation Chung-Chieh Shan, Norman Ramsey POPL 2016 [Semantic Scholar]

MRFy: Remote Homology Detection for Beta-Structural Proteins Using Markov Random Fields and Stochastic Search . Noah M. Daniels, Andrew Gallant, Norman Ramsey, Lenore J. Cowen, TCBB 2015 [ACM]

Adaptive LL(*) Parsing: The Power of Dynamic Analysis, Terence Parr, Sam Harwell, Kathleen Fisher, OOPSLA 2014, [ACM]

Using Formal Methods to Enable More Secure Vehicles: DARPA's HACMS Program, Kathleen Fisher, ICFP 2014, [ACM]

Practices of PLDI, Hans Boehm, Jack Davidson, Kathleen Fisher, Cormac Flanagan, Jeremy Gibbons, Mary Hall, Graham Hutton, David Padua, Frank Tip, Jan Vitek, Philip Wadler, ACM SIGPLAN Notices 2014, [ACM]

On Teaching How to Design Programs: Observations from a Newcomer . Norman Ramsey, ICFP 2014 [ACM]

Elephant Tracks: Portable Production of Complete And Precise GC Traces . Nathan P. Ricci, Samuel Z. Guyer, J. Eliot B. Moss ISMM 2013, [ACM]

Engineering Definitional Interpreters. Jan Midtgaard, Norman Ramsey, Bradford Larsen, PPDF 2013, [ACM]

HACMS: High Assurance Cyber Military Systems, Kathleen Fisher, HILT 2012 [ACM]

An Introduction to Data Representation Synthesis, Peter Hawkins, Martin Rinard, Alex Aiken, Mooly Sagiv, Kathleen Fisher, Communications of the ACM 2012, [ACM]

Concurrent Data Representation Synthesis, Peter Hawkins, Alex Aiken, Kathleen Fisher, Martin Rinard, Mooly Sagiv, PLDI 2012 [ACM]

Reasoning About Lock Placements, Peter Hawkins, Alex Aiken, Kathleen Fisher, Martin Rinard, Mooly Sagiv, ESOP 2012, [ACM]

Nourishing the Future of the Field: The Programming Language Mentoring Workshop 2012, Kathleen Fisher, Ronald Garcia, Stephanie Weirich, PLMW 2012, [ACM]

LearnPADS++: Incremental Inference of Ad Hoc Data Formats, Kenny Q. Zhu, Kathleen Fisher, David Walker, PADL 2012, [ACM]

Experience Report: Haskell in Computational Biology. Noah M. Daniels, Andrew Gallant, Norman Ramsey, ICFP 2012, [ACM]

Forest: A Language and Toolkit for Programming with Filestores, Kathleen Fisher, Nate Foster, David Walker, Kenny Q. Zhu, ICFP 2011, [ACM]

Data Representation Synthesis, Peter Hawkins, Alex Aiken, Kathleen Fisher, Martin Rinard, Mooly Sagiv, PLDI 2011, [ACM]

LL(*): The Foundation of the ANTLR Parser Generator, Terence Parr, Kathleen Fisher, PLDI 2011, [ACM]

Resourceable, Retargetable, Modular Instruction Selection Using a Machine-Independent, Type-Based Tiling of Low-Level Intermediate Code Norman Ramsey, João Dias, POPL 2011, [ACM]

Embedding an Interpreted Language Using Higher-Order Functions and Types, Norman Ramsey, Journal of Functional Programming, 2011, [ACM]

What Can the GC Compute Efficiently? A Language for Heap Assertions at GC Time . Christoph Reichenbach, Neil Immerman, Yannis Smaragdakis, Edward E. Aftandilian, Samuel Z. Guyer, OOPSLA 2010, [ACM]

Breadcrumbs: Efficient Context Sensitivity for Dynamic Bug Detection Analyses . Michael D. Bond, Graham Z. Baker, Samuel Z. Guyer, PLDI 2010, [ACM]

Heapviz: Interactive Heap Visualization for Program Understanding and Debugging . Edward E. Aftandilian, Sean Kelley, Connor Gramazio, Nathan Ricci, Sara L. Su, Samuel Z. Guyer, SOFTVIS 2010, [ACM]

Hoopl: a modular, reusable library for dataflow analysis and transformation. Norman Ramsey, João Dias, Simon Peyton Jones, Haskell Symposium 2010, [ACM]

GC Assertions: Using the Garbage Collector to Check Heap Properties . Edward E. Aftandilian, Samuel Z. Guyer, PLDI 2009, [ACM]

ACM Disclaimer: The documents contained in these pages are included to ensure timely dissemination of scholarly and technical work on a non-commercial basis. Copyright and all rights therein are maintained by the authors or by other copyright holders, notwithstanding that they have offered their works here electronically. It is understood that all persons copying this information will adhere to the terms and constraints invoked by each author's copyright. These works may not be reposted without the explicit permission of the copyright holder.

TuPL Projects

Autobahn Inferring strictness annotations in Haskell programs using a genetic algorithm.
PADS Domain specific language for processing ad-hoc data implemented in C and Haskell.
antlr-haskell Port of ANTLR to Haskell as a quasiquoted embedded domain specific language.
AllStar Work on a provably correct implementation of the ALL(*) parsing algorithm.
Butter A distributed computation DSL for easily spreading around monadic computation in Haskell.
Elephant Tracks A garbage collection tracing tool for Java programs.
Heapviz Tool for visualizing and exploring snapshots of the heap obtained from running Java programs.
Glorious New Code Generator Significant architectural changes to the GHC with a Hoopl-based IR, integrated as of GHC 7.8.
Hoopl A modular, reusable library for dataflow analysis and transformation. See publication.
Teaching Technical Writing A handbook for teaching writing to students in science or engineering.
Build, Prove, Compare For people who will practice the profession of software, programming-language skills are growing steadily more important. Twenty years ago most software practitioners got everything they needed from studying C or C++, maybe supplemented with a little Awk or Perl. Today's practitioners will use a much wider variety of programming languages, not just over the course of their careers, but even in their first jobs. Budding practitioners need a book that gives them something to do, so that they can develop skills. For a number of years I have been working on a book that aims to meet this need.

Join Us - new member orientation

What follows is a guide for new TuPL members to follow upon arrival to Tufts. This is written by grad students, and primarily for grad students. If you're not a new graduate student much of this information may still be pertinent to you, but you should get in touch with your primary TuPL contact to figure out which pieces are pertinent.

Linux home directory

Once you arrive on campus the first thing you should do is head to the EECS systems staff in Halligan Hall room 231, located at the far end of the hall visible while standing in the second floor kitchen. They are available Monday through Friday, 8am to 5:30pm and will help you get setup with a username and password for the EECS network of linux servers, lab computers, and your home directory.

If you ever forget your EECS password but know your Tufts email / UTLN password, you can recover access to your EECS account by going here: https://www.eecs.tufts.edu/~accounts/reset.cgi.


Once you have an EECS account, you can use that to login to https://github.cs.tufts.edu. You must login to GitHub first before we can add you to the Siriusly github organization. To do so, contact our Internal GitHub organizer and request to be added to the Siriusly github organization.

Once you have been granted access to Siriusly on GitHub, please go to https://github.cs.tufts.edu/Siriusly/tupl-website and make a pull request with your contact information added to the bottom of the Current Graduate Students HTML-div of this document. The same applies for new undergraduate students working on a project with any current TuPL member.

If Sam Guyer is your advisor, you will want to ask him to have you added to the Redline Research organization on public github.


Although not specific to TuPL, the Computer Science League of Learning (CSLOL) is the de facto graduate student organization for computer science graduate students at Tufts. To learn more about access to housing in the Medford/Somerville area, which classes to take, and all other non-research related issues please contact a CSLOL executive or member. This can be done by setting up a CSLOL Slack account here with your Tufts email address, by contacting any of the current TuPL graduate students to figure out who the current CSLOL President is, or by contacting @TuftsCSLOL on facebook. As of this writing the website https://sites.tufts.edu/cslol/ is very out of date, but contacting the @TuftsCSLOL admins on facebook is the most likely way to get a response if you have trouble signing up for the CSLOL Slack.


The following Google calendars pertain to research and department events:

TuPL contact info

© Copyright 2018-2019 Tufts University Programming Languages | website made in-house, with love | TuPL

@TuftsCS on Facebook | |