Skip to main content

Showing 1–16 of 16 results for author: Crichton, W

Searching in archive cs. Search in all archives.
.
  1. arXiv:2401.01257  [pdf, other

    cs.PL

    Profiling Programming Language Learning

    Authors: Will Crichton, Shriram Krishnamurthi

    Abstract: This paper documents a year-long experiment to "profile" the process of learning a programming language: gathering data to understand what makes a language hard to learn, and using that data to improve the learning process. We added interactive quizzes to The Rust Programming Language, the official textbook for learning Rust. Over 13 months, 62,526 readers answered questions 1,140,202 times. First… ▽ More

    Submitted 2 January, 2024; originally announced January 2024.

    Comments: To appear at OOPSLA'24

  2. A Core Calculus for Documents

    Authors: Will Crichton, Shriram Krishnamurthi

    Abstract: Passive documents and active programs now widely comingle. Document languages include Turing-complete programming elements, and programming languages include sophisticated document notations. However, there are no formal foundations that model these languages. This matters because the interaction between document and program can be subtle and error-prone. In this paper we describe several such pro… ▽ More

    Submitted 14 November, 2023; v1 submitted 6 October, 2023; originally announced October 2023.

    Comments: Published at POPL 2024

  3. arXiv:2309.05137  [pdf, other

    cs.PL cs.HC

    Debugging Trait Errors as Logic Programs

    Authors: Gavin Gray, Will Crichton

    Abstract: Rust uses traits to define units of shared behavior. Trait constraints build up an implicit set of first-order hereditary Harrop clauses which is executed by a powerful logic programming engine in the trait system. But that power comes at a cost: the number of traits in Rust libraries is increasing, which puts a growing burden on the trait system to help programmers diagnose errors. Beyond a certa… ▽ More

    Submitted 10 September, 2023; originally announced September 2023.

    Comments: 9 pages, 2 figures

  4. arXiv:2309.04134  [pdf, other

    cs.PL cs.HC

    A Grounded Conceptual Model for Ownership Types in Rust

    Authors: Will Crichton, Gavin Gray, Shriram Krishnamurthi

    Abstract: Programmers learning Rust struggle to understand ownership types, Rust's core mechanism for ensuring memory safety without garbage collection. This paper describes our attempt to systematically design a pedagogy for ownership types. First, we studied Rust developers' misconceptions of ownership to create the Ownership Inventory, a new instrument for measuring a person's knowledge of ownership. We… ▽ More

    Submitted 8 September, 2023; originally announced September 2023.

    Comments: Published at OOPSLA 2023

  5. Typed Design Patterns for the Functional Era

    Authors: Will Crichton

    Abstract: 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 as functional design patterns: architectural concepts that are relatively self-contained, but whose entirety cannot be represented as a language-level abstraction. I present four concrete examples embodying this idea: th… ▽ More

    Submitted 13 July, 2023; originally announced July 2023.

    Comments: To appear at FUNARCH'23 @ ICFP

  6. Modular Information Flow through Ownership

    Authors: Will Crichton, Marco Patrignani, Maneesh Agrawala, Pat Hanrahan

    Abstract: 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 access to a program's complete source. However, programs often use pre-compiled dependencies where only type signatures are available. We demonstrate that ownership types can be used to soundly and precisely analyze info… ▽ More

    Submitted 15 March, 2022; v1 submitted 26 November, 2021; originally announced November 2021.

    Comments: Published at PLDI 2022

  7. Automating Program Structure Classification

    Authors: Will Crichton, Georgia Gabriela Sampaio, Pat Hanrahan

    Abstract: When students write programs, their program structure provides insight into their learning process. However, analyzing program structure by hand is time-consuming, and teachers need better tools for computer-assisted exploration of student solutions. As a first step towards an education-oriented program analysis toolkit, we show how supervised machine learning methods can automatically classify st… ▽ More

    Submitted 15 January, 2021; originally announced January 2021.

    Comments: To appear at SIGCSE 2021

  8. The Role of Working Memory in Program Tracing

    Authors: Will Crichton, Maneesh Agrawala, Pat Hanrahan

    Abstract: 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 be held in memory, such as variable/value pairs and a call stack. In this work, we examine the influence of short-term working memory (WM) on a person's ability to remember program state during tracing. We first confirm… ▽ More

    Submitted 15 January, 2021; originally announced January 2021.

    Comments: To appear at CHI 2021

  9. arXiv:2011.06171  [pdf, ps, other

    cs.PL cs.HC

    The Usability of Ownership

    Authors: Will Crichton

    Abstract: 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 borrow checker, a static analyzer that extends the core type system. The borrow checker is a notorious learning barrier for new Rust users. In this paper, I focus on the gap between understanding ownership in theory versus i… ▽ More

    Submitted 22 September, 2021; v1 submitted 11 November, 2020; originally announced November 2020.

    Comments: HATRA @ SPLASH 2020

  10. arXiv:2011.05600  [pdf, other

    cs.SE cs.HC

    Documentation Generation as Information Visualization

    Authors: Will Crichton

    Abstract: 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 API information. In this paper, I use an information visualization analysis of auto docs to generate potential design principles for improving their usability. Developers use auto docs as a reference by looking up relev… ▽ More

    Submitted 11 November, 2020; originally announced November 2020.

    Comments: To appear at PLATEAU @ SPLASH 2020

  11. arXiv:2008.06007  [pdf, other

    cs.CY cs.MM

    Analyzing Who and What Appears in a Decade of US Cable TV News

    Authors: James Hong, Will Crichton, Haotian Zhang, Daniel Y. Fu, Jacob Ritchie, Jeremy Barenholtz, Ben Hannel, Xinwei Yao, Michaela Murray, Geraldine Moriba, Maneesh Agrawala, Kayvon Fatahalian

    Abstract: 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 opinion and discourse. We analyze a data set of nearly 24/7 video, audio, and text captions from three U.S. cable TV networks (CNN, FOX, and MSNBC) from January 2010 to July 2019. Using machine learning tools, we detect faces… ▽ More

    Submitted 24 January, 2022; v1 submitted 13 August, 2020; originally announced August 2020.

    Comments: Published in KDD 2021 as "Analysis of Faces in a Decade of US Cable TV News". ArXiv draft: 14 pages, 22 figures (15 pages, 16 figures in supplemental materials)

  12. arXiv:1910.02993  [pdf, other

    cs.DB cs.CL cs.CV cs.IR

    Rekall: Specifying Video Events using Compositions of Spatiotemporal Labels

    Authors: Daniel Y. Fu, Will Crichton, James Hong, Xinwei Yao, Haotian Zhang, Anh Truong, Avanika Narayan, Maneesh Agrawala, Christopher RĂ©, Kayvon Fatahalian

    Abstract: 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 sequences in film. Unfortunately, pre-trained models to detect all the events of interest in video may not exist, and training new models from scratch can be costly and labor-intensive. In this paper, we explore the utility… ▽ More

    Submitted 7 October, 2019; originally announced October 2019.

  13. arXiv:1909.12281  [pdf, ps, other

    cs.HC cs.PL

    Human-Centric Program Synthesis

    Authors: Will Crichton

    Abstract: Program synthesis techniques offer significant new capabilities in searching for programs that satisfy high-level specifications. While synthesis has been thoroughly explored for input/output pair specifications (programming-by-example), this paper asks: what does program synthesis look like beyond examples? What actual issues in day-to-day development would stand to benefit the most from synthesi… ▽ More

    Submitted 26 September, 2019; originally announced September 2019.

    Comments: To appear at PLATEAU'19

  14. arXiv:1904.06750  [pdf, ps, other

    cs.PL cs.CY

    From Theory to Systems: A Grounded Approach to Programming Language Education

    Authors: Will Crichton

    Abstract: 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 theory. Drawing on students' prior experience with low-level languages, the course shows how type systems and PL theory are used to avoid tricky real-world errors that students encounter in practice. I reflect on the cu… ▽ More

    Submitted 14 April, 2019; originally announced April 2019.

  15. arXiv:1901.01001  [pdf, ps, other

    cs.HC cs.PL

    Identifying Barriers to Adoption for Rust through Online Discourse

    Authors: Anna Zeng, Will Crichton

    Abstract: 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 to adopt, we surveyed the top Reddit and Hacker News posts and comments about Rust; from these online discussions, we identified three hypotheses about Rust's barriers to adoption. We found that certain key features, idi… ▽ More

    Submitted 4 January, 2019; originally announced January 2019.

    Journal ref: Proceedings of the 9th Workshop on Evaluation and Usability of Programming Languages and Tools, 2018

  16. arXiv:1805.07339  [pdf, other

    cs.CV cs.DC cs.GR

    Scanner: Efficient Video Analysis at Scale

    Authors: Alex Poms, Will Crichton, Pat Hanrahan, Kayvon Fatahalian

    Abstract: 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 requires efficient systems for pixel data access and parallel processing across large numbers of machines. Few programmers have the capability to operate efficiently at these scales, limiting the field's ability to explore new… ▽ More

    Submitted 18 May, 2018; originally announced May 2018.

    Comments: 14 pages, 14 figuers