IA010 Principles of Programming Languages

Faculty of Informatics
Autumn 2024
Extent and Intensity
2/0/0. 2 credit(s) (plus extra credits for completion). Recommended Type of Completion: zk (examination). Other types of completion: k (colloquium), z (credit).
In-person direct teaching
Teacher(s)
Dr. rer. nat. Achim Blumensath (lecturer)
Guaranteed by
Dr. rer. nat. Achim Blumensath
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Mon 23. 9. to Mon 16. 12. Mon 14:00–15:50 A319
Prerequisites
Knowledge of at least one imperative language (e.g. C/C++/Java/...) and one functional one. In particular, familiarity with Haskell is recommended (although not strictly required). Knowledge of additional programming languages is an advantage.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 29 fields of study the course is directly associated with, display
Course objectives
The topic of this course is the design of programming languages. We will take a look at various programming language features and discuss them from a user's perspective. By the end of the course, the students will be able:
to understand the various features of a given programming language , including their advantages and disadvantages;
to choose a programming language and programming paradigm suitable for a given problem domain;
to analyse both strong and weak aspects of a given programming language;
to quickly obtain an in-depth understanding a of new programming language.
Learning outcomes
After successfully completing this course students will be familiar with the most common features of programming languages. They will know how these features can be used. They will be able to discuss which features can be used to solve a given programming problem and the advantages and disadvantages of the various options.
Syllabus
  • A brief history of programming languages.
  • Expressions and functions. Scoping. Functional programming.
  • Types and type checking. Polymorphism. Type inference.
  • State and side effects. Imperative Programming.
  • Modules. Abstract data types.
  • Control flow. Continuations. Generators. Exceptions. Algebraic effects.
  • Declarative Programming. Single assignment variables. Unification. Backtracking.
  • Object oriented programming. Dynamic Dispatch. Subtyping. Encapsulated state. Inheritance.
  • Concurrency. Fibres. Message passing. Shared memory.
Literature
    recommended literature
  • VAN ROY, Peter and Seif HARIDI. Concepts, techniques, and models of computer programming. Cambridge, Massachusetts: MIT Press, 2004, xxvii, 900. ISBN 0262220695. info
  • SEBESTA, Robert W. Concepts of Programming Languages. 10th Edition. Addison-Wesley, 2012, 816 pp. ISBN 978-0-13-139531-2. info
  • Programming language pragmatics. Edited by Michael Lee Scott. 2nd ed. Oxford: Elsevier Science [distributor], 2006, xxxi, 875. ISBN 9780126339512. info
Teaching methods
The course is organized as a series of lectures.
Assessment methods
Evaluation: final written exam.
Language of instruction
English
Further Comments
Study Materials
The course is taught annually.
The course is also listed under the following terms Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Autumn 2021, Autumn 2022, Autumn 2023.
  • Enrolment Statistics (recent)
  • Permalink: https://is.muni.cz/course/fi/autumn2024/IA010