CIS 425 (Principles of Programming Languages)

Instructor: Amr Sabry Office hours (M: 2-4; F: 10-11)
GTF: John Fiskio-Lasseter Office hours (M: 9-11; W: 3-5)

Quick Links

Status as of Nov. 8
Midterm II Solution
Midterm Solution
Homeworks
Announcements
Grades
Code from Lecture
ML
Java 1.2 API

What is CIS 425 about?

As a future professional computer scientist, you should be comfortable with all programming languages even those that haven't been invented yet. The way to do this is to understand the principles of programming languages. It helps to realize that programming languages are just notations to express computations, and that the abstract notion of computation can be concisely described using a few primitives. Commercial programming languages just add lots of bells and whistles that are convenient (and essential from a software engineering point of view) but not fundamental from a computational of view.

The approach used in the book is pragmatic. Commercial programming languages are divided in major family groups, and the main features of each group are discussed. Part VI (Chapters 13 and 14) then abstracts from the details of commercial languages and presents the fundamental principles underlying programming languages. You are the specialists for which these chapters are written. As the book argues on p.26:

A formal definition is a precise description of the syntax and semantics of a language; it is aimed at specialists.
We will pretty much follow the book but instead of using English to discuss and understand programming languages, we will use programs. In other words, we will use the same approach of Part VI throughout the book.

References and Software


Lectures

The lectures will be based on the book, but expect variations, additions, and omissions. Tentative schedule:

Date Topic Due Notes
T 9/28 Introduction; Ch. 1; Grammars; Ch. 2 Lecture by Prof. Michal Young
U 9/30 Grammars; Ch. 2 Lecture by Prof. Michal Young
T 10/5 Datatypes; Pattern-matching; Ch. 8.1-8.3; 9.1 - 9.2 HW 1
U 10/7 ML; Interpreters; Ch. 9
T 10/12 Loops; Invariants; Ch. 3.1-3.5 HW 2
U 10/14 Partial Correctness; Ch. 3.6-3.7
T 10/19 Types and Storage Allocation; Ch. 4.1-4.8 HW 3
U 10/21 Type Checking; Ch. 4.9; 14.5
T 10/26 Parameter-Passing; Scope; Ch. 5.1-5.4 HW 4
U 10/28 Activation Records; Ch. 5.5-5.7
T 11/2 Review
U 11/4 Midterm
T 11/9 Encapsulation; OO Design; Ch 6 HW 5 Using Java not C++
U 11/11 Objects; Inheritance; Ch. 7
T 11/16 First-class functions HW 6
U 11/18 Scope; Ch. 8.5
T 11/23 Lambda Calculus; Ch. 14 HW 7
U 11/25 Thanksgiving
T 11/30 Natural Semantics; Ch. 13.3 HW 8
U 12/2 Denotational Semantics; Ch. 13.4
W 12/8 Final at 8:00 AM !!!!

Page visited times since September 21, 1999.

sabry@cs.uoregon.edu