Introductions, Logistics, and Topic Overview
Tasks:
- Make sure you are registered or email me so I can add you to the mailing list.
- Sign up for the course chat (ASAP)
- Email me with presentation topic preferences and date preferences + constraints (due Wed. 9/11)
Inventing on Principle
Bret Victor's talk Inventing on Principle has inspired hundreds of people to experiment with better UIs for programming. Even better, it has helped people clarify their thinking and crystalize the principles that they work to advance. We'll watch it together, pausing to discuss and expand on several of his points.
Cognitive Dimensions of Notations
- Blackwell et al. Cognitive Dimensions of Notations: Design Tools for Cognitive Technology. Cognitive Technology 2001, pp. 325-341.
- Pane and Myers (1996). Usability Issues in the Design of Novice Programming Systems (Secs. 4-5, 5-6, 5-7, 5-8, 6-2, 6-3, 7-1, 9-1).
Technical Report CMU-CS-96-132, Carnegie Mellon University.
Email me with topic preferences + date preferences and constraints by this date.
Structure Editors
- Go through the Scratch tutorial (5-10 min).
- Watch this 10 minute video about mbeddr.
- Omar, Voysey, Hilton, Aldrich and Hammer (2017). Hazelnut: A Bidirectionally Typed Structure Editor Calculus (Secs 1-2). POPL 2017.
Live Programming Environments
- S. Tanimoto (2013). A Perspective on the Evolution of Live Programming. LIVE 2013.
- Watch this video about Smalltalk / Pharo.
- Kubelka, Robbes, and Bergel. The Road to Live Programming: Insights From the Practice. ICSE 2018.
Graphical and Interactive Notation
- Ko and Myers. Barista: An Implementation Framework for Enabling New Tools, Interaction Techniques and Views in Code Editors. CHI 2006.
- Omar, Yoon, LaToza and Myers. Active Code Completion. ICSE 2012.
Additional Resources:
- J. H. Conway. An enumeration of knots and links, and some of their algebraic properties. In Computational Problems in Abstract Algebra, pp. 329-358. Pergamon, 1970.
- Ni, Ye, Sunshine, Aldrich, and Crane. Substance and Style: domain-specific languages for mathematical diagrams. DSLDI 2017.
No Course Meeting
Usability of Type Systems
- Mayer at al. An Empirical Study of the Influence of Static Type Systems on the Usability of Undocumented Software. OOPSLA 2012.
- Seidel et al. Learning to Blame: Localizing Novice Type Errors with Data-Driven Diagnosis. OOPSLA 2017.
Crowdsourced Programming
- T. D. LaToza, W. B. Towne, C. M. Adriano, and A. van der Hoek. Microtask Programming: Building Software with a Crowd. UIST 2014.
- A. Alaboudi and T. D. LaToza. An Exploratory Study of Live-Streamed Programming. VL/HCC 2019.
Guest Lecture: Programming by Demonstration
Presenter: Rebecca Krosnick (PhD student, University of Michigan)
- R. G. McDaniel and B. A. Myers. Getting more out of programming-by-demonstration. CHI 1999.
- T. J. Li, A. Azaria, and B. A. Myers. SUGILITE: Creating Multimodal Smartphone Automation by Demonstration. CHI 2017.
Overview of Evaluation Methods
- B. A. Myers, A. J. Ko, T. D. LaToza, and Y. Yoon. Programmers are users too: human-centered methods for improving programming tools. In Computer, vol. 49, no. 7, pp. 44-52, July 2016.
- A. J. Ko, T. D. LaToza, and M. Burnett. A practical guide to controlled experiments of software engineering tools with human participants. Empir. Software Eng. (2015)
Project Proposals Due
Send a project proposal by email to me, following the Project Guide. Set up a meeting with me to discuss ideas if you are not sure what you'd like to propose!
Project Proposal Lightning Talks
- Ke Du - Better Semantic Highlighting
- Abhitej Ganta - Profiling Run-Time Data from Prior Executed Code Blocks to Suggest Future Code Blocks
- Jaylin Herskovitz - Contextually Aware Prototyping Tools for Augmented Reality
- Chenhao Li - Numpy Package Real-Time Helper
- Anthony Liu - Turkit2: Flexible Human Computation
- David Moon - Node Staging Mode in Hazel
- Hannah Potter - Evaluating Python Tutor: Improving Novice Programmers’ Understanding of Memory
- Yang Shi - A Visual Dataflow Tool for C Programming
- April Wang - Exploring Programmable Semantic Document Editors
- Yongwei Yuan - Improving the Usability of Variables in Hazel
- Lei Zhang - Type Visualization and Constraints in Immersive Dataflow Programming
No Course Meeting
(Fall Study Break)
Predictive Programming Interfaces
Presenter: Abhitej Ganta, Partner: Yongwei Yuan
- M. Wilson-Thomas. Refactoring made easy with Intellicode! Blog post + video.
Additional Resources
- A. Miltner, et al. On the Fly Synthesis of Edit Suggestions. OOPSLA 2019.
- V. Raychev, M. Vechev, and E. Yahav. Code Completion with Statistical Language Models. PLDI 2014.
- T. Gvero and V. Kuncak. Synthesizing Java Expressions from Free-Form Queries. OOPSLA 2015.
Programmable Physical Environments
Presenter: Chenhao Li, Partner: Jaylin Herskovitz
Educational Programming Environments
Presenter: Hannah Potter, Partner: Yang Shi
- Play with PythonTutor
- Caitlin Kelleher and Randy Pausch. Lowering the barriers to programming: a taxonomy of programming environments and languages for novice programmers. ACM Computing Surveys (CSUR), 37(2):83–137, 2005. Read Sections 1, 2, 3 (stop at 3.1), and 6.
Additional Resources
- Peta Wyeth and Gordon F Wyeth. Electronic blocks: tangible programming elements for preschoolers. INTERACT 2001.
- Elena L Glassman, Jeremy Scott, Rishabh Singh, Philip J Guo, and Robert C Miller. Overcode: visualizing variation in student solutions to programming problems at scale. ACM Transactions on Computer-Human Interaction (TOCHI), 22(2):7, 2015.
User Interfaces for Game Development
Presenter: Lei Zhang, Partner: Chenhao Li
- Jonathan Blow. Game development: harder than you think. Queue, 1(10):28, 2004.
Additional Resources
- Chris Martens. Ceptre: a language for modeling generative interactive systems. AIIDE 2015.
- Conal Elliott and Paul Hudak. Functional reactive animation. ICFP 1997.
- Video: Roller Ball Tutorial in Unity3D
Guest Lecture: Direct Manipulation Programming in Sketch-n-Sketch
Presenter: Brian Hempel (PhD student, University of Chicago)
- Tessa Lau. Why Programming by Demonstration Systems Fail: Lessons for Usable AI. AI Magazine, 2009.
- Brian Hempel, Justin Lubin, and Ravi Chugh. Video Figure for Sketch-n-Sketch: Output-Directed Programming for SVG. UIST 2019.
Additional Resources
- Brian Hempel, Justin Lubin, and Ravi Chugh. Sketch-n-Sketch: Output-Directed Programming for SVG. UIST 2019. Artifact.
- Mikaël Mayer, Viktor Kuncak, Ravi Chugh. Bidirectional Evaluation with Direct Manipulation. OOPSLA 2018. Presentation Video.
- Sean McDirmid. A Live Programming Experience [essay, video]. Future Programming Workshop at Strange Loop 2015.
- Sean McDirmid. The Future of Programming will be Live [video]. Curry On 2016.
- Alan Kay. Doing With Images Makes Symbols. 1987. Part 1, Part 2
API Usability
Presenter: Anthony Liu, Partner: David Moon
- Brad A. Myers and Jeffrey Stylos. Improving API Usability. Communications of the ACM, 2016.
Additional Resources
- Jeffrey Stylos and Brad A. Myers. The implications of method placement on API learnability. FSE 2008.
- Jeffrey Stylos, Andrew Faulring, Zizhuang Yang, and Brad A. Myers. Improving API documentation using API usage information. VL/HCC 2009.
Accessible Programming Interfaces
Presenter: Jaylin Herskovitz, Partner: Lei Zhang
- Suresh Parthsarathy et al. Project CodeTalk
- Naomi Saphra. What Does a Coder Do If They Can't Type?
Additional Resources
- Jacob O. Wobbrock, Shaun K. Kane, Krzysztof Z. Gajos, Susumu Harada, and Jon Froehlich. Ability-Based Design: Concept, Principles and Examples. TACCESS 2011.
- Sean Mealin and Emerson Murphy-Hill. An Exploratory Study of Blind Software Developers. VL/HCC 2012.
Interactive Debuggers
Presenter: David Moon, Partner: Ke Du
- Joseph Lawrance et al. How Programmers Debug, Revisited: An Information Foraging Theory Perspective. IEEE Transactions on Software Engineering Vol. 39 Issue 2, Feb. 2013.
Additional Resources
- A. J. Ko and B. A. Myers. A framework and methodology for studying the causes of software errors in programming systems. Journal of Visual Languages and Computing 16 (2005).
- A. J. Ko and B. A. Myers. Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior. ICSE 2008.
Visual Dataflow Programming
- Rafael Hernandez. PURE DATA: Making it Work 01, a Simple Sequencer. Video (7m35s).
- K. N. Whitley. Visual Programming Languages and the Empirical Evidence For and Against. Journal of Visual Languages & Computing, 1997.
Additional Resources
- T. R. G. Green and M. Petre. Usability analysis of visual programming environments: a 'cognitive dimensions' framework. Journal of Visual Languages & Computing, 1996.
- Luna
- Joshua Horowitz. PANE: Programming with visible data. LIVE 2018.
Program Visualization
Presenter: Yongwei Yuan, Partner: Hannah Potter
- David Meibusch and Nathan Hawes. Frappe: Querying and managing evolving code dependency graphs (video). 2016.
- Maletic, Jonathan I., Andrian Marcus, and Michael L. Collard. A task oriented view of software visualization. First International Workshop on Visualizing Software for Understanding and Analysis. IEEE, 2002.
Additional Resources
- Brown, Marc H. Zeus: A system for algorithm animation and multi-view editing. IEEE Workshop on Visual Languages, 1991.
- Murphy-Hill, Emerson, and Andrew P. Black. An interactive ambient visualization for code smells. SOFTVIS, 2010.
- Wim De Pauw, et al. Visualizing the execution of Java programs. Software Visualization. Springer, Berlin, Heidelberg, 2002. 151-162.
Data Analysis Environments
Presenter: April Wang, Partner: Abhitej Ganta
- Philip Guo. Data Science Workflow: Overview and Challenges. Communications of the ACM. 2013.
- Mary Beth Kery, Marissa Radensky, Mahima Arya, Bonnie E. John, and Brad A. Myers. The Story in the Notebook: Exploratory Data Science using a Literate Programming Tool. CHI 2018.
Additional Resources
- Xiong Zhang and Philip Guo. SD.js: turn any webpage into an example-centric live programming environment for learning data science. UIST 2017.
- Sean Kandel, Andreas Paepcke, Joseph Hellerstein, and Jeffrey Heer. Wrangler: interactive visual specification of data transformation scripts. CHI 2011
- Vega — A Visualization Grammar
- Eunice Jun, Maureen Daum, Jared Roesch, Sarah Chasins, Emery Berger, Rene Just, and Katharina Reinecke. Tea: A High-level Language and Runtime System for Automating Statistical Analysis. UIST 2019.
Interactive Theorem Provers
Presenter: Ke Du, Partner: Anthony Liu (and Michael Adams)
- Play with Sorin Lerner's Proof Game and read more about this effort.
- Sorin Lerner, Stephen R. Foster, and William G. Griswold. Polymorphic Blocks: Formalism-Inspired UI for Structured Connectors. CHI 2015.
Additional Resources
- Talia Ringer et al. QED at Large: A Survcey of Engineering of Formally Verified Software (Chapter 7). Foundations and Trends in Programming Languages: Vol. 5: No. 2-3, pp. 102-281.
- Benjamin C. Pierce et al. Proof by Induction. Software Foundations Vol. 1.
No Course Meeting
(Thanksgiving)
Project Presentations
Project Presentations
Project Presentations, Reflections, and Wrap-Up