Principles of Programming Languages
Weekly Hours: 5
ECTS Credits: 6
Course Homepage: http://www.cse.uoi.gr/~cnomikos/courses/pl/pl-main.htm
Description: Classification of programming languages. Implementation methods: compilation, interpretation and hybrid methods. Syntax and semantics. BNF and syntactic diagrams. Imperative languages. Constants, variables and expressions. Expression evaluation. Assignment, selection and iteration commands. Binding, lifetime and scope. Memory management. Subprograms and parameter passing. Data types. Type implementation. Type equivalence. Functional programming. The Haskell programming language. Recursive functions. Lazy evaluation. Higher order functions. Polymorphism. Logic programming. The Prolog programming language. Predicates, terms, facts, rules and queries. Recursive predicates. Unification and goal satisfaction algorithms. Cut and negation as failure. Object-oriented languages: objects, classes, encapsulation, inheritance.