FI:IA010 Principles of prog. lang. - Course Information
IA010 Principles of Programming Languages
Faculty of InformaticsAutumn 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.
- Enrolment Statistics (recent)
- Permalink: https://is.muni.cz/course/fi/autumn2024/IA010