4.92 KB

Programming Language Design for Interaction: Class Project

As a student in this class, you will define and complete a class project. This process will occur in several phases:

Phase 1: Conception

In this phase, you will propose an idea for a class project. In this description, describe your project idea in 4-8 concise, declarative sentences. There are two requirements:

  1. 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.

  2. 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).

I have written two example project descriptions. You can use either of these as starting points.

It is not required to have unique project concepts. However, it is required that each student eventually has a unique critical path (see below).

Timeline: Do this first phase before class meets on Tuesday, March 1 2016.

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 description, and added details that were missing in the original concept description.

Timeline: Do this step, iteratively, through March 17th. In the process, you will find additional ideas (suggested by the class), and additional resources (papers and web sites) to explore. Document these explorations in your issue, making note of how the original concept is affected by on-going class discussions, and resources that you are reading and (ideally) with which you are interacting.

Phase 3: Critical Path

Based on the refinement above, identify a critical path. A critical path is a list of actionable steps that lead you from your starting point, to the goals of the project. Think about what steps are required, at the granularity of things you can accomplish in a few hours at a time. Each step should have some demonstrable progress.

Document this critical path as a list of steps (6-8 steps seems like the right amount). Use a project repository within this git group ( to manage your critial path, and the other resources associated with your project. Doing so will suffice for the purposes of documenting how these things change over time. The instructor will create a git project for you within this group before Phase 3 begins.

Using git, you may revise your critical path, as things develop. In these cases, you may even have to backtrack (see below, in phase 4). In light of this, be sure not to make the list of steps too long. Also, make sure the list of steps is not too open-ended; instead, define the steps as much as you can, making the demonstrable progress clear in your description. (e.g., "at the end of step 3, my structure editor will allow the user to create arithmetic expressions that consist of summing two smaller expressions").

Timeline: You will identify your (initial) critical path before class on Thursday, March 17.

Phase 4: Do it!

After defining a critical path, start doing the steps you outlined. You may find out that the critical path works out well, or you may find that you need to revise it. Do these revisions, and document how the path changes by using git.

In this phase, we will take turns demonstrating our progress during class meetings. This will give you an opportunity to reflect on your goals and the critical path that you have defined to reach them. These demos will also give the class an opportunity to better understand your vision, and how your are seeking to realize it.

In some cases, as things progress, you may need to revise your goals. Major revisions are all okay, as long as you document what you are doing, and accept feedback (comments and questions) from the class about your progress. Again, use this git group for these purposes.

Timeline: You will work on your project each week until April 28th. It is okay if some steps take multiple weeks, but your progress each week should be evident from your git commits. It is okay if you have to backtrack, so long as you keep your critical path up to date and well-documented.

Phase 5: Reach your demonstrable goals

Now you are done. Congratulations! At this point, your demo will be complete and satisfying. Nice work!

Timeline: You will be done with your project by the last day of class, on April 28th.