Fall 2019 - 5310 - Design of Programming Languages

Instructor: Matteo Cimini (email: matteo_cimini [A_T] uml [DOT] edu)
Instructor's office hours: Monday 5:00PM-6:30PM, and Wednesday 3:00PM-4:30PM
Where we meet: Olsen Hall 103
When: Mondays 6:30PM - 9:20PM.
First class: 9th September.


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.
  • [Siek & Taha 2006] Gradual Typing for Functional Languages. Jeremy G. Siek and Walid Taha.
     Scheme and Functional Programming Workshop, 2006.


    Week Date Topic Notes
    1 Sept. 9th Introduction & Language Definitions   TAPL 1, and TAPL 3.1, 3.2
    2 Sept. 16th Operational Semantics TAPL 2 and TAPL 3.3 to end of chapter 3.
    3 Sept. 23rd Type Systems TAPL 8, 9, 11
    4 Sept. 30th Type Soundness TAPL 8, 9, 11
    5 Oct. 7th No class. Classes have been cancelled at North Campus
    Oct. 14th No class. Moved to the 15th.
    6 Oct. 15th TypeSoundness Certifier
    7 Oct. 21st Languages with State
    8 Oct. 28th Gradual Typing [Siek & Taha 2006]
    10 Nov. 4th Exam with TypeSoundnessCertifier
    12 Nov. 11th No class.
    9 Nov. 18th Language-Oriented Programming [Erdweg et al 2015]
    11 Nov. 25th Gradual Typing
    13 Dec. 2nd Language-Oriented Programming
    14 Dec. 9th Other Features
    (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.
  • Final Project will receive a grade between 0 and 1.

    Assignment  20% score x 0.2 +
    Midterm 40% score x 0.4 +
    Final Project 40% score x 0.4 =
    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


    This is the assignment
    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: Tuesday 15th October (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.
    You will schedule an appointment to meet at the office of the instructor.
    (If you want to use a PC in the lab we will walk from there.)

    Final Project

    This is a programming project and will be either about language-oriented programming or gradual typing, your choice.
    The project is individual. You will use one of the software tools for language-oriented programming or gradual typing to solve a problem.
    What project? You and the instructor will discuss and agree beforehand on what the project will be. We will strive to state the assigned project as precisely as possible.
    Deadline for confirming the project with the instructor: Wednesday 13th November.
    Deadline for presenting the project in front of the instructor: Thursday 12th December.
    Optional: We can schedule an appointment once to assess the progress of your project w.r.t. the assigned project.