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 5:00PM-6:30PM
Where we meet: Olsen Hall 103
When: Mondays 6:30PM - 9:20PM.
First class: 9th September.

Readings


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.

    Lectures


    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 Gradual Typing (Mixing Static and Dynamic typing)
    Oct. 14th No class. Moved to the 15th.
    6 Oct. 15th Language-Oriented Programming
    7 Oct. 21st Midterm. Time: 6:30PM - 9:20PM Room: Olsen Hall 103.
    8 Oct. 28th Languages with State TAPL 13
    10 Nov. 4th Gradual Typing
    12 Nov. 11th No class.
    9 Nov. 18th Gradual Typing
    11 Nov. 25th Language-Oriented Programming
    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


    Assignment


    The assignment will be posted here on Lecture 4.
    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


    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.