Skip to content

Implement your own type system in 1 hour

Photo of
Hosted By
Nimret S.


• What we'll do
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 1 hour 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 in the use of the Optional type 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. And, you will be ready to use the dozens of available pluggable type-systems that others have already implemented and that are in use at companies such as Amazon, Google, and Uber to improve code quality.

SPEAKER: Michael Ernst
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 ISSTA Impact Award Award (2018), 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:

• What to bring

• Important to know

925 4th Ave, 4th Floor · Seattle, WA