Commit dec7d234 by Matthew Hammer

describing the class project

1 parent 2fbf803b
Programming Language Design for Interaction: Class Project
As a student in this class, you define and complete a class project.
This process will occur in several phases:
* Phase 1: Conception: You will propose an idea for a class project.
To propose an idea, start by creating a new issue here: __XXX___.
In the description of the issue, describe your project idea in 3-4
concise, declarative sentences. Since this class is focused on
reading and understanding research papers about PL design, your
project should connect to 1-2 research papers in the field of
"programming languages", broadly construed. Further, since the
class has focused on "interactive systems", some aspect of the
paper(s) you choose and/or the project that you propose, should
involve "interaction" (e.g., between a user and a computer program,
or between different computer programs, or between different
humans). There are two example proposals here:
* Phase 2: Refinement: Based on feedback you receive from your peers,
and the instructor, you will refine the project idea that you first
proposed. The refinement of this idea will consist of new, restated versions of the original project de
Example Project: Interactive Structure Editor
Phase 1: Conception
This project will consist of extending **Nested Pairs** with new
language constructs, beyond pairs. Nested Pairs is a simple
in-browser structure editor for interactively editing ASTs of nested
pairs. Structure editors are popular in professional tools, such as
mbeddr. See also: [mbeddr
paper]( and [mbeddr
Phase 2: Refinement
The starting point for refining this project is the [current nested
pairs implementation in
To run the code in the browser, the OCaml code is compiled to javascript via the [js-of-ocaml compiler](
The proposed project will extend the OCaml implementation with new
language features, beyond pairs. These features are to-be-decided.
Example Project: Interactive GraphMovie Tool
Phase 1: Conception
This project will consist of re-implementing
**Graph Movie** in a new javascript framework. Graph movie is an
in-browser tool for viewing dynamically-changing graphs. The tool
was used to debug the development of the research paper [Incremental
Computation with Names (OOPSLA
2015)](, and the workshop
presentation [Correct-by-construction Interactive
Phase 2: Refinement
The starting point for refining this project is the [current
graphmovie implementation](, which uses the JS framework
[JoinJS]( The proposed project will replace this framework with
[D3](, and extend it with new features. These new
features are to-be-decided.
......@@ -127,7 +127,14 @@ Read the OBT 2016 talk abstract (a short two pages): [[Correct by construction i
Finish in-class discussion of the Adapton papers.
15. Mar 1:
15. Mar 1: Topic: Project idea discussion.
Read about the [class project](
Read the [example project descriptions](
[Create a new issue, in the `home` project](
In the description of the new issue, describe your project. Describe
the **concept** of the project, and the way you will proceed to
**refine** this conception.
16. Mar 3:
17. Mar 8:
18. Mar 10:
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!