Ιστορία των γλωσσών προγραμματισμού. Συντακτικό και σημασιολογία. Τύποι δεδομένων, εμβέλεια, διαδικασίες, μέθοδοι περάσματος παραμέτρων, υλοποίηση διαδικασιών. Βασικές κατηγορίες γλωσσών προγραμματισμού: διαδικαστικές, αντικειμενοστραφείς, λογικές, συναρτησιακές, παράλληλες (κύρια χαρακτηριστικά της κάθε κατηγορίας και αντιπροσωπευτικές γλώσσες). Θεωρητικά θέματα γλωσσών προγραμματισμού. Τεχνικές μετασχηματισμού και βελτιστοποίησης προγραμμάτων. Απόδειξη ορθότητας προγραμμάτων με τη χρήση της λογικής (λογική Floyd-Hoare). Λάμβδα-λογισμός χωρίς τύπους: μετατροπές, κανονικές μορφές, θεώρημα Church-Rosser, εκφραστική ισχύς, εφαρμογές στις γλώσσες προγραμματισμού. Λάμβδα-λογισμός με τύπους. Θεωρία τύπων και συστήματα εξαγωγής τύπων.