Programming tools designed for people ought to derive from human-centered principles: how we think and how we learn. My research is about translating concepts from psychology into practical insights for designing programming tools. In this talk, I will present two kinds of cognitive design principles:
The first principle is about how limitations of cognitive resources, namely working memory, influence the practice of programming. I will discuss my previous work about how cognitive support tools like program slicing can reduce the cognitive load of tasks like program comprehension.
The second principle is about how people build mental models of programming concepts. I will discuss my ongoing work about making the Rust programming language easier to learn by characterizing the space of (mis)conceptions about Rust features like ownership and traits, and designing learning materials to facilitate the acquisition of correct mental models.
Will Crichton is a postdoctoral researcher at Brown University advised by Shriram Krishnamurthi, working on making Rust easier to learn. Will recently completed his Ph.D. at Stanford University advised by Pat Hanrahan and Maneesh Agrawala. His research combines programming language theory and cognitive psychology to design principled and practical tools for programmers. His goal is to enable people to build the computational infrastructure of today that can tackle the problems of tomorrow.
This seminar will also be streamed over Zoom: https://mit.zoom.us/j/93133430238.