PLSE organization: GSoC ideas 2016
PLSE creates innovative programming tools: programming languages, automated testing, formal verification, IDEs, and more. Scratch your own itch and help other programmers!
Our goal is to help programmers to create programs faster, with fewer errors, and to have more fun doing it.
Our group spans academic research and industrial practice. We publish research papers, and we support widely-used open-source projects. Our research is has strong impact on real-world problems. We get inspiration from our own programming practice, and from the struggles of other developers.
If you are interested in pushing the boundaries of research and practice, in creating and supporting novel solutions to programming problems, then you will fit right in.
To apply, please send a cover letter indicating your interests and background. Please also supply a resume and code sample. If possible, please include a transcript or grade report (an unofficial one is fine; don't spend money to get an official one).
Potential projects
We are open to proposals for most of our projects. This webpage lists a few of particular interest.
You can also see our GitHub repositories, including uwplse, codespecs, randoop, and typetools. The issue trackers contain many ideas — ranging from bug fixes to major new features — that would make good summer projects. However, we also welcome your ideas about ways that our projects could be improved.
Automated testing
Do you love to write tests? Neither do we.
Luckily, we have created a tool, Randoop (also see its manual), that automatically generates tests for you. It even indicates which tests (probably) indicate a bug and which tests (probably) are useful as regression tests.
Randoop is the state-of-the-art test generator, against which all other approaches are measured. We have a lot of ideas for improving it. You can see a list of project ideas and its issue tracker.
Specification and documentation inference
Formal specifications, such as class and method contracts, are very useful for testing, debugging, and verification, and for enabling programmers to better understand an abstraction and thereby to avoid introducing errors. However, most code does not come with formal specifications.
The Daikon tool takes a program, runs it, observes the values it computes, and performs machine learning over those values. The output is a set of properties that were always true of the software, such as method pre-conditions, method post-conditions, and class invariants (object invariants). (Also see the Daikon manual.)
Daikon can detect properties in C, C++, C#, Eiffel, F#, Java, Perl, and Visual Basic programs; in spreadsheet files; and in other data sources. We are interested in supporting more languages and also in improving Daikon itself. You can see its to-do list and issue tracker for a small subset of our ideas for improvement.
Lightweight formal verification
Testing is useful for detecting bugs, but it is better to prevent bugs at compile time rather than discover them at run time (or, worse, have your customers or hackers discover them!)
The Checker
Framework enables you to verify program properties at compile time.
A programmer writes simple properties as type qualifiers, such as
@NonNull
, @GuardedBy
, @Regex
, or
@Tainted
. A compiler plug-in warns if your code may fail at
run time. If the compiler reports no errors, then your program is
guaranteed not to suffer certain types of run-time failures. (Also see the
Checker
Framework manual.)
The Checker Framework is extensible: any programmer can create a new type system and verify their code. We are looking for people who want to create a new type system or do case studies of existing type systems. We have a list of ideas. We are also looking for programmers interested in fixing bugs or making enhancements to the Checker Framework. Another major goal is type inference: adding type qualifiers directly to source code so that programmers don't have to do it.
We are also eager for help with the Annotation File Utilities, which started as a successful GSoC 2010 project.