CS411 Topics

The course will be a survey of programming language principles and concepts.  This is not the same as a survey of examples of programming languages, though we will mention (historically- and currently-) important examples where appropriate.  Topics to be covered include the following (not in chronological order):

Foundations

fundamental techniques for defining programming language semantics (operational, denotational, axiomatic)

semantics of functional and imperative languages

parameter passing rules (call-by-value, call-by-reference, call-by-name,  call-by-need, ...)

scope rules (static vs dynamic)

Data Types

semantics of data type definitions and type safety

polymorphism (parametric, ad-hoc, subtype)

Objects

method dispatching rules

object-based vs class-based models

delegation

subclassing vs subtyping

inheritance rules (single vs multiple, implementation vs interface)

Concurrency (time permitting)

shared variable concurrency

CCS