CS 2104 - Programming Language Concepts

[Home] [Lectures] [Tutorials] [Assignments] [Course Material] [Staff] [Schedule]



Lab4 deadline will be extended to 12noon 17Nov(Sat). The lecture on 16Nov 12-2pm will be replaced by a lab session for lab4 in the usual lab. Students are to attend if they have not submitted their assignment.

The deadlines for Lab2 and Assignment3 have been postponed by 1 week. The new deadlines are:
Lab2 : 15Oct Monday 6pm
Assign 3 : week if 22Oct
For assignment 3, everyone must present their survey (10mins) and grades will be given for preparation/presentation.

The course covers concepts, techniques and models for computer programming.

You may access IVLE for more or complementary detailed information

Aims and Objectives

This module introduces the concepts that serve as a basis for hundreds of programming languages. It aims to provide the students with a basic understanding and appreciation of the various essential programming-languages constructs, programming paradigms, evaluation criteria and language implementation issues. The module covers concepts from imperative, object-oriented, functional, logic, constraints, and concurrent programming. These concepts are illustrated by examples from varieties of languages such as Pascal, C, Java, Smalltalk, Scheme, Haskell, Prolog, Erlang. The module also introduces various implementation issues, such as pseudo-code interpretation, static and dynamic semantics, abstract machine, type inferencing, etc. The module shall lead to deepened knowledge and skills in the underlying models of programming languages and associated programming techniques. It also gives an acquaintance with central concepts in computer science related to computer programming. This module uses a uniform approach to introduce progressively the programming models of most programming languages. These models range from declarative models that cover functional programming and dataflow computing to stateful models for imperative and object-oriented programming, as well as concurrent models for message-passing systems and shared state.


Declarative models of computation and declarative programming, relational and functional models. Concurrency, data driven and lazy evaluation. Programming with state, component-based and object-oriented programming. The interplay between concurrency and state. Interpretation and virtual machines. Introduction to semantics of programming languages


Knowledge in object-oriented programming in Java as acquired in CS1102, and knowledge in discrete mathematics as acquired in CS1231 is desirable.

Required Reading

Concepts Models and Techniques of Computer Programming MIT-Press.