Spring 2018 - 5310 - Design of Programming Languages

Instructor: Matteo Cimini (email: matteo_cimini [A_T] uml [DOT] edu)
Instructor's office hours: Mon at 12:00PM-2:00PM, and Tue 11:00AM - 12:00PM
On the first week of class: Office hours on Tue, and Wednesday 9AM-11AM.
Where we meet: Olsen Hall 404
When: Mondays 5:30PM - 8:15PM.
First class: 22nd Jan.
Midterm: Monday 5th March 5:30PM - 8:15PM, Room: Olsen Hall 404
Final Exam: TBD


Textbook: Types and Programming Languages, by Benjamin Pierce.
Below, I refer to the textbook as TAPL.
The instructor will provide further readings, which will be listed here.
  • [Siek & Taha 2006] Gradual Typing for Functional Languages. Jeremy G. Siek and Walid Taha. Scheme and Functional Programming Workshop, 2006.
  • [Wadler & Findler 2009] Well-Typed Programs Can't be Blamed. Philip Wadler and Robert Bruce Findler. ESOP 2009.
  • [Siek et al. 2015] Refined Criteria for Gradual Typing. Jeremy G. Siek, Michael M. Vitousek, Matteo Cimini and John Tang Boyland. SNAPL 2015.


    Week Date Topic Notes
    1 Jan. 22nd Introduction & Programming Languages Definitions TAPL 1,2,3 until 3.3 incl.
    2 Jan. 29th Operational Semantics TAPL 3.4, 3.5, and TAPL 5
    3 Feb. 5th Type Systems & Type Soundness TAPL 8, 9, 11
    4 Feb. 12th Languages with State TAPL 13
    5 Feb. 19th Class will NOT meet Self-study for Week 5 (see below)
    6 Feb. 26th Subtyping TAPL 15 until 15.5 incl., 16.1, 16.2
    7 March 5th Midterm. Time: 5:30PM - 8:15PM, Room: Olsen 404
    8 March 12th No class
    9 March 19th Interactive Theorem Proving Some examples I have shown in class
    10 March 26th Advanced Features See the list in the Presentation section.
    11 Apr. 2nd Gradual Typing (Mixing Static and Dynamic typing) [Siek & Taha 2006]
    12 Apr. 9th Gradual Typing [Siek & Taha 2006]. Another helpful resource may be The Gradualizer Teaching Edition!
    13 Apr. 16th No class
    14 Apr. 23th Gradual Typing [Wadler & Findler 2009] and [Siek et al. 2015]
    15 Apr. 30th Gradual Typing Presentation deadline
    Final Exam: TBD
    (This schedule may be subject to small changes)

    Evaluation and Grade Calculation

    There are four evaluations:
  • Assignment will receive a grade between 0 and 1.
  • Midterm will receive a grade between 0 and 1.
  • Presentation will receive a grade between 0 and 1.
  • Final will receive a grade between 0 and 1.

    Assignment  10% score x 0.1 +
    Midterm 35% score x 0.35 +
    Presentation 20% score x 0.2 +
    Final 35% score x 0.35 =
    Your numeric grade

    Letter Grades are computed from numeric grades as follows:

    Your numeric grade >= 0.94 A
    Your numeric grade >= 0.9 A-
    Your numeric grade >= 0.86 B+
    Your numeric grade >= 0.82 B
    Your numeric grade >= 0.8 B-
    Your numeric grade >= 0.76 C+
    Your numeric grade >= 0.72 C
    Your numeric grade >= 0.7 C-
    Your numeric grade >= 0.66 D+
    Your numeric grade >= 0.6 D
    Your numeric grade  <  0.6 F

    Self-study for Week 5

    This self-study will require you to watch a few videos:
    1. Watch the videos of the first lecture of Ronald Garcia at the Oregon Programming Languages Summer School 2017 (OPLSS) (The full lecture is split into 4 videos).
      OPLSS is a classic/popular venue for undergrad and graduate researchers in PL to attend. Internationally recognized leaders in PL give lectures at this venue every summer.
      You are encouraged to browse around and watch other available videos, also from past OPLSSs.
    2. Watch How to write papers so that people can read them by Derek Dreyer.
      This has been one of the lectures of the Programming Languages Mentoring Workshop series.
      Major PL conferences have been running mentoring workshops mostly directed to undergrad and graduate students interested in PL research.
      You are encouraged to search the web and watch other available videos from PLMW workshops.
      Examples: POPL 2017 PLMW, PLDI 2017 PLMW, OOPSLA 2017 PLMW, ICFP 2017 PLMW are recent ones, but there have been many more in previous years as well.


    This is the assignment -- Given on Feb 7th.
    Some parts of the assignment rely on what is covered in Week 4 (12th February).
    To submit your assignment: write the assigned paper and send it to me by email as a pdf/doc.
    Deadline for the assignment: Thursday 1st March.


    Monday 5th March 5:30PM - 8:15PM, Room: Olsen Hall 404
    The midterm will cover the following topics:
    Introduction & Programming Languages Definitions - Type Systems & Type Soundness - Languages with State & Exceptions - Subtyping.


    Presentation will address the following parts of the course: Interactive Theorem Proving - Advanced Features.
    You will request and schedule an appointment with me and you will give a presentation in my office.
    Deadline: Appointments must be requested by Wednesday 18th April. Presentations must be done by the 30th April.
    Your presentation will consist of two parts:
    1. Language Modeling with TypeSoundnessCertifier: I will give you a language to model with the TypeSoundnessCertifier tool within a window of time (amount of time TBD).
    2. Advanced Features: Pick 3 feautures in the list of Advanced Features below, and for each of them:
      • create one (or more than one, if necessary) small program that demonstrates the feature.
      • create 2-5 slides that present the most relevant things to say about the feature.
      • I will ask you to discuss the feature and present a critical point of view. Your slides may guide your presentation.
        (You do not need fancy slides, they need to help you be concise and to the point, and not wander in a stream of thoughts.)

    Advanced Features

    Final Exam

    Location and time TBD.
    The final exam will cover the following topics: Gradual Typing.