AT70.07 Programming Languages and Compilers

Introduction and An Overview, Programming Language Syntax, Names, Scopes and Bindings, Semantic Analysis, Control Flow, Data Types, Control Abstraction, Code Generation in Compilation, Data Abstraction, Functional and Logic Programming Languages, Concurrency, Code Improvements.CSIM Logo WelcomeCourses
Faculty, Student, Staff
Projects and reports
Conferences, workshop and seminars
Laboratories and reasearch facilities
Information related to CSIM
Information non-related to CSIM
Address, map, phone, etc.
Search

Semester:
January

Rationale:
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.

Catalog Description:
Introduction and An Overview, Programming Language Syntax, Names, Scopes and Bindings, Semantic Analysis, Control Flow, Data Types, Control Abstraction, Code Generation in Compilation, Data Abstraction, Functional and Logic Programming Languages, Concurrency, Code Improvements.

Credits:
3(3-0)

Prerequisite:
None

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

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 System:
The final grade will be computed from the following constituent parts: mid-semester exam (20%), final exam (50%) and assignments/projects (30%).Open-book examination is used for both mid-semester and final exam. ~

Instructor:
Prof. Phan Minh Dung

CSIM home pageWMailAccount managementCSIM LibraryNetwork test toolsSearch CSIM directories
Contact us: Olivier Nicole CSIM    SET    AIT Last update: Jul 2003