Spring 2019 - 5310 - Design of Programming Languages

Instructor: Matteo Cimini (email: matteo_cimini [A_T] uml [DOT] edu)
Instructor's office hours: Wednesday at 1:00PM-3:00PM, and Thur 1:30PM - 2:30PM
Where we meet: Dandeneau Hall 220
When: Wednesday 3:30PM - 6:20PM.
First class: 23nd Jan.
Midterm: Wednesday 6th March 3:30PM - 6:20PM
Final: There will be a final programming project to be discussed by 8th May.


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.
 The papers below may not use the same notation we have seen in class, and may cover more than what has been covered in class.
 In doubt, consult the Instructor.

  • [Erdweg et al 2015] Evaluating and Comparing Language Workbenches Existing Results and Benchmarks for the Future.
     Journal of Computer Languages, Systems and Structures, 2015.


    Week Date Topic Notes
    1 Jan. 23rd Introduction & Overview of Programming Languages Research  
    2 Jan. 30th Language Definitions & Operational Semantics TAPL 3 and 5
    3 Feb. 6th Type Systems TAPL 8, 9, 11
    4 Feb. 13th Type Soundness TAPL 8, 9, 11
    5 Feb. 20th Languages with State TAPL 13
    6 Feb. 27th Subtyping TAPL 15 until 15.5 incl., 16.1, 16.2
    7 March 6th Midterm. Time: 3:30PM - 6:20PM.
    8 March 13th No class
    10 March 20th Language-oriented Programming
    12 March 27th Gradual Typing (Mixing Static and Dynamic typing)
    9 Apr. 3rd Advanced Features in Programming Languages See the list below.
    11 Apr. 10th Language-oriented Programming
    13 Apr. 17th Gradual Typing
    14 Apr. 24th Presentations
    15 May 1st Presentations
    (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 Project 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 Project 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

    Advanced Features


    This is the assignment -- Given on Feb 15th.
    To submit your assignment: write the assigned paper and send it to me by email as a pdf/doc or image.
    Deadline for the assignment: Friday 1st March (end of the day).


    Midterm will be: Language Modeling with TypeSoundnessCertifier.
    I will give you a language to model with the TypeSoundnessCertifier tool within a window of time.
    Below are the current appointment slots available
    Please, pick ONE and send an email to the instructor.
    The appointment will be at the office of the instructor.
    (If you want to use a PC in the lab we will walk from there.)


    You will choose a software tool for language-oriented programming or gradual typing and will discuss it in class.
    The last 2 lectures of the course will be reserved for presentations.
    Please speak with the instructor if you want to have an alternative to in-class presenting. That can certainly be arranged.

    Final Programming Project

    The programming project will be about language-oriented programming or gradual typing.
    You and the instructor will discuss together the nature of the project beforehand.
    Deadline for discussing the project in front of the instructor: May 8th