62 citations · 109 across the 12 of their papers we have counts for
12 papers
Typed Design Patterns for the Functional Era
Will Crichton
This paper explores how design patterns could be revisited in the era of mainstream functional programming languages. I discuss the kinds of knowledge that ought to be represented…
Modular Information Flow through Ownership
Will Crichton, Marco Patrignani, Maneesh Agrawala +1
Statically analyzing information flow, or how data influences other data within a program, is a challenging task in imperative languages. Analyzing pointers and mutations requires…
Automating Program Structure Classification
Will Crichton, Georgia Gabriela Sampaio, Pat Hanrahan
When students write programs, their program structure provides insight into their learning process. However, analyzing program structure by hand is time-consuming, and teachers nee…
The Role of Working Memory in Program Tracing
Will Crichton, Maneesh Agrawala, Pat Hanrahan
Program tracing, or mentally simulating a program on concrete inputs, is an important part of general program comprehension. Programs involve many kinds of virtual state that must…
Documentation Generation as Information Visualization
Will Crichton
Automatic documentation generation tools, or auto docs, are widely used to visualize information about APIs. However, each auto doc tool comes with its own unique representation of…
The Usability of Ownership
Will Crichton
Ownership is the concept of tracking aliases and mutations to data, useful for both memory safety and system design. The Rust programming language implements ownership via the borr…
Analyzing Who and What Appears in a Decade of US Cable TV News
James Hong, Will Crichton, Haotian Zhang +9
Cable TV news reaches millions of U.S. households each day, meaning that decisions about who appears on the news and what stories get covered can profoundly influence public opinio…
Rekall: Specifying Video Events using Compositions of Spatiotemporal Labels
Daniel Y. Fu, Will Crichton, James Hong +7
Many real-world video analysis applications require the ability to identify domain-specific events in video, such as interviews and commercials in TV news broadcasts, or action seq…
Human-Centric Program Synthesis
Will Crichton
Program synthesis techniques offer significant new capabilities in searching for programs that satisfy high-level specifications. While synthesis has been thoroughly explored for i…
From Theory to Systems: A Grounded Approach to Programming Language Education
Will Crichton
I present a new approach to teaching a graduate-level programming languages course focused on using systems programming ideas and languages like WebAssembly and Rust to motivate PL…
Identifying Barriers to Adoption for Rust through Online Discourse
Anna Zeng, Will Crichton
Rust is a low-level programming language known for its unique approach to memory-safe systems programming and for its steep learning curve. To understand what makes Rust difficult…
Scanner: Efficient Video Analysis at Scale
Alex Poms, Will Crichton, Pat Hanrahan +1
A growing number of visual computing applications depend on the analysis of large video collections. The challenge is that scaling applications to operate on these datasets require…