Andrew Head

EECS Department, University of California, Berkeley

Technical Report No. UCB/EECS-2020-48

May 15, 2020

http://www2.eecs.berkeley.edu/Pubs/TechRpts/2020/EECS-2020-48.pdf

From snippets to tutorials, programmers rely on sample programs to learn and get work done. The process of creating sample programs, however, can be demanding, limiting the dissemination of programming knowledge. To enhance this process, we introduce the concept of program distillation, methods for its implementation, and usability studies verifying its power. Program distillation is the tool-assisted transformation of existing programs into simpler ones, where key ideas are emphasized, and cruft has been removed.

Three interactive tools are introduced for distilling code snippets, notebooks, and tutorials. Each tool contributes novel interactions grounded in proven program analysis techniques. CodeScoop helps programmers extract snippets from existing code through interactive program slicing and simplification. Code gathering tools let a programmer extract subsets of cells from a computational notebook that reproduce key results. And Torii provides a live programming experience for creating output-rich multi-step tutorials. Studies with users reveal that these tools satisfy important needs, support efficient sample program creation, and provide a level of expressiveness not yet available in today’s standard tools.

Advisors: Marti Hearst and Björn Hartmann


BibTeX citation:

@phdthesis{Head:EECS-2020-48,
    Author= {Head, Andrew},
    Title= {Interactive Program Distillation},
    School= {EECS Department, University of California, Berkeley},
    Year= {2020},
    Month= {May},
    Url= {http://www2.eecs.berkeley.edu/Pubs/TechRpts/2020/EECS-2020-48.html},
    Number= {UCB/EECS-2020-48},
    Abstract= {From snippets to tutorials, programmers rely on sample programs to learn and get work done. The process of creating sample programs, however, can be demanding, limiting the dissemination of programming knowledge. To enhance this process, we introduce the concept of program distillation, methods for its implementation, and usability studies verifying its power. Program distillation is the tool-assisted transformation of existing programs into simpler ones, where key ideas are emphasized, and cruft has been removed.

Three interactive tools are introduced for distilling code snippets, notebooks, and tutorials. Each tool contributes novel interactions grounded in proven program analysis techniques. CodeScoop helps programmers extract snippets from existing code through interactive program slicing and simplification. Code gathering tools let a programmer extract subsets of cells from a computational notebook that reproduce key results. And Torii provides a live programming experience for creating output-rich multi-step tutorials. Studies with users reveal that these tools satisfy important needs, support efficient sample program creation, and provide a level of expressiveness not yet available in today’s standard tools.},
}

EndNote citation:

%0 Thesis
%A Head, Andrew 
%T Interactive Program Distillation
%I EECS Department, University of California, Berkeley
%D 2020
%8 May 15
%@ UCB/EECS-2020-48
%U http://www2.eecs.berkeley.edu/Pubs/TechRpts/2020/EECS-2020-48.html
%F Head:EECS-2020-48