Sam Tobin-Hochstadt

Tree

The most important decisions a scholar makes are what problems to work on. - James Tobin

Assistant Professor
PLT & PL @ School of Informatics & Computing
Indiana University

Office: Lindley Hall, Room 230C
Email: samth@cs.indiana.edu
Blog: Scripts to Programs
Microblogging: @samth
Curriculum Vitae: pdf

Papers: DBLP, Google Scholar, arXiv, ACM

Software: GitHub

News

I'm looking for new Ph.D students at Indiana University Computer Science, please email me if you are interested.

New paper: Towards Practical Gradual Typing with Asumu Takikawa, Earl Dean, Daniel Felty, Matthias Felleisen, Robert Bruce Findler, Matthew Flatt; to appear at ECOOP 2015

New paper: The Racket Manifesto with Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy; to appear at SNAPL 2015

New paper: Monotonic References for efficient gradual typing with Michael M. Vitousek, Matteo Cimini, Jeremy Siek, and Ronald Garcia; to appear at ESOP 2015

New draft: Pycket: a tracing JIT for a functional language, with Carl Friedrich Bolz, Spenser Bauman, Jeremy Siek, Tobias Pape, Robert Hirschfeld, and Vasily Krilichev.

New draft: Parallel Type-checking with Saturating LVars, with Peter Fogg and Ryan Newton.

New draft: Practical Optional Typechecking for Clojure, with Ambrose Bonnaire-Sargeant and Rowan Davies.

New draft: Contract Monitoring Semantics as Patterns of Communication, with Cameron Swords and Amr Sabry.

I am on the Program Committee for PLDI 2015 and the External Review Committee for POPL 2015.

I organized IFL 2014 at Northeastern University in Boston.

Our paper on Pycket, an experimental JIT compiler for Racket, appeared at DYLA 2014.

Our paper on extending LVars with new effects appeared at PLDI 2014.

Our paper on the network calculus, a formalization of the ideas behind Marketplace, appeared at ESOP 2014

Research Projects

My research focuses on the design and implementation of programming systems. I'm particularly interested in programming languages that support the evolution of software. I primarily work on Racket and Typed Racket as well as with Mozilla Research on JavaScript.

Typed Racket

I created and maintain Typed Racket, a statically-typed dialect of Racket that allows existing untyped Racket programs to be enriched with types.

Papers

Towards Practical Gradual Typing. With Asumu Takikawa, Daniel Felty, Earl Dean, Matthew Flatt, Robert Bruce Findler and Matthias Felleisen.
European Conference on Object-Oriented Programming (ECOOP), July 2015.
[ PDF | Artifact | Documentation ]

Monotonic References for Efficient Gradual Typing. With Jeremy G. Siek, Michael M. Vitousek, Matteo Cimini and Ronald Garcia.
European Symposium on Programming (ESOP), April 2015.
[ PDF ]

Constraining Delimited Control with Contracts. With Asumu Takikawa and T. Stephen Strickland.
European Symposium on Programming (ESOP), March 2013.
[ PDF ]

Gradual Typing for First-class Classes. With Asumu Takikawa, T. Stephen Strickland, Christos Dimoulas and Matthias Felleisen.
Object Oriented Programming, Systems, Languages and Applications (OOPSLA), October 2012.
[ PDF ]

Proceedings of the Third Workshop on Script to Program Evolution.
NU CCIS Technical Report NU-CCIS-12-02, June 2012.
[ PDF ]

Complete Monitors for Behavioral Contracts. With Christos Dimoulas and Matthias Felleisen.
European Symposium on Programming (ESOP), March 2012.
[ PDF ]

Typing the Numeric Tower. With Vincent St-Amour, Matthew Flatt and Matthias Felleisen.
Symposium on Practical Aspects of Declarative Languages (PADL), January 2012.
[ PDF ]

Logical Types for Untyped Languages. With Matthias Felleisen.
International Conference on Functional Programming (ICFP), September 2010.
[ PDF | ACM DL ]

The Design and Implementation of Typed Scheme (Preprint). With Matthias Felleisen.
Accepted for publication in Higher-Order and Symbolic Computation, September 2010.
[ PDF | arXiv ]

