Principles of programming languages

Semester:
5ο
Course Type:
Elective Specialization courses (ΠΜ-E)
Track:
CS (Computer Science)
Code:
ΘΠ01
ECTS:
6
TEACHING HOURS per week
Theory:
3
Seminar:
1
Laboratory:
0
Specializations
Foundations of Computer Science (Ε1):
B Βασικό
Data and Knowledge Management (Ε2):
B Βασικό
Software (Ε3):
-
Hardware and Architecture (Ε4):
-
Communications and Networking (Ε5):
-
Signal and Information Processing (Ε6):
-
Related Courses
Course Content

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.

LITERATURE AND STUDY MATERIALS - READING LIST
  • 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.