Interactive Program Distillation
Andrew Head
EECS Department, University of California, Berkeley
Technical Report No. UCB/EECS-2020-48
May 15, 2020
This publication is archived. It is kept only for reference purposes, so it is no longer being updated and may not meet accessibility standards. If you need this content in a different format, please email webteam@eecs.berkeley.edu.
http://www2.eecs.berkeley.edu/Pubs/TechRpts/2020/Archive/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