Course Objectives |
Students taking this course can expect to learn the following
concepts:
- the structure of compilers, including the notions of
concrete and abstract syntax trees
- the structure of modern run-time systems
- the major programming paradigms of object-oriented
and functional programming
- the differences between dynamically-typed and
statically-typed languages
- the use of deduction systems to formally define
languages
- polymorphic type systems
- program verification, and the key role of
loop invariants
and acquire the following
skills:
- to write lexical analyzers, both manually and using generators,
to process structured input (such as programs)
- to write parsers, both manually and using generators,
to further process structured input
- to implement programming languages, both by interpretation
and compilation
- to program in a functional programming language, including
the use of higher-order functions
|
|
|