CMCS 312: Programming Languages


Announcements

The final exam is now ready. Please come and pick it up whenever you want. The final is a 24-hour take home.

Solutions to all the homeworks can be found below.


Instructor

Umut Acar

Meetings

Place: TTI-C, room 264 (the conference room)
Times: Tue and Thu: 1:30-2:50.

Office Hours

Place: TTI-C, room 253
Times: Tue: 3:00pm-4:00pm.

Course Schedule

Date Topic Chapters Lecture Notes Homework
Oct 4 Introduction, Syntax and Induction Chapters 1, 2, 3 syllabus lecture 1 Homework 0 Solution 0
Oct 5 An overview of SML SML overview
Oct 6 Semantics Chapter 3 lecture 2
Oct 11 Lambda Calculus: Syntax, Substitution, Beta Reduction Chapter 5 lecture 3 Homework 1 Solution 1
Oct 13 Programming in the Lambda Calculus Chapter 5 no lecture notes
Oct 18 Evaluation Strategies, Recursion Chapter 5 lecture 5
Oct 20 de Bruijn Indices Chapter 6 lecture 6 Homework 2 Solution 2
Oct 25 Type Safety Chapter 8 no lecture notes Homework 3 Solution 3
Nov 1 Simply Typed Lambda Calculus Chapter 9 no lecture notes
Nov 3 Type Safety of Simply Typed Lambda Calculus Chapter 9 no lecture notes Homework 4 Solution 4
Nov 4 Midterm Review no lecture notes
Nov 8 Midterm Exam
Nov 10 Unit, let, products, and records Chapter 11 no lecture notes
Nov 15 Sums, recursion, references Chapter 11,12 no lecture notes Homework 5 Solution 5
Nov 17 References Chapter 12 no lecture notes
Nov 22 Type Safety for References Chapter 12 no lecture notes Homework 6 Solution 6
Nov 24 No Class (Thanksgiving)
Nov 29 Final Review

Course Description

The course studies the theory and practice of programming languages. On the theory side, we will learn about what makes a programming language safe and sound by using mathematical models of execution and types. On the practical side, we will implement projects in the Standard ML language; these projects aim to put the theory to work.

You should consider taking this course if you are interested in (or want to learn about) programming languages, and/or high-level languages such as Standard ML.

Prerequisites

I will assume knowledge of basic mathematical concepts such as sets, and inductive proofs. If you are not readily familiar with these, then I recommend studying the first few chapters of the textbook. I will not assume any prior knowledge of the Standard ML language but you will be expected to learn the language on a step by step basis as the projects develop.

Text Book and Course Software

The text book for the course is Benjamin Pierce's Types and Programming Languages (errata.)

For projects, we will use the Standard ML language and the SML/NJ implementation. For further information on SML, see Bob Harper's Programming in Standard ML book, and the documentation for the SML'97 Basis Library.

You should install SML/NJ on your computer. You can either have the system administrator install it for you, or install it yourself. For installation instructions see the SML/NJ website. Make sure that you install a relatively recent version (110.4x or later). Since the Compilation Manager (CM) underwent a recent redesign, you may experience incompatibilities with the earlier versions.

Exams, Homeworks, Grading

There will be a midterm and a final exam. Each will contribute 20/100 points toward the final grade. The homeworks will make the remaining half. The final will be a 24-hour take home. Both written and programming assignments are due at the beginning of lecture on the due date. Written assignments will be collected in class. For programming assignments, please e-mail your code to me.