Foundations of Programming Languages
General
Code: ΕΠ50
Language: Greek
Delivery: Lectures, Labs
Prerequisites:
- Programming
- Data structures
Workload
- Lectures: 39.0 hours
- Lab: 0.0 hours
- Study: 60.0 hours
- Project: 26.0 hours
Course Content
- Overview of programming languages and their significance. The evolution of programming languages, levels of programming languages, programming paradigms, procedural and declarative programming languages.
- Syntax and syntactic analysis.
- Names and scopes, subprograms and parameter passing, activation records.
- Introduction to the functional programming paradigm: recursion and recursive functions, functions without side effects and referential transparency.
- Data types: primitive and constructed types, tuples, unions, subtypes. Type formats and pattern matching. Recursive type definitions. Type polymorphism. Type inference.
- Functions as data: anonymous functions, functions as parameters and higher-order functions, map and reduce operators. Functions as return values and partially applied functions.
- Introduction to the logic programming paradigm: terms and rules, unification and resolution, lists, backtracking and search.
Learning Outcomes
Upon completion of the course, students will be able to:
- Understand the fundamental concepts and principles of programming languages.
- Explore the different programming paradigms and their applications.
- Evaluate various programming languages based on their design features and trade-offs.
- Develop practical skills in selecting and using programming languages.
- Enhance their problem-solving ability through the study of different programming languages.
Skills
- Search, analysis and synthesis of data and information with the use of the assorted technologies
- Independent work
- Adaptation in new conditions
- Promoting free, creative and deductive reasoning
