3-3-0
The objective of this course is to introduce, analyse and evaluate, on a comparative basis, the concepts on which programming languages and their implementations are based. Topics to be covered: definition of languages, syntax and semantics; Compilation techniques, top-down parsing, creating a parser; variables and binding, expressions, statements; data types; procedures scope, and run-time considerations; coroutines; implementation of block-structured languages; modularity and abstractions; concurrency exception handling and program correctness; functional programming object-oriented programming languages; logic programming and constraint languages.
Prerequisites: Computer Science 204 and one other Programming Language course
The languages ML, Eiffel, Lisp, Scheme, Prolog, Haskell, 02, Java and Smalltalk will be used to illustrate the above concepts.