Functional Data Structures for Typed Racket. With Hari Prashanth K R.
Workshop on Scheme and Functional Programming, August 2010.
[ PDF | PLaneT Package ]

Typed Scheme: From Scripts to Programs.
PhD Dissertation, Northeastern University, January 2010.
[ PDF ]

Cycles without pollution: a gradual typing poem. With Robert Bruce Findler.
1st International Workshop on Script to Program Evolution (STOP), July 2009.
[ PDF | ACM DL ]

Practical Variable-Arity Polymorphism. With T. Stephen Strickland and Matthias Felleisen.
European Symposium on Programming (ESOP), March 2009.
[ PDF | Springer ]

The Design and Implementation of Typed Scheme. With Matthias Felleisen.
Symposium on Principles of Programming Languages (POPL), January 2008.
[ PDF | ACM DL | Formal Models ]

Interlanguage Migration: From Scripts to Programs. With Matthias Felleisen.
Dynamic Languages Symposium (DLS), October 2006.
[ PDF | ACM DL ]

Talks

Evolving Software From Scripts to Programs, ETH Zurich Department of Computer Science, Zurich, CH, April, 2013.

Evolving Software From Scripts to Programs, Indiana University Department of Computer Science, Bloomington, IN, March, 2013.

Evolving Software From Scripts to Programs, Iowa State University Software Engineering Seminar, Ames, IA, March, 2013.

Evolving Software From Scripts to Programs, University of Idaho Department of Computer Science, Moscow, ID, March, 2013.

Occurrence Typing, Dagstuhl meeting on Foundations of Scripting Languages, Wadern, Germany, January, 2012.

Growing Software: From Scripts to Programs, Oregon State University EECS Colloquium, Corvallis, Oregon, March 2011.

From Scripts to Programs, Indiana University Department of Computer Science, Bloomington, IN, November 2010.

Logical Types for Untyped Languages, International Conference on Functional Programming, Baltimore, MD, September 2010.

Logical Types for Scheme, New England Programming Languages and Systems Symposium, Yale University, April 2010.

Typed Scheme: From Scripts to Programs, Harvard University, Cambridge, MA, February 2010.

Types for Scheme, in Scheme, Boston Lisp Meeting, Boston, MA, December 2009.

Typed Scheme: From Scripts to Programs, Dissertation Defense, Northeastern University, Boston, MA, December 2009.

Typed Scheme: From Scripts to Programs, Sun Microsystems Laboratories, Burlington, MA, September 2009.

The Design and Implementation of Typed Scheme, Symposium in Honor of Mitchell Wand, Boston, MA, August 2009.

Cycles without pollution: a gradual typing poem, 1st International Workshop on Script to Program Evolution, Genoa, Italy, July 2009.

To Type or Not To Type, Northeastern University ACM Speaker Series, Boston, MA, April 2008.

Typed Scheme, Northeastern University CCIS Open House, Boston, MA, March 2008.

The Design and Implementation of Typed Scheme, Symposium on Principles of Programming Languages (POPL), San Fransisco, CA, January 2008.

Types for Untyped Languages, Northeastern University CCIS Open House, Boston, MA, March 2007.

Interlanguage Migration: From Scripts to Programs, Dynamic Languages Symposium (DLS), Portland, OR, October 2006.

Building Languages

Developing Racket, I have helped to build a programmable programming language that allows developers to create custom languages for everything from pattern matching to type checking.

Papers

The Racket Manifesto. With Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay and Jay McCarthy.
Summit on Advances in Programming Languages (SNAPL), May 2015.
[ PDF | HTML ]

Meta-tracing makes a fast Racket. With Carl Friedrich Bolz, Tobias Pape and Jeremy G. Siek.
Workshop on Dynamic Languages and Applications (DYLA), June 2014.
[ PDF | GitHub ]

Taming the Parallel Effect Zoo: Extensible Deterministic Parallelism with LVish. With Lindsey Kuper, Aaron Todd and Ryan Newton.
Conference on Programming Languages Design and Implementation (PLDI), June 2014.
[ PDF | LVish ]

