Copyright 2017 - CSIM - Asian Institute of Technology

Programming Languages and Compilers

Course code: AT70.07
Credits: 3(3–0)
This course is required

Course objectives

To provide students with an in depth knowledge of concepts that underlie all of the programming languages normally encountered, illustrating those concepts with examples from various languages. Language design and implementation and the ways in which they interact are explored together. Special emphasis is put on compilation and linking, as well as how data types are implemented in memory.

Learning outcome

Compilation, interpretation, regular expression and context-free grammars, scanners and parsers, names, scopes and bindings, scope rules, overloading, semantic analysis, code optimization techniques, control flow and expression evaluation, iteration and recursion, data types, type checking, parameter passing, exception handling, code generation, linking, encapsulation and inheritance, late binding, multiple inheritance.

Course outline

I.        Introduction and An Overview
1.     Compilation
2.     Interpretation
 
II.      Programming Language Syntax
1.     Regular expressions,
2.     Context-free grammars
3.     Scanners and Parsers
 
III.     Names, Scopes and Bindings
1.     Object Lifetime
2.     Scope Rules
3.     Overloading
 
IV.     Semantic Analysis
1.     Symbol Tables
2.     Type Checking
 
V.      Control Flow
1.     Expression evaluation
2.     Sequencing
3.     Selection
4.     Iteration
5.     Recursion
 
VI.     Data Types
1.     Types systems
2.     Type Checking
3.     Record
4.     Variants
5.     Arrays
6.     Strings
7.     Recursive types
 
VII.   Control Abstraction
1.     Parameter Passing
2.     Exception Handling
 
VIII. Code Generation in Compilation
1.     Phases
2.     Passes
3.     Address Space Organization
4.     Register Allocation
5.     Linking
 
IX.     Data Abstraction
1.     Encapsulation
2.     Inheritance
3.     Initialization
4.     Finalization
5.     Method Binding
 
X.      Functional and Logic Programming Languages
 
XI.     Concurrency
1.     Threads
2.     Shared Memory
3.     Message Passing
 
XII.   Code Improvements
1.     Dataflow Analysis
2.     Redundancy Elimination

Learning resources

Textbook

Lecture Notes

Reference books

D. A. Watt, D. F. Brown, D. Brown, D. Watt:
Programming Language Processors in Java: Compilers and Interpreters, Morgan Kaufmann Publishers, 2000.
 
R.W. Sebesta:
Concepts of Programming Languages, 4th Edition, Addison-Wesley, 1999.
 
A. W. Appel, J. Palsberg:
Modern compiler implementation in Java, 2nd Edition, Cambridge University Press, 2002.
 
B.J. MacLennan:
Principles of Programming Languages: Design, Evaluation, and Implementation, 3rd Edition, Oxford University Press, 1999.
 
N. Wirth:
Compiler Construction, Addison-Wesley, 1996.
 
B. C. Pierce:
Types and Programming Languages, The MIT Press, 2002.
 
A. Sampaio:
An Algebraic Approach To Compiler Design, World Scientific, 1997.
 
R. Wilhelm, D. Maurer:
Compiler Design Reading, Addison-Wesley, 1995.
 
A. V. Aho, R. Sethi, J. D. Ullman:
Compilers: Principles, Techniques, and Tools Reading, Addison-Wesley, 1986.
 
S.S. Muchnick:
Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, 1997.
 
T. Pittman, J. Peters, J. Peters:
The Art of Compiler Design: Theory and Practice, Prentice Hall, 1991.

Grading

The final grade will be computed from the following constituent parts:
 
Mid-semester exam            - (20%)
Final exam                         - (50%)
Assignments/projects          - (30%)
 
Open-book examination is used for both mid-semester and final exam.

Back to the list

 

Login Form

Search

School of Engineering and technologies     Asian Institute of Technology