Module 06-26954 (2018)
Principles of Programming Languages (Extended)
|Uday Reddy||Semester 2||10 credits|
It can be argued that the development and study of high-level programming languages is a central task for computer science research, and enormous progress has indeed been made from the machine-level coding of the 40s to today's functional and object-oriented languages. In this module, we will study the features that have emerged as recurring themes in high-level languages, though they are expressed in a variety of ways. We will develop an understanding of the precise meaning of programs and rigorous reasoning principles based on them. We will use the lambda calculus as a foundation for understanding functions and procedures. We will explore the fundamental concepts of type systems, based on which the modern language features such as object-orientation and generic procedures are built.
The aims of this module are to:
- Introduce the central ideas and techniques in the theory of programming languages.
- Exhibit some of the building blocks from which high-level programming languages are constructed.
- Illustrate how concrete languages realise abstract programming language ideas.
- Explain ways for defining the semantics of programming language constructs in a rigorous fashion.
On successful completion of this module, the student should be able to:
- Demonstrate appreciation of the meaning of programming language constructs and rigorous reasoning about them
- Relate features of concrete programming languages to abstract principles
- Assign types from various type disciplines to program expressions
- Develop formal descriptions of semantics and type systems of programming languages
- 06-05934 - Models of Computation
- 06-02552 - Principles of Programming Languages
Large Group Lectures and Tutorials
Sessional: 1.5 hr Examination (70%) Continuous Assessment (20%) Continuous Assessment - Report (10%)
Supplementary (where allowed): 1.5 hr Examination (90%) with the continuous assessment - report repeated (10%).