The Network as a Language Construct. With Tony Garnock-Jones and Matthias Felleisen.
European Symposium on Programming (ESOP), April 2014.
[ PDF | Web Page | Marketplace ]

Chaperones and Impersonators: Runtime support for reasonable interposition. With T. Stephen Strickland, Robert Bruce Findler and Matthew Flatt.
Object Oriented Programming, Systems, Languages and Applications (OOPSLA), October 2012.
[ PDF | Web Page | Documentation ]

Optimization Coaching. With Vincent St-Amour and Matthias Felleisen.
Object Oriented Programming, Systems, Languages and Applications (OOPSLA), October 2012.
[ PDF | GitHub ]

Run Your Research: On the Effectiveness of Lightweight Mechanization. With Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay McCarthy, Jon Rafkind and Robert Bruce Findler.
Symposium on Principles of Programming Languages (POPL), January 2012.
[ PDF | Models | Redex ]

Languages as Libraries. With Vincent St-Amour, Ryan Culpepper, Matthew Flatt and Matthias Felleisen.
Conference on Programming Language Design and Implementation (PLDI), June 2011.
[ PDF | ACM DL ]

Extensible Pattern Matching in an Extensible Language (Preprint).
October 2010.
[ PDF | arXiv | Documentation ]

Extensible Pattern Matching in an Extensible Language (Abstract).
Symposium on Implementation and Application of Functional Languages, September 2010.
[ PDF | Utrecht Technical Report ]

Where are you going with those types? (Abstract). With Vincent St-Amour, Matthew Flatt and Matthias Felleisen.
Symposium on Implementation and Application of Functional Languages, September 2010.
[ PDF | Utrecht Technical Report ]

Advanced Macrology and the Implementation of Typed Scheme. With Ryan Culpepper and Matthew Flatt.
Workshop on Scheme and Functional Programming, September 2007.
[ PDF | Proceedings ]

Talks

From Principles to Practice with Class in the First Year, OOPLSA PC Meeting Workshop, Irvine, CA, May 2013.

Languages as Libraries, Dagstuhl meeting on Foundations of Scripting Languages, Wadern, Germany, January, 2012.

Languages as Libraries, Conference on Programming Language Design and Implementation (PLDI), San Jose, MA, June 2011.

Languages as Libraries, MIT CSAIL Programming Languages Working Group, Cambridge, MA, May 2011.

Extensible Pattern Matching in an Extensible Language, Implementation and Application of Functional Languages, Alphen an der Rijn, Netherlands, September 2010.

JavaScript

In collaboration with Mozilla Research and ECMA Technical Committee 39, I am working on the next version of the JavaScript language, focusing on making JavaScript an effective language for building large-scale web applications.

Papers

Modules for JavaScript (Preprint). With Dave Herman.
April 2011.
[ PDF ]

Proposals

Modules and Module Loaders. With Dave Herman.
Drafts from September 2011.

Private Names. With Dave Herman and Allen Wirfs-Brock.
Draft from September 2011.

Talks

Research meets Application: Life on the EcmaScript Committee, Northeastern University Ph.D. Seminar, Boston, MA, 2012.

The Future of the Web: It's coming!, Childrens Hospital developers group, Boston, MA, December 2011.

Fortress

In conjunction with the Sun Labs Programming Language Research Group, I helped to develop Fortress, a new language for high-performance, multicore and scientific computing.

Papers

The Fortress Language Specification. With Eric Allen, David Chase, Joe Hallett, Victor Luchangco, Jan-Willem Maessen, Sukyoung Ryu and Guy Steele.
Sun Microsystems Technical Report, Version 1.0, 2008.
[ PDF ]

A Core Calculus of Metaclasses. With Eric Allen.
Workshop on Foundations of Object-Oriented Languages (FOOL), January 2005.
[ PDF | Proceedings ]

Activities

Teaching

Personal

In the rest of my life, I play Ultimate and I go outside.

My wife, Katie Edmonds, is a post-doc in the Giedroc lab in the IU Chemistry Department.