CS320 Principles of Programming Languages Winter 2020

Instructor: Sergio Antoy

Teaching Assistants

Quick Pointers

Course Information

Course Catalog Description

Syntax and semantics. Compilers and interpreters. Programs as data. Regular expressions and context free grammars. Programming paradigms, including procedural, functional, and object-oriented programming. Type systems, including dynamic and static typing disciplines. Binding, scope, data abstraction, and modularity. Denotational, operational, and axiomatic semantics. Introduction to program correctness.

Textbook

There is no required textbook. For those who like having a textbook for reference, the following book is recommended:
Kenneth C. Louden and Kenneth A. Lambert, Programming Languages: Principles and Practice, 3rd ed., Course Technology CENGAGE Learning, 2012.

Prerequisites

Officially: CS202, and CS251, passed with grades of C or better. CS201 is also strongly advised. It is assumed that you have substantial programming experience in C++ and some experience in C.

Requirements and Grading

Labs and Homework

Schedule

This schedule is tentative and subject to change.
Week Lecture Date Topic Textbook Chapters
1 Jan 7 Course Introduction; Java Introduction; Stack Machines 1,2
2 Jan 14 Language Syntax; Context-free Grammars; Regular Expressions 6
3 Jan 21 Data types; Type constructors; Recursive types; Garbage collection 8.1-4,7.7,10.5
4 Jan 28 Polymorphism; Generics; Modules; Data Abstraction 8.6,8.8-9,11
5 Feb 4 Object-oriented programming; Dynamic vs. static typing 5
6 Feb 11 Midterm exam
7 Feb 18 Control: Statements; Functions; Iterators; Exceptions 9,10
8 Feb 25 Functional Programming 3
9 Mar 3 Compilation; Static Analysis; Type checking and Inference 8.6-8
10 Mar 10 Formal Semantics; Program Correctness 12
11 Mar 17 Final exam 10:15-12:05

Resources

Java Language Resources

Policies

Individual work

Discrimination and Misconduct

Disabilities