Description
This course provides the students with a basic understanding of the essential programming-language constructs, programming paradigms, evaluation criteria and language implementation issues. The topics cover concepts from imperative, object-oriented, functional, logic, and concurrent programming. These concepts are illustrated by examples from a variety of languages such as C, Java, Python, Lisp, Haskell, and Prolog.