RESEARCH PROJECTS

The Usable Programming group designs and studies systems that improve the learnability, efficiency, and safety of software development.

Programming Education

Caesar (2011-now) is a system for peer code review in large programming classes.

Eclipseonut (2013-now) is a system for 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) is a system for gathering peer-authored hints about how to solve or optimize a programming problem, indexed by autograder test case failures or performance metrics.

Online Education

WaitChatter (2014-now) is a system that uses wait time for education. As an extension of instant messaging, WaitChatter presents learning exercises during automatically-detected moments when the user is awaiting an IM response.

Crowdy (2013-2015) is a system for generating educational content for existing how-to videos. By presenting viewers with micro tasks as they watch a video, Crowdy is able to generate high-quality metadata for videos with minimal disruption.

ToolScape (2012-2015)
captures work-in-progress images and step-by-step information
inside video tutorials to support learning new skills in Photoshop.
It features workflows to capture annotations from crowd workers,
or learners watching the same video.

Software Development

CilkPride (2016-now) 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.

Quack (2006-2007) is an Eclipse plugin that applies keyword programming
to Java, using keywords to direct automatic code completion.

Crowd Computing

Cobi (2012-2014) engages an entire academic community in planning a large-scale conference.
Cobi elicits community members' preferences and constraints,
and provides a scheduling tool empowering organizers to take informed actions toward
improving the schedule.

Adrenaline (2011) is a smart camera shutter
driven by a crowd. It captures a short video instead of one frame, then uses the crowd to decide on the best moment. This camera can identify the best smile, catch subjects in mid-air jumps, and decide on the best angle available, all in seconds.

Soylent (2010) is a word processor with a crowd inside: an add-in to Microsoft Word that uses crowd contributions to perform
interactive document shortening, proofreading, and human-language macros.

TurKit (2008-2011) is a Java/JavaScript API for running iterative tasks on Mechanical Turk. You can safely re-execute TurKit
programs without re-running costly side effects on Mechanical Turk, like creating new HITs, but still write your
program in a straightforward imperative manner - there is no need to unravel the program into a state machine.

TweeQL (2010-2012) is a SQL-like query
language that turns the tweetstream into a
stream of data in real-time. Using TweeQL, we can
detect earthquakes, map the weather, and find
out how people on Twitter feel about
politicians.

TwitInfo (2010-2012) provides a
timeline-based visualization of topics as they
are discussed on Twitter. The interface also
visualizes locations of Twitter users, and
displays the sentiment of the tweets users write.

VizWiz (2009-2010) is a mobile application that lets blind people take a photo, speak a question about the photo,
and receive answers from the crowd quickly from their existing iPhones.

UI Automation & Customization

Clui (2012-2013) is a platform for exploring a new data type, called a Webit. Webits provide
uniform handles to objects found on the web. You can drag and drop Webits
between sites to transfer data, auto-fill search forms, map associated locations,
or share Webits with others.

Froggy (2008-2012) is a Firefox extension for improving the readability of web pages. It reduces the distractions
and transforms the text content for non-native English readers.

Sikuli (2009-2012) is a new way to automate GUI interactions using screenshot patterns to direct mouse and keyboard events. Users can
programmatically control a web page, a desktop application running on Windows/Linux/Mac OS X, or even an iphone application running in an emulator as long as you can see them on the screen.

Chickenfoot (2004-2011) is an extension for the Firefox web browser that supports end-user automation and
customization of web pages -- without having to look at the page's HTML source.

Inky (2007-2008) is a sloppy command line for the Web, using
keyword commands instead of rigid syntax, and rich graphical feedback.

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.

Potluck (2006-2007) is a web user interface for making data mashups
from multiple Exhibits -- no programming or data modeling skills required.

Smart bookmarks (2006-2007) introduces the idea of automatic
retroactive macro recording, which allows you can create a bookmark for any point in your web browsing,
even dynamic or hard-to-reach web pages where the URL alone does not recover the correct page.

Intelligent Text Editing

Mass edit (2008) is a web user interface for
rapidly editing many lines of a file at once, using multiple cursors.

LAPIS (1999-2004) is an experimental text editor/web browser
that demonstrates a range of novel techniques for automated text editing. Most of the techniques below are
implemented in LAPIS.

Cluster-based find & replace (2002-2004)
improves the standard find & replace interface by clustering matches by similarity, so that whole
clusters of similar matches can be replaced at once while outliers can be judged individually.

Simultaneous editing (2001-2002) is a method for automatically editing repetitive
text, using multiple cursors at the same time. As implemented in LAPIS, this technique is more powerful
than Mass Edit.

Usable Security

Kangaroo (2006-2007), originally called Facemail, is a
Firefox extension that tries to reduce the chance of misdirected email by automatically displaying the faces
of an email message's recipients while the message is being composed.

Phishing defense studies (2005-2006) seek to
understand why people fall for phishing attacks (fake emails and web sites that lure unsuspecting victims
into revealing their passwords, credit cards, or other private information) and reproduce their behavior
using laboratory user studies, so that new defenses can be tested before deployment.

Secure email (2005-2006) is a series of
studies aimed at understanding why secure email is not more widely adopted, despite its wide availability.

Web Wallet (2006) is a browser sidebar
that helps manage a user's sensitive information, with the goal of reducing the effectiveness of phishing
by making safe actions easier than unsafe ones, integrating itself into the user's workflow, and respecting
the user's goals.

Research in the Usable Programming group has been supported in part by the NTT/MIT collaboration, the National Science Foundation (award numbers IIS-0447800, SOCS-1111124, CCF-1533644), Adobe, Google,
the Quanta TParty and Qmulus projects, and the Peter Levine Faculty Innovation Research Fellowship. Any opinions, findings, conclusions or recommendations expressed herein are those of the authors and do not necessarily reflect the views of the sponsoring organizations.