Jeremy Siek is a Professor of Computer Science in the School of Informatics and Computing at Indiana University. Jeremy teaches courses in programming, programming languages, compilers, logic, and other areas of computer science. Jeremy designs new language features to help programmers create and use software libraries and domain-specific languages, especially generic and high-performance ones. In particular, with Walid Taha, Jeremy invented the gradual typing approach to mixing static and dynamic type checking within the same language. Prior to that, Jeremy co-authored the Boost Graph Library and attempted to add concepts to C++. Jeremy is a member of the Center for Programming Systems at IU and Jeremy is an Ally for gender equity.
Email: jsiek@indiana.edu, Office: Luddy Hall 3016, Blog, github, Twitter, CV, Calendar, Mastadon: @jeremysiek@types.pl
Books
- The Boost Graph Library (ebook from Pearson, print from Amazon)
- Essentials of Compilation (Racket version: complete draft pdf and available for pre-order for the February 2023 release date from MIT Press, Python version: complete draft pdf and also available for pre-order, release date of August 2023)
Upcoming: I’ll be giving a tutorial on Teaching and Learning Compilers Incrementally at PLDI 2023 on June 17 in Orlando Florida.
Technology Transfer
I’ve been fortunate to see some of my ideas get used in the software industry:
- Microsoft created a gradually-typed dialect of JavaScript, called TypeScript.
- Facebook has added gradual typing to PHP. See the article in Wired magazine.
Facebook has also created Flow, a static type checker for JavaScript.
Sponsors
My group’s research is currently funded by the following sponsors.
- The National Science Foundation awarded the following projects:
- Google.
Thank you!
Recent Papers and Talks
The full list is available on Google Scholar and DBLP. Also, see further below for “authorizer” links to my ACM publications.
- Mechanized Noninterference for Gradual Security. Tianyu Chen and Jeremy G. Siek. Draft on arXiv. November 2022.
- Parameterized cast calculi and reusable meta-theory for gradually typed lambda calculi. Jeremy G. Siek and Tianyu Chen. Article in Journal of Functional Programming. November 2021.
- Blame and coercion: Together again for the first time. Jeremy G. Siek, Peter Thiemann, and Philip Wadler. Article in the Journal of Functional Programming. October 2021.
- Filter Models for Compiler Correctness. Invited Talk at the workshop on Intersection Types and Related Systems (ITRS) 2021. video and slides.
- Toward a Mechanized Encyclopedia of Gradual Typing. Draft paper on arXiv. Talk at University of Chile. July 2019. slides
- Transitivity of Subtyping for Intersection Types. Draft Paper. June 2019. agda arXiv
- Toward Efficient Gradual Typing. Talk at INRIA Gallium. February 21, 2019. slides
Toward efficient gradual typing for structural types via coercions
Andre Kuhlenschmidt, Deyaaeldeen Almahallawi, Jeremy G. Siek
PLDI 2019: Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation, 2019Gradual typing: a new perspective
Giuseppe Castagna, Victor Lanvin, Tommaso Petrucciani, Jeremy G. Siek
Proceedings of the ACM on Programming Languages, 2019.
Teaching
- P423/P523: Compilers (aka. Programming Language Implementation) Fall 2022, Fall 2021, Fall 2020, Fall 2018, Spring 2016, Spring 2014
- C343/H343: Data Structures Fall 2022, Fall 2021, Fall 2019, Fall 2017, Fall 2016, Fall 2015, Fall 2014, Fall 2013
- B505/I500: Applied Algorithms Spring 2021
- B522: Programming Language Foundations Spring 2020, Spring 2015
- B629: Topics in PL: Denotational Semantics Spring 2018
- C++, Short and Sweet, an Online C++ Course for Beginners at Udemy.
Previous courses at Univ. of Colorado:
- Fall 2012: Compiler Construction
- Fall 2011: Fundamentals of Programming Languages
- Fall 2011: Discrete Mathematics for Computer Engineers
- Spring 2011: Discrete Mathematics for Computer Engineers
- Spring 2011: Theorem Proving in Isabelle
- Fall 2010: Compiler Construction
Information for Students at IU
- How do I deal with being on a waitlist during course registration?
- What are the requirements for a CS MS degree?
- What are the requirements for a CS PhD degree?
Students and Post-Doc’s
- Andre Kuhlenschmidt (Ph.D. student, Compilation of Gradually Typed Languages)
- Matthew Heimerdinger (Ph.D. student, Denotational semantics and proofs of compiler correctness)
- Tianyu Chen (Ph.D. student, Gradual information flow types for security)
Alumni
- Deyaaeldeen Almahallawi (Microsoft, Ph.D. thesis: Towards Efficient Gradual Typing via Monotonic References and Coercions)
- Kuang-Chen Lu (Brown Univ., M.S. thesis: Equivalence of Cast Representations in Gradual Typing)
- Michael M. Vitousek (Facebook, Ph.D. thesis: Gradual Typing for Python, Unguarded)
- Chris Wailes (Google, Parallel Programming Languages)
- Matteo Cimini (Assistant Professor, Univ. of Massachusetts Lowell)
- Spenser Bauman (Ph.D. student, Meta-tracing JIT for Racket)
- Di Zhong (Undergraduate Research, now Ph.D. student at Northeastern Univ.)
- Zeina Migeed (Research co-op from Northeastern, now Ph.D. student at UCLA)
- Steev Young (Undergraduate Research in Gradual Typing)
- Josie Bealle (Summer Research Opportunity in Computing)
- Andre Yuri (Summer Research Opportunity in Computing)
- Weiyu Miao (LinkedIn)
Ph.D. thesis: Reflective Metaprogramming - Geoffrey Belter (Apple)
Ph.D. thesis: Efficient Generation of Sequences of Dense Linear Algebra through Auto-Tuning - Shashank Bharadwaj (VMware)
- Jonathan Turner (Microsoft Typescript => Mozilla Rust => self employed)
- Erik Silkensen (Software Engineer, Meta)
- Neelam Agrawal (Senior Software Engineer, Google)
- Sri Teja Basava (Principal Software Engineer, National Instruments)
- Ian Karlin (Principal Engineer, HPC Ecosystems at NVIDIA)
- Justin Gottschlich (Parallel Computing Lab @ Intel Labs)
Ph.D. thesis: Invalidating Transactions: Optimizations, Theory, Guarantees, and Unification - Moss Prescott (SlamData)
M.S. thesis: Speaking for the Trees: a New (Old) Approach to Languages and Syntax - Christopher Schwaab (Ph.D. student at the Univ. of St. Andrews)
- David Broman (Full Prof. at KTH Royal Inst. of Tech., Sweden)
Ph.D. thesis: Meta-Languages and Semantics for Equation-Based Modeling and Simulation
Authorizor (Free) Links to ACM Publications
Toward efficient gradual typing for structural types via coercions
Andre Kuhlenschmidt, Deyaaeldeen Almahallawi, Jeremy G. Siek
PLDI 2019: Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation, 2019Gradual typing: a new perspective
Giuseppe Castagna, Victor Lanvin, Tommaso Petrucciani, Jeremy G. Siek
Proceedings of the ACM on Programming Languages, 2019.Sound gradual typing: only mostly dead
Spenser Bauman, Carl Friedrich Bolz-Tereick, Jeremy Siek, Sam Tobin-Hochstadt
Proceedings of the ACM on Programming Languages, 2017.Gradually typed symbolic expressions
David Broman, Jeremy G. Siek
PEPM ’18 Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, 2017Theorems for free for free: parametricity, with and without types
Amal Ahmed, Dustin Jamner, Jeremy G. Siek, Philip Wadler
Proceedings of the ACM on Programming Languages, 2017.Big types in little runtime: open-world soundness and collaborative blame for gradual type systems
Michael M. Vitousek, Cameron Swords, Jeremy G. Siek
POPL 2017 Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, 2017.Automatically generating the dynamic semantics of gradually typed languages
Matteo Cimini, Jeremy G. Siek
POPL 2017 Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, 2017.The gradualizer: a methodology and algorithm for generating gradual type systems
Matteo Cimini, Jeremy G. Siek
POPL ’16 Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2016.Pycket: a tracing JIT for a functional language
Spenser Bauman, Carl Friedrich Bolz, Robert Hirschfeld, Vasily Kirilichev, Tobias Pape, Jeremy G. Siek, Sam Tobin-Hochstadt
ICFP 2015 Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, 2015.Blame and coercion: together again for the first time
Jeremy Siek, Peter Thiemann, Philip Wadler
PLDI ’15 Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, 2015Reliable Generation of High-Performance Matrix Algebra
Thomas Nelson, Geoffrey Belter, Jeremy G. Siek, Elizabeth Jessup, Boyana Norris
ACM Transactions on Mathematical Software (TOMS), 2015.Design and evaluation of gradual typing for python
Michael M. Vitousek, Andrew M. Kent, Jeremy G. Siek, Jim Baker
DLS ’14 Proceedings of the 10th ACM Symposium on Dynamic languages, 2014Interpretations of the gradually-typed lambda calculus
Jeremy G. Siek, Ronald Garcia
Scheme ’12 Proceedings of the 2012 Annual Workshop on Scheme and Functional Programming, 2012. PDF with correctionsBlame for all
Amal Ahmed, Robert Bruce Findler, Jeremy G. Siek, Philip Wadler
ACM SIGPLAN Notices – POPL ’11, 2011.Threesomes, with and without blame
Jeremy G. Siek, Philip Wadler
POPL ’10 Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, 2010.Gradual typing with unification-based inference
Jeremy G. Siek, Manish Vachharajani
DLS ’08 Proceedings of the 2008 symposium on Dynamic languages, 2008.Concepts: linguistic support for generic programming in C++
Douglas Gregor, Jaakko Järvi, Jeremy Siek, Bjarne Stroustrup, Gabriel Dos Reis, Andrew Lumsdaine
OOPSLA ’06 Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, 2006Essential language support for generic programming
Jeremy G. Siek, Andrew Lumsdaine
ACM SIGPLAN Notices – Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, 2005.A comparative study of language support for generic programming
Ronald Garcia, Jaakko Jarvi, Andrew Lumsdaine, Jeremy G. Siek, Jeremiah Willcock
OOPSLA ’03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, 2003The generic graph component library
Lie-Quan Lee, Jeremy G. Siek, Andrew Lumsdaine
OOPSLA ’99 Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, 1999