Class syllabus, schedule and other basic resources.

CSCI 7000: Programming Language Design for Interaction

This is a graduate-level topics class focused on programming language tools and techniques for constructing interactive experiences. More specifically, we will consider two themes in this class:

  1. Primarily: Programming languages (as formal semantics and as practical implementations) focused on constructing interactive computational behavior. In particular, we will focus on functional languages, and approaches inspired by them. We will discuss many questions, including the following: What design elements define these systems?
    What kinds of interaction can they express, and how do they express it?

  2. Secondarily: Programming experiences that include interactive feedback. In particular, proof assistants used by PL experts (such as Agda, Idris, Coq and others), as well as programming environments designed specifically for end users (novices, or even non-programmers). Proof assistants are interactive systems created by and for PL research; other systems are created for beginners. We will share and discuss these interactions in class, asking: What design elements do these systems have in common?
    What interactive experiences would benefit both experts and non-experts?


  • Instructor: Matthew A Hammer
  • Class meetings: Tues/Thu @ 2--3:15 in the Idea Forge. (also known as FLMG 178). It's in the Fleming building, and some may call it the "Mesa Board Room". [Directions].
    • Except for the first meeting, class meetings will consist of paper/video discussions.
  • Office Hours: No regular hours. Instructor is available by email and by appointment.
  • Grading: 50% participation (in class and virtual), 50% class project.
  • Homework: Watching videos and reading papers before each class meeting. (Graded as class participation)
  • Exams: None
  • Final project: A mini research project, including a presentation. Details TBA.
  • Home: https://git.cs.colorado.edu/pl-act-s16/home

Scope for literature and videos

The following topics fall within the scope of the class, and should/will be represented by the readings and videos that we consume and discuss in class. This list is not exhaustive.




  1. Jan 12: Topic: Welcome. Introductions. No preparation needed.
  2. Jan 14: Topic: Functional reactive programming: Deployed systems
    Read Elm paper (PLDI 2013).
    Play with Elm.
    Create a gitlab account, and add a headshot of yourself.
    Request access to join the pl-act gitlab group.

  3. Jan 19: No meeting. (Instructor is traveling).
    Watch Flapjax Talk @ MSR.
    Participate in (online) class discussion.

  4. Jan 21: No meeting. (Instructor is traveling).
    Watch JaneStreet's Incremental Talk. The passcode for this video will be sent via email.
    Yaron Minsky shared this video with us as a favor to me; please do not distribute this link or passcode.
    Read Yaron's Blogpost about Incremental.
    Read Yaron's Blogpost about FRP vs SAC.
    Participate in (online) class discussion

  5. Jan 26: Topic: In-class discussions for Flapjax and JaneStreet's Incremental (videos from last week).
    As usual, prepare 2-3 questions about each project. We will discuss.

  6. Jan 28: Topic: Functional reactive programming (for animation).
    Read Functional Reactive Animation [paper]
    Add questions to discuss before we meet


  1. Feb 2: In-class discussion of last week's videos.

  2. Feb 4: Topic: Functional reactive programming: "Higher-order" Semantics.
    Read Higher-Order Functional Reactive Programming without Spacetime Leaks [paper]
    Before class, add your questions for discussion

  3. Feb 9: Continued discussion from Feb 4.

  4. Feb 11: Topic: Naiad: A Timely Dataflow System.
    Read Naiad paper from SOSP 2013: [paper website]
    Before class, add your questions for discussion

  5. Feb 16: Topic: Adapton.
    Read the PLDI 2014 Adapton paper, Sections 1, 2, 5 and 6: [paper website]
    Before class, add your questions for discussion

  6. Feb 18: Topic: Adapton, continued.
    Read the PLDI 2014 Adapton paper, Sections 3 and 4: [paper website]
    Before class, add your questions for discussion

  7. Feb 23: Topic: Adapton, continued.
    Instructor is traveling. No in-person meeting.
    Read the OOPSLA 2015 paper, Sections 1 and 2: [full version from ArXiv]
    Watch the video from Spring 2015, here: [Incremental Computation with Adapton]
    Add your questions for discussion

  8. Feb 25: Topic: Adapton, continued.
    Read the OBT 2016 talk abstract (a short two pages): [Correct by construction interactive software]
    Finish in-class discussion of the Adapton papers.


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

  2. Mar 3: Topic: Project idea discussion, continued.

  3. Mar 8: Topic: Project idea discussion, completed.
    Create a README.md file for your class project.
    In this README.md file, document the concept, its refinement and a draft of the "critical path", i.e., the steps required to complete the project before April 28th.
    Be prepared to discuss this document in class.

  4. Mar 10: FRP
    Read the Casual Communative Arrows paper: [paper link]
    Before class, add comments or questions here: [issue link]

  5. Mar 15: FRP
    Read the Yampa Arcade paper: [paper link]
    Before class, add comments or questions here: [issue link]

  6. Mar 17: Project Updates.
    Class discussion: Students present final draft of critial path.

  7. Mar 22: Spring break. No meeting.

  8. Mar 24: Spring break. No meeting.

  9. Mar 29: Topic: Propositions as Types ("Curry-Howard Correspondance")
    Read the Philip Wadler article from CACM, December 2015. [pdf].
    Before class, add comments or questions here: [issue link]

  10. Mar 31: Topic: Session Types
    Read the paper Session Types as Intuitionistic Linear Propositions. Before class, add comments or questions here: [issue link]


  1. Apr 5:
  2. Apr 7:
  3. Apr 12:
  4. Apr 14:
  5. Apr 19:
  6. Apr 21:
  7. Apr 26:
  8. Apr 28:

Misc notes