Spring 2020 - 3010 - Organization of Programming Languages

Instructor: Matteo Cimini (email: matteo_cimini [A_T] uml [DOT] edu)
Instructor's office hours: Tuesday and Thursday 9:20AM - 10:50AM
Exception: The week that starts on 20th January, instructor is away.

Where we meet: Olsen Hall 401 - NC
When: Tuesday and Thursday 3:30PM - 4:45PM

Readings


Textbook: Types and Programming Languages, by Benjamin Pierce.
Below, I refer to the textbook as TAPL.

Other resources:
[OCaml]: The OCaml system. Documentation and user's manual
[WTLaS]: Well-Typed Languages are Sound, archived paper.

Lectures


Week Date Topic Notes
1 Jan. 21st
Jan. 23rd Introduction & Grammars
2 Jan. 28th Small-Step Operational Semantics TAPL 3.5 until page 37 before theorem 3.5.4
Jan. 30th Evaluation Contexts & Error Contexts notes1, notes2
3 Feb. 4th Big-Step Operational Semantics TAPL Excercise 3.5.17 | additional notes
Feb. 6th Lambda-Calculus TAPL 5 and 5.1 | additional notes
4 Feb. 11th Type Systems TAPL 8 to 8.2, TAPL 9 to 9.2 and TAPL 11
Feb. 13th Type Systems TAPL 8 to 8.2, TAPL 9 to 9.2 and TAPL 11
5 Feb. 18th Monday Schedule
Feb. 20th Type Soundness TAPL 8.3, [WTLaS] Sections 2, 3 and 4
6 Feb. 25th Midterm Review
Feb. 27th Midterm at Olsen Hall 401. Time: 3:30PM - 4:45PM
7 Mar. 3rd Type Soundness TAPL 8.3, [WTLaS] Sections 2, 3 and 4
Mar. 5th OCaml [OCaml] Chapter 1, except Section 1.7
8 Mar. 10th
Mar. 12th
9 Mar. 17th University Closed [OCaml] Chapter 1, except Section 1.7
Mar. 19th OCaml [OCaml] Chapter 1, except Section 1.7
10 Mar. 24th OCaml [OCaml] Chapter 1, except Section 1.7
Mar. 26th OCaml [OCaml] Chapter 1, except Section 1.7
11 Mar. 31st OCaml Parser example
Apr. 2th OCaml Interpreter example (incomplete)
12 Apr. 7th Subtyping TAPL 15 to 15.2, TAPL 16 to 16.3
Apr. 9th Subtyping arrays are invariant, algo for subtyping
13 Apr. 14th Language Modeling Test
Apr. 16th Pattern-Matching Contained in the material in [OCaml]
14 Apr. 21st Languages with State TAPL 13 to 13.3
Apr. 23rd
15 Apr. 28th Abstract Machines notes
Apr. 30th Final Review
Final Exam. Time: TBD, Room: TBD
(This schedule may be subject to small changes)

Evaluation and Grade Calculation


There are four evaluations:
  • Midterm will receive a grade between 0 and 1.
  • Language Modeling Test will receive a grade between 0 and 1.
  • Language Implementation will receive a grade between 0 and 1.
  • Final will receive a grade between 0 and 1.

    Midterm 25% score x 0.25 +
    Language Modeling Test 25% score x 0.25 +
    Language Implementation 25% score x 0.25 +
    Final 25% score x 0.25 =
    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


    Midterm


    Thursday 27th February. Time: 3:30PM - 4:45PM, Room: Olsen Hall 401
    The midterm will cover the following topics:
    Introduction & Grammars - Big-Step Operational Semantics - Small-Step Operational Semantics - Evaluation Contexts & Error Contexts - Lambda-Calculus - Type Systems.

    Language Modeling Test with TypeSoundnessCertifier




    Language Implementation


    This is an individual programming project.
    Programming language to use: OCaml.
    Project: Implement the type checker and interpreter of a functional language with
    Deadline for send the project to the instructor by email: 29th April.

    Final Exam


    5/8/2020, Friday, 11:30AM - 2:30PM
    The final will cover the following topics:
    Subtyping - Languages with State (references, see website for pointer to material) - Language transformations (for adding subtyping, and generating the CK abstract machine).
    The exam also requires that you are familiar with the notion of soundness that we have seen previously.


    Instructions for the Final Exam.

    Download the file exam.txt
    Rename it so that its name is your first name and last name, keep the .txt extension.
    The file contains 4 questions. Edit the file by inserting your answer after each question.
    The .txt file can only use plain characters, and not, for example, unicode.
    Send me an email with the file .txt that you have edited with your answers by 2:30PM included. The timestamp of the email will be valid evidence that you have submitted on time.