Topics in Programming Languages: User
Interfaces for Programming
CMSC 32001 (Spring 2023) | Ravi Chugh
Thu Mar 23 11am
Appetizer
Fri Mar 24 11:30am
Thu Mar 30 11am /
Tue Apr 4 3pm / Thu Apr 6 11am
Syntax Highlighting
Fri Apr 7 11am
Fri Apr 14 11am
Haijun Hour
- CrossCode:
Multi-level Visualization of Program Execution
CHI 2023:
Hayatpur, Wigdor, Xia
- Log-it:
Supporting Programming with Interactive, Contextual, Structured, and
Visual Logs
CHI 2023: Jian, Sun, Xia
- DataParticles:
Block-Based and Language-Oriented Authoring of Animated Unit
Visualizations
CHI 2023: Cao, E, Chen, Xia
Thu Apr 20 / Fri
Apr 21 / Thu Apr 27 / Fri Apr 28
CSS
Thu May 4 / Fri May 5
/ Thu May 11 / Fri May 12
Drafts
Thu May 18
Miscellaneous Reading List
Program Comprehension
- Reading
Beside the Lines: Indentation as a Proxy for Complexity Metric
ICPC 2008: Hindle, Godfrey, Holt (SCP
2009)
- From
Indentation Shapes to Code Structures
SCAM 2008: Hindle,
Godfrey, Holt
- Considerations
and Pitfalls for Reducing Threats to the Validity of Controlled
Experiments on Code Comprehension
ESE 2022: Feitelson
- Considerations and
Pitfalls in Controlled Experiments on Code Comprehension
ICPC
2021: Feitelson
- Evaluating
Code Readability and Legibility: An Examination of Human-centric
Studies
ICSME 2020: Oliveira, Bruno, Madeiral, Castor
- No Accounting
for Taste: Supporting Developers’ Individual Choices of Coding
Styles
SCAM 2019: Gomes, Coutinho, Schots
- Understanding the
Effects of Code Presentation
PLATEAU 2015: Jacques,
Kristensson
- Does the
“Refactor to Understand” Reverse Engineering Pattern Improve Program
Comprehension?
CSMR 2005: Du Bois, Demeyer, Verelst
- Determining
the Usefulness of Colour and Fonts in a Programming Task
WPC
1994: Tapp, Kazman
- The Proteus
Presentation System
SDE 1992: Graham, Harrison, Munson
- The Pan
Language-Based Editing System
TOSEM 1992: Ballance, Graham, Van
De Vanter (SDE
1990)
Blocks, Structure Editors
- Getting
Grammars into Shape for Block-based Editors
SLE 2021: Merino,
Beckmann, van der Storm, Hirschfeld, Vinju
- Partial
Parsing for Structured Editors
SLE 2022: Beckmann, Rein, Mattis,
Hirschfeld
- Efficient Development
of Consistent Projectional Editors using Grammar Cells
SLE 2016:
Voelter, Zsabo, Lisson, Kolb, Erdweg, Berger
- Visual
Design for a Tree-Oriented Projectional Editor
<Programming> 2020: Beckmann, Ramson, Rein, Hirschfeld
- Forest: Structural
Code Editing with Multiple Cursors
Onward! 2022: Voinov, Rigger,
Su
- Block-Based
Syntax from Context-Free Grammars
SLE 2020: Merino, van der
Storm
- Frame-Based
Editing
VLSS 2017: Kolling, Brown, Altadmri
- Pencil Code
- Droplet
Blocks in the Classroom
Liveness and Program Visualization
“Richness”
- Math
Augmentation: How Authors Enhance the Readability of Formulas using
Novel Visual Design Practices
CHI 2022: Head, Xie, Hearst
- Augmenting
Scientific Papers with Just-in-Time, Position-Sensitive Definitions of
Terms and Symbols
CHI 2021: Head, Lo, Kang, Fok, Skjonsberg,
Weld, Hearst
- i-LaTeX:
Manipulating Transitional Representations between LATEX Code and
Generated Documents
CHI 2022: Gobert, Beaudouin-Lafon
- Notational
Programming for Notebook Environments
UIST 2022: Arawjo,
DeArmas, Roberts, Basu, Parikh
- Textlets:
Supporting Constraints and Consistency in Text Documents
CHI
2020: Han, Renom, Mackay, Beaudouin-Lafon
- Sorting Out Sorting (video)
1981:
Baecker
Education
- VizProg:
Identifying Misunderstandings By Visualizing Students’ Coding
Progress
CHI 2023: Zhang, Chen, Oney
- Stream
Your Exam to the Course Staff: Asynchronous Assessment via
Student-Recorded Code Trace Videos
SIGCSE 2023: Lim, Politz,
Minnes
- Towards
a Notional Machine for Runtime Stacks and Scope: When Stacks Don’t Stack
Up
ICER 2022: Clements, Krishnamurthi
- Plan
Composition Using Higher-Order Functions
ICER 2022: Rivera,
Krishnamurthi, Goldstone
- Can
Guided Decomposition Help End-Users Write Larger Block-Based Programs? A
Mobile Robot Experiment
OOPSLA 2022: Ritschel, Fronchetti,
Holmes, Garcia, Shepherd
- Structural
Versus Pipeline Composition of Higher-Order Functions
ICFP 2022:
Rivera, Krishnamurthi
- The
Structure and Interpretation of the Computer Science Curriculum
JFP 2004: Felleisen, Findler, Flatt, Krishnamurthi
- DrJava
Publications
Grounded Theory User Studies
Evaluating User Interfaces
Program Synthesis
- Synbit: Synthesizing
Bidirectional Programs using Unidirectional Sketches
OOPSLA
2021: Yamaguchi, Matsuda, David, Wang
- NL2Viz:
Natural Language to Visualization via Constrained Syntax-Guided
Synthesis
FSE 2022: Wu, Le, Tiwari, Gulwani, Radhakrishna,
Radicek, Soares, Wang, Li, Xie
- Type-Directed
Synthesis of Visualizations from Natural Language Queries
OOPSLA
2022: Chen, Pailoor, Barnaby, Criswell, Wang, Durret, Dillig
Data Vis
Spreadsheets
Misc
- Towards
Unified Principles of Interaction
CHItaly 2017:
Beaudouin-Lafon
- Generative Theories
of Interaction
TOCHI 2021: Beaudouin-Lafon, Bodker, Mackay
- Peritext:
A CRDT for Collaborative Rich Text Editing
CSCW 2022: Litt, Lim,
Kleppmann, Van Hardenberg
- Overwatch:
Learning Patterns in Code Edit Sequences
OOPSLA 2022: Zhang,
Bajpaj, Gupta, Ketkar, Allamanis, Barik, Gulwani, Radhakrishna, Raza,
Soares, Tiwari
- Live Coding: A User’s
Manual
2022: Blackwell et al.
- Drawing
Transforms: A Unifying Interaction Primitive to Procedurally Manipulate
Graphics across Style, Space, and Time (demos)
CHI 2023: Hashim,
Hollerer, Jacobs
- “What It Wants Me To Say”: Bridging the Abstraction Gap Between
End-User Programmers and Code-Generating Large Language Models
CHI
2023: Liu, Sarkar, Negreanu, Zorn, Williams, Toronto, Gordon
- Varv:
Reprogrammable Interactive Software as a Declarative Data
Structure
CHI 2022: Borowski, Murray, Bagge, Kristensen,
Satyanarayan, Klokmose
- Bridging
the Gap between Textual and Projectional Editors
Strumenta Blog
2023: Stalla
- Understanding
Version Control as Material Interaction with Quickpose
CHI 2023:
Rawn, Li, Paulos, Chasins
Miscellaneous Reading List
(from 2022)
Bidirectional Programming
Program Synthesis
- Programming
with a Read-Eval-Synth-Loop
OOPSLA 2020: Peleg, Gabay, Itzhaky,
Yahav
- Bottom-up
Synthesis of Recursive Functional Programs using Angelic
Execution
POPL 2022: Miltner, Nunez, Brendel, Chaudhuri,
Dillig
- Interactive
Program Synthesis by Augmented Examples
UIST 2020: Zhang,
Lowmanstone, Wang, Glassman
- Interpretable
Program Synthesis
CHI 2021: Zhang, Chen, Zhu, Vaithilingam,
Wang, Glassman
Multimodal Data Visualization
Structure Editors
Misc
- reCode:
A Lightweight Find-and-Replace Interaction in the IDE for Transforming
Code by Example
UIST 2021: Ni, Sunshine, Le, Gulwani, Barik
- Penrose: From
Mathematical Notation to Beautiful Diagrams
SIGGRAPH 2020: Ye,
Ni, Krieger, Ma’ayan, Wise, Aldrich, Sunshine, Crane
- Addressing
Misconceptions About Code with Always-On Programming
Visualizations
CHI 2014: Lieber, Brandt, Miller
- Design
as Exploration: Creating Interface Alternatives through Parallel
Authoring and Runtime Tuning
UIST 2008: Hartmann, Yu, Allison,
Yang, Klemmer
- Self-Disclosing
Design Tools: A Gentle Introduction to End-User Programming
DIS
1995: DiGiano, Eisenberg
- Categories
and Completeness of Visual Programming and Direct Manipulation
AVI 2020: McGuffin, Fuhrman
- Fluid,
An Environment for Digital Art-Making
MIT 2005 Thesis
(Chapter 8): Downie
- Sketching
by Programming in the Choreographic Language Agent
PPIG 2012:
Church, Rothwell, Downie, DeLahunta, Blackwell
- Increasing the
Transparency of Research Papers with Explorable Multiverse
Analyses
CHI 2019: Dragicevic, Jansen, Sarma, Kay,
Chevalier
- A New Medium for
Communicating Research on Programming Languages
HATRA 2021:
Crichton
Grounded Theory User Studies
Evaluating User Interfaces
- Heuristic Evaluation of User Interfaces
CHI 1990: Nielsen,
Molich
- Cognitive Dimensions of Notation
1990: Green
- Theory Development in Visual Language Research: Beyond the Cognitive
Dimensions of Notations (A Response)
VL/HCC 2009: Moody