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