1. General
concepts.
·
Syntax/Semantics
o
BNF EBNF
o
Context-free Grammar
o
Parsing
·
Types
o
Type equivalence/compatibility
o
Explicit and implicit type conversions
o
Type errors, definition
o
Static and dynamic type checking
o
Polymorphic types
·
Parameter passing.
o
Mechanisms: call by value, reference, value-result, result,
macro expansion and name
o
Simple objects (integer, real, etc.)
o
Composite objects
(arrays, records, etc.)
o
Functions as parameters
·
Abstract Data Types
·
Function and Operator overloading
·
Polymorphic Functions
·
Program analysis and translation
2. Imperative
paradigm
·
L-values, r-values
·
Block structured languages
·
Lexical (Static) scope binding,
·
Dynamic scope binding
·
Static environments
·
Activation records
·
Stack based storage allocation
·
Heap based storage allocation
·
Static links, displays
·
Dynamic links
·
Polymorphic functions using overloading
3. Object-oriented
paradigm
·
Classes as Abstract Data Types
·
Shallow and deep copying/reference and value semantics
·
Inheritance
·
Dynamic dispatch (late binding)
·
Sketch of implementation of dynamic dispatch
·
Polymorphic functions using inheritance
·
Template or Generic classes
4. Functional
paradigm (ML will be introduced)
·
Mathematical functions as model of programming
·
Tail-recursion
·
Garbage collection
·
Converting iterative algorithms to functional programs
·
Lazy/eager evaluation
·
Polymorphic functions (parametric polymorphism)
·
Functions as "first class objects"
·
Higher order functions