CS4536/CS536: Programming Languages (A/Fall 2014)


You do not need to purchase a textbook. For much of the course, we will use Programming Languages: Application and Interpretation (2012 edition), which is available online. Some later material will come from published papers. Some will come from custom notes. Links will be provided as needed.

DateTopicChapters and Notes
Oct 14Lambda Calculus, Course EvalsTextbook first edition, chapter 22
Oct 10Model CheckingSeparate Notes
Oct 7Typing Objects, Polymorphism15.3.1, 15.3.8
Oct 3Type InferenceTextbook first edition, chapter 30
Sep 30Termination and Type Soundness15.2.3.2, 15.2.7
Sep 26Introduction to Type Checking15.1-15.2.3, 15.2.6
Sep 23Objects10
Sep 19Recursion, Laziness9, 17.1
Sep 16Mutating Structures, Mutating Variables, Passing Parameters8
Sep 12Intro to Mutating Structures8
Sep 9First-Class Functions, Top-level definitions, hint of recursion 6 and 7
Sep 5Delayed Substitution; First-Class Functions6 and 7
Sep 2Substitution; Functions4 and 5
Aug 29Overview; Modeling Languages, Basic Interpreters1, 2, and 3

Racket Crash Course

For a really crash course (that might be enough combined with the text and lecture notes), see these two examples of functions over lists. I've added comments to help you know what to take from these examples.

For a bit more detail, the Racket Documentation provides a basic overview of Racket. Note that this overview does not include the typing aspects of plai-typed -- use lecture and the textbook for those details. Adding types affects the operators used to build lists (in section 2.4 of the tutorial): in plain Racket, (list 1 2 3) and '(1 2 3) are equivalent, but in plai-typed, the first produces data of type (listof number) and the second produces data of type s-expression. We will discuss the difference in lecture. Unless you are writing input to a parser, use list or cons to create lists.