To introduce the major programming paradigms and the principles and techniques involved in the design and implementation of modern programming languages.
To introduce notations to describe syntax and semantics of programming languages.
To analyze and explain the behavior of simple programs in imperative languages using concepts such as binding, scope, control structures, subprograms and parameter passing mechanisms.
To introduce the concepts of ADT and object-oriented programming for large scale software development.
To introduce the concepts of concurrency control and exception handling.