Instructor
Cyrus Omar (Hi, I'm new faculty!)
Email
Office
4773 Beyster Building
Office Hours
W 4:30-5:30pm or by appointment
Meeting Times
Tuesdays and Thursdays
12:00-1:30pm (feel free to bring lunch)
12:00-1:30pm (feel free to bring lunch)
Meeting Location
1690 Beyster Building
Course Resources
Online Communities
Conferences & Workshops
- LIVE Workshop series
- PX Workshop series
- FPW Workshop series
- PLATEAU Workshop series
- PPIG Workshop series
- TyDe Workshop series
- FARM Workshop series
- VL/HCC Conference series
- ICLC Conference series
- Onward! Conference series
- Strange Loop Conference series
- SIGCHI Conferences & Workshops
- SIGSOFT Conferences & Workshops
- SIGPLAN Conferences & Workshops
Overview
Humans interact with programming languages by way of user interfaces of widely varying design.
This course will provide a broad overview of the literature on user interfaces for programming languages,
covering historic and contemporary designs as well as ongoing research topics.
The emphasis will be on (1) thinking systematically and critically about this large and exciting design space,
and on (2) understanding how as designers we can rigorously evaluate design choices, and designs as a whole, using both qualitative and quantitative methods.
Course Structure
Participation (15%)
Each 90 minute course meeting will include substantial time for discussion. Before some of the course meetings, you will also be asked to do a short (< 30 min) activity (e.g. watching a video, reading, or playing with a tool).Presentations & Presentation Partners (20% + 5%)
Each participant will be asked to lead one course meeting. The Presentation Guide includes more details.
For each such presentation, another person will be assigned as the presentation partner. Their job is to meet with the presenter at least once before the course meeting (no later than 3pm the day before) to provide substantial feedback on a practice presentation.
Compendium Contributions (25%)
Each participant will be asked to write the portions of the companion compendium related to their presentation, with a first draft due one week before the presentation and a final draft due one week after the presentation (to give you time to incorporate points from the discussion). A final round of revisions will be due Dec. 13. The compendium will then be released publicly in mid-December. The Presentation Guide includes more details.Project (35%)
The semester will conclude with a course project. The course project can consist either of:- an implementation of a user interface of the student's design, together with a lightweight evaluation,
- OR a substantial empirical evaluation of an existing user interface for programming.
Schedule
Tues. 9/3 |
Introductions, Logistics, and Topic Overview
Tasks:
|
Thurs. 9/5 |
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.
|
Tues. 9/10 |
Cognitive Dimensions of Notations
Additional Resources:
|
Wed. 9/11 |
Email me with topic preferences + date preferences and constraints by this date.
|
Thurs. 9/12 |
Structure Editors
|
Tues. 9/17 |
Live Programming Environments
|
Thurs. 9/19 |
Graphical and Interactive Notation
Additional Resources:
|
Tues. 9/24 |
No Course Meeting
|
Thurs. 9/26 |
Usability of Type Systems
|
Tues. 10/1 |
Crowdsourced Programming
|
Thurs. 10/3 |
Guest Lecture: Programming by Demonstration
Presenter: Rebecca Krosnick (PhD student, University of Michigan)
Additional Resources
|
Tues. 10/8 |
Overview of Evaluation Methods
|
Wed. 10/9 |
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!
|
Thurs. 10/10 |
Project Proposal Lightning Talks
|
Tues. 10/15 |
No Course Meeting
(Fall Study Break)
|
Thurs. 10/17 |
Predictive Programming Interfaces
Presenter: Abhitej Ganta, Partner: Yongwei Yuan
Additional Resources
|
Tues. 10/22 |
Programmable Physical Environments
Presenter: Chenhao Li, Partner: Jaylin Herskovitz
Additional Resources
|
Thurs. 10/24 |
Educational Programming Environments
Presenter: Hannah Potter, Partner: Yang Shi
Additional Resources
|
Tues. 10/29 |
User Interfaces for Game Development
Presenter: Lei Zhang, Partner: Chenhao Li
Additional Resources
|
Thurs. 10/31 |
Guest Lecture: Direct Manipulation Programming in Sketch-n-Sketch
Presenter: Brian Hempel (PhD student, University of Chicago)
Additional Resources
|
Tues. 11/5 |
API Usability
Presenter: Anthony Liu, Partner: David Moon
Additional Resources
|
Thurs. 11/7 |
Accessible Programming Interfaces
Presenter: Jaylin Herskovitz, Partner: Lei Zhang
Additional Resources
|
Tues. 11/12 |
Interactive Debuggers
Presenter: David Moon, Partner: Ke Du
Additional Resources
|
Thurs. 11/14 |
Visual Dataflow Programming
Additional Resources
|
Tues. 11/19 |
Program Visualization
Presenter: Yongwei Yuan, Partner: Hannah Potter
Additional Resources
|
Thurs. 11/21 |
Data Analysis Environments
Presenter: April Wang, Partner: Abhitej Ganta
Additional Resources
|
Tues. 11/26 |
Interactive Theorem Provers
Presenter: Ke Du, Partner: Anthony Liu (and Michael Adams)
Additional Resources
|
Thurs. 11/28 |
No Course Meeting
(Thanksgiving)
|
Tues. 12/3 |
Project Presentations
|
Thurs. 12/5 |
Project Presentations
|
Tues. 12/10 |
Project Presentations, Reflections, and Wrap-Up
|