Principles of Programming Languages

ID : 
ΘΠ01
Semester : 
5
Credit hours (lecture): 
3
Credit hours (discussion): 
1
Track: 
Theoretical Informatics

History of Programming languages. Syntax and semantics. Data types, scoping, procedures, argument passing methods, procedure implementation. Basic categories of programming languages: imperative, object-oriented, logic, functional, parallel (main characteristics of each category and presentation of the main languages). Theoretical issues in programming languages. Techniques for transforming and optimizing programs. Proving program correctness using logic (Floyd-Hoare logic). Untyped Lambda Calculus: conversions, normal forms, Church-Rosser theorem, expressive power, applications in programming languages. Typed Lambda Calculus. Theory of types and type-checking.