Topics


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