Design Project - Human Factors in Programming Languages

In this phase of the seminar you will apply the knowledge you have gained throughout the semester to a small design project. You will design a language or tool that enables a specific user to perform some specific programming tasks that would be difficult or impossible for them to accomplish otherwise. You will use at least two of the intellectual tools we have discussed this semester during the design process.


  • Jan 14 — Send to me by email a very brief (~1 paragraph) written proposal of your design project, including your user, and the tasks they would like to perform. You should also state the design tools you plan to use and why.

  • Feb 3 or Feb 10 — Give a 15 minute presentation on your design in our seminar meeting. After each presentation we will have approximately 15 minutes of discussion, where you will need to respond to questions and possibly defend your design.

  • Feb 17 — Submit a short written document providing the rationale for your design decisions in terms of the chosen intellectual tools, and your experience applying the tools.


  • Your user should be a single, specific person that you have personal access to. He or she may be either a programmer or non-programmer. The motivation for picking a single user is to focus the design in the spirit of situated software.

  • The tasks your user wants to perform should be related to some aspect of software development. It need not be creating new software—testing, debugging, and understanding existing software are also acceptable tasks. It also need not be about traditional software development—recall our discussion of Blackwell’s relatively broad definition of programming at the beginning of the semester.

  • The tasks should be specific enough to focus the design but general enough that the investment in designing and learning a new language or tool can be repaid in saved attention and effort.

  • You should choose one of the frameworks/strategies we discussed this semester (Attention Investment, Cognitive Dimensions, Surprise-Explain-Reward, etc.) as your primary design tool, and use this to inform your design decisions.

  • You should choose one or more other intellectual tools as secondary design tools, to supplement your primary design tool. Take special note of any interesting interactions between your primary and secondary design tools.

  • Your presentation should (1) introduce your user and his or her tasks, (2) note the intellectual tools you applied to this design problem, (3) provide an overview of the design, (4) walk us through a few specific use cases. You should focus especially on how your chosen design tools influenced the design, where they were helpful, where they weren’t, and where they interacted with each other.

  • The written document you submit should briefly summarize the main points of your presentation. Once again, it should focus on motivating your design decisions in terms of the design tools, and your experience using the design tools. No more than two pages, and less is fine. I recommend some bulleted lists. :-)