The Usable Programming group designs and studies systems that improve the learnability, efficiency, and safety of software development. It replaces the User Interface Group (2002-2017).

RESEARCH PROJECTS

Programming Education

Constellation (2013-now) supports collaborative programming in the Eclipse IDE, particularly designed for active learning in the classroom -- like Google Docs for Eclipse.

Java Tutor (2016-now) is a programming language tutor embedded in the Eclipse IDE.

OverCode (2014-2016) visualizes and explores thousands of solutions to a programming problem. OverCode uses both static and dynamic analysis to cluster similar solutions, lets instructors further filter and cluster solutions based on different criteria, and supports grading and feedback of many solutions at once.

Foobaz (2014-2016) visualizes student variable name choices in a programming problem, and allows instructors to construct variable-name quizzes that are personalized for each student, to spur thinking about good and bad names.

Dear Beta and Dear Gamma (2014-2016) gather peer-authored hints about how to solve or optimize a programming problem, indexed by autograder test case failures or performance metrics.

Caesar (2011-2016) handles peer code review in large programming classes.

Software Development

CilkPride (2016-2017) is an IDE that integrates the performance profiler and race detector for the Cilk parallel programming language. CilkPride aims to make performance and safety information always-available and appropriately-visible in the code editor, in much the same way that syntax highlighting, autoindent, and background compilation make syntactic and semantic errors always visible to the programmer.

Theseus (2012-2014) is a new type of JavaScript debugger that makes dynamic information visible in the code editor. Novel features include real-time code coverage, retroactive breakpoints and stack inspection, and call trees that connect asynchronous callbacks.

Collabode (2009-2012) is a web-based Java software development environment designed to support close, synchronous collaboration between two or more programmers.

Codetrail (2007-2008) is a system that shares information between Eclipse and Firefox so that documentation and other web resources can be easily and automatically connected to source code.

Keyword programming (2005-2008), also known as sloppy programming, is a new programming paradigm that eschews rigid syntax and strives to parse suggestive and loosely grammatical expressions.

PEOPLE

Rob Miller, professor

Max Goldman, lecturer

Julia Lee, MEng (2019-2020)

Mary Zhong, MEng (2019-2020)

SELECTED PAPERS

Conferences & Journals

Elena L. Glassman, Aaron Lin, Carrie J. Cai, Robert C. Miller. "Learnersourcing Personalized Hints." CSCW 2016.

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". Online Learning at Scale Special Issue of the ACM Transactions on Computer-Human Interaction (ACM TOCHI), April 2015.

Elena L. Glassman, Lyla Fischer, Jeremy Scott, and Robert C. Miller. "Foobaz: Variable Name Feedback for Student Code at Scale." UIST 2015.

Tom Lieber, Joel Brandt, Robert C. Miller. "Addressing Misconceptions About Code with Always-On Programming Visualizations." CHI 2014.

Max Goldman, Greg Little, and Robert C. Miller. "Real-Time Collaborative Coding in a Web IDE." UIST 2011.

Sangmok Han, David R. Wallace, and Robert C. Miller. "Code Completion From Abbreviated Input." ASE 2009.

Max Goldman and Robert C. Miller. "Codetrail: Connecting Source Code and Web Resources." Journal of Visual Languages and Computing, v20 n4, 2009, pp. 223-235.

Max Goldman and Robert C. Miller. "Codetrail: Connecting Source Code and Web Resources." VL/HCC 2008, pp. 65-72.

Greg Little and Robert C. Miller. "Keyword Programming in Java." ASE 2007, pp. 84-93.

Greg Little and Robert C. Miller. "Translating Keyword Commands into Executable Code." UIST 2006, pp. 135-144.

Theses

Genghis Chau. "Cilkpride: Always-on Visualizations for Parallel Programming." M.Eng. Thesis, Massachusetts Institute of Technology, February 2017.

Elena L. Glassman. Clustering and Visualizing Solution Variation in Massive Programming Classes. Ph.D. Thesis, Massachusetts Institute of Technology, August 2016.

Stacey Terman. "GroverCode: Code Canonicalization and Clustering Applied to Grading." M.Eng. Thesis, Massachusetts Institute of Technology, June 2016.

Abigail Klein. "Search Tools for Scaling Expert Code Review to the Global Classroom." M.Eng. Thesis, Massachusetts Institute of Technology, August 2015.

Tom Lieber. "Understanding Asynchronous Code." M.S. thesis, Massachusetts Institute of Technology, 2013.

Elena Tatarchenko. "Analysis of Performing Code Review in the Classroom." M.Eng. Thesis, Massachusetts Institute of Technology, May 2012.

Angela Chang. "A Mobile Instructor Interface for Collaborative Software Development Education." M.Eng. Thesis, Massachusetts Institute of Technology, May 2012.

Max Goldman. "Software Development with Real-Time Collaborative Editing." Ph.D. Thesis, Massachusetts Institute of Technology, August 2012.

Mason Tang. "Caesar: A Social Code Review Tool for Programming Education." M.Eng. Thesis, Massachusetts Institute of Technology, 2011.

Greg Little. "Programming with Keywords." M.S. thesis, Massachusetts Institute of Technology, 2007.

Other papers and theses can be found on the archived User Interface Group site.