The course covers basic and advanced techniques of the principles of programming languages that are needed in various branches of Computer Science. History of programming languages. Syntax and Semantics. Data types, scope, calling conventions, implementation of functions and procedures. Basic categories of programming languages: imperative, object-oriented, logic, functional, parallel. Program transformations and optimizations. Proving program correctness using Hoare logic. Lambda calculus: reductions, normal forms, Church-Rosser theorem, expressiveness, applications in programming languages. Typed lambda calculus. Theory of types and type checking.
- Basic textbooks in Greek: M. Scott, Pragmatics of Programming Languages, Kleidarithmos editions, Athens 2008.
- Adam Brooks Webber, Modern Programming Languages: A Practical Introduction, Crete University Press, 2009.
- P. Stamatopoulos, Logic and Functional Programming, 2016.
- N. Papaspyrou and P. Rondogiannis, Principles of Programming Languages (notes).
- Additionally, the students have access to transparencies by P. Rondogiannis, and recommended literature in English.