Create your own type system in 45 minutes


See this talk at Open Source Bridge 2017! Register today!

Accepted Session
Short Form
Scheduled: Thursday, June 22, 2017 from 3:45 – 4:30pm


Don't let programming language designers have all the fun: you can design your own type system that is better than the current one.


Many developers view type theory as abstruse and confusing. It’s not! This talk will show you the four simple components of a type system: the types, their subtyping relationships, how to give a type to each expression in your program, and what operations are illegal. If you specify these four things, you have designed a type system.

We will do exactly that during the course of the presentation. Starting from nothing, in 45 minutes we will create a full-fledged type-checker that detects real errors in real programs. For concreteness, we will implement our type-checker for the Java language, and it will handle all Java constructs, such as generics, subtyping, and lambdas. Our type system will be better than the built-in Java type system: it will detect errors that the Java compiler permits and that would go undetected until run time.

Although our example will use Java, the ideas translate to other languages. Even if you don’t want to implement your own type system, you will come away with a better understanding of type systems and of compile-time verification in general.

Speaking experience

Michael Ernst has given dozens of talks to tens of thousands of developers. His well-received presentations have made him a two-time JavaOne Rock Star. This is a new talk.


  • Mernst headshot

    Michael Ernst

    University of Washington


    Michael D. Ernst is a Professor in the Computer Science & Engineering department at the University of Washington.

    Ernst’s research aims to make software more reliable, more secure, and easier (and more fun!) to produce. His primary technical interests are in software engineering, programming languages, type theory, security, program analysis, bug prediction, testing, and verification. Ernst’s research combines strong theoretical foundations with realistic experimentation, with an eye to changing the way that software developers work.

    Ernst is an ACM Fellow (2014) and received the inaugural John Backus Award (2009) and the NSF CAREER Award (2002). His research has received an ICSE Most Influential Paper Award (2017), an ACM SIGSOFT Impact Paper Award (2013), 8 ACM Distinguished Paper Awards (FSE 2014, ISSTA 2014, ESEC/FSE 2011, ISSTA 2009, ESEC/FSE 2007, ICSE 2007, ICSE 2004, ESEC/FSE 2003), an ECOOP 2011 Best Paper Award, honorable mention in the 2000 ACM doctoral dissertation competition, and other honors. In 2013, Microsoft Academic Search ranked Ernst #2 in the world, in software engineering research contributions over the past 10 years. In 2016, AMiner ranked Ernst #3 among all software engineering researchers ever.

    Dr. Ernst was previously a tenured professor at MIT, and before that a researcher at Microsoft Research.

    More information is available at his homepage: