oct 2018 —
At VL/HCC'2018, our group will have 3 full papers, 2 posters, and a presentation in the DTSHPS'2018 Workshop.
aug 2018 —
New NSF grant called "Multimodal Conversational Assistant that Learns from Demonstrations" to support the work related to Sugilite.
jun 2018 —
New NSF grant called "Knowledge Acceleration for Programming" to support the work related to Unakite.
jun 2018 —
Most Influential Paper award at The 30th International Conference on Software Engineering -- ICSE'2018, for "Debugging, Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior" by Andrew J. Ko and Brad A. Myers from 2008.
may 2018 —
Keynote address, WAPI: 1st International Workshop on API Usage and Evolution (https://w-api.github.io/), co-located with the 39th International Conference on Software Engineering (ICSE'2017), Buenos Aires, Argentina, Tuesday, May 23, 2017. "Human-Centered Methods for Improving API Usability". local pdf and slides and Sven Amann’s summary of the talk.
feb 2018 and apr 2017 —
Google Faculty Research Awards for API Usability.
oct 2017 —
Most Influential Paper award over the last 10+/-1 years by the VL/HCC conference in 2017, for J. Stylos; B. A. Myers: "Mica..." from VL/HCC 2006. This is the 4th time our group has won this award!
more news...
The Natural Programming Project is working on making programming languages, APIs, and
programming environments easier to learn, more effective, and less error prone. We are
taking a human-centered approach, first studying how people perform their
tasks and then designing languages, APIs, and environments around people's natural tendencies. We focus on all kinds of programming, including professional programmers, novice programmers who are trying to learn to be experts, and end-user programmers (EUPs), who program to support other jobs or hobbies, such as multimedia authoring, simulations, teaching, prototyping, and other activities supported by computing.
We have been affiliated with the EUSES consortium, which is a group of researchers working on end-user software engineering, and with the project on Variations to Support Exploratory Programming.
Ongoing Projects
API Usability
Informing API design choices through human-centered methods.
MARBLE
Mining API Repositories for Boilerplate Lessening Effort.
Mining Software Repositories for Boilerplate to help API Designers.
Alabaster
Autocomplete Letting Apache Beam Applications Succeed Through Exploration Rapidly
Research on helping programmers use the Apache Beam API.
Unakite
Users Need Accelerators for Knowledge for Implementations in Technology Environments
Research on helping programmers organize knowledge found on the web.
Obsidian
Object-oriented Blockchain State Interaction and Development Implementation And Notation
Research on a new language for programming blockchain programs.
Verdant and Variolite
Variations Augment Real Iterative Outcomes Letting Information Transcend Exploration.
Research on supporting exploratory programming for Data Scientists.
Glacier
Great Languages Allow Class Immutability Easily and Readily.
System to enforce immutability in Java.
Former Projects
Moonstone
Making Object Oriented Novel Software Tools Optimized for Noting Exceptions.
Research on exception handling, and new plugin for Eclipse to help with exception handlers.
Aquamarine
Allowing Quick Undoing of Any Marks And Repairs to Improve Novel Editing
Painting program to explore selective undo using the script model.
Dacite
Design Annotations for Complementing Interfaces Targeting Effectiveness.
Plugin for Eclipse to help with API Usability.
Cryolite
Cloud9 Recorder of Your Operations by Listening to Interactions in The Editor.
Gneiss
Gathering Novel End-User Internet Services using Spreadsheets
Uses a spreadsheet language to create interactive web applications using web service data.
InterState
(Formerly called: Euclase: End User Centered Language, APIs, System, and Environment.)
New tool to allow designers to author web behaviors using state machines and constraints.
Azurite
Adding Zest to Undoing and Restoring Improves Textual Exploration
A plug-in for Eclipse that facilitates backtracking (undoing) of code.
Graphite
GRAphical Palettes Help Instantiate
Types in the Editor.
A plug-in for Eclipse that supports type-specific palettes that help
users enter code more easily.
Fluorite
Full of Low-level User Operations Recorded In The Editor.
A plug-in for Eclipse that records the low-level user and Eclipse events to enable analysis.
ConstraintJS
A JavaScript library that supports constraints combined with state transitions.
Jadeite
Java Documentation with Extra Information Tacked-on for Emphasis.
Apatite
Associative Perusing of APIs That Identifies Targets Easily.
Reacher
Visualization tool that allows developers to search and explore feasible paths and answer reachability questions.
Euklas
Eclipse Users' Keystrokes Lessened by Attaching from Samples
(Eclipse plugin for JavaScript, that helps with copying and pasting code.)
Calcite
Construction And Language Completion Integrated Throughout Eclipse
Fact-finding
Helping developers discover properties of software architectures
Update Paths
Helping developers discover when code is executed
FireCrystal
Firefox extension to show the html and Javascript code responsible for behaviors on web pages
WebCrystal
Plugin for Firefox that helps you understand how parts are implemented.
Whyline for Java
a Workspace that Helps You Link Instructions, Numbers and Events
Topes
A data model to help end-user programmers validate and manipulate data
Jasper
A Java Aid with Sets of Pertinent Elements for Recognition
Barista
Basic Abstractions for Rapidly Implementing Structured Text-editing Applications
Crystal
Clarifications Regarding Your Software using a Toolkit, Architecture, and Language
Mica
Makes Interfaces Clear and Accessible
Citrus
a language for Creating Interactive Tools that Reshape and Utilize Structure
Slate
a Spreadsheet Language that Accentuates Type Errors
Hands
Human-centered Advances for Novice Development of Software
Silver
Scripting an Intelligent Video Editor
Lapis
Lightweight Structured Text Processing