Designing Systems With Types by Adrian Sampson
Types are one of the first concepts a new programmer needs to learn: values can represent strings or integers or colors, and you ignore the difference at your own peril. This talk aims to convince you that type-centric thinking is a fundamental tool for designing unconventional systems. Types are the key to understanding the relationship between a system's design and the way it behaves. By inventing new notions of what a "type" can be, you can change the way people think when they design new hardware and software. I'll demonstrate this kind of expansion through type systems I designed to give computers permission to be incorrect and uncertain while still being useful.
Adrian Sampson is an assistant professor in the computer science department at Cornell. He works on programming languages, computer architecture, and the abstractions that separate them. He worked on approximate computing, the idea that we should allow machines to expose errors to some kinds of applications as a trade-off for computational efficiency. He sees approximate computing as an instance of a broader breakdown of airtight distinctions between hardware and software concerns. Adrian graduated from the University of Washington in 2015 and from Harvey Mudd College in 2009.