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.


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
9 March 20th Advanced Features in Programming Languages See the list below.
10 March 27th Language-oriented Programming
11 Apr. 3rd Language-oriented Programming
12 Apr. 10th Gradual Typing (Mixing Static and Dynamic typing)
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).


    Wednesday 6th March 3:30PM - 6:20PM
    The midterm will cover the following topics:
    Languages Definitions & Operational Semantics & Type Systems & Type Soundness & Languages with State & Subtyping.


    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