CENG 516

Advanced Programming Languages

Functional and logic programming, concepts of programming language design, and formal reasoning about programs and programming languages.

Course Objectives

1. To understand fundamental concepts in programming languages.

2. To analyze and design programming languages.

3. To study some recent topics in programming languages research.

Recommended or Required Reading

B. C. Pierce, Types and Programming Languages , MIT Press, 2002. ,G. Winskel, The Formal Semantics of Programming Languages , MIT Press, 1993.

Learning Outcomes

1. Understand, generalize and analyse different programming languages.

2 Design and implement programming languages.

3 Compare and evaluate different programming languages.

4 Apply different programming languages to real world problems.

Topics
Introduction to programming languages
Syntax and semantics I
Syntax and semantics II
Denotational semantics
Type theory I
Type theory II
Lambda calculus I
Lambda calculus II
Functions
Axiomatic semantics I
Axiomatic semantics II
Verifying program properties with theorem provers
Logic programming I
Logic programming II

Grading

Midterm: 30%

Presentation: 40%

Final: 30%