IA010 Principles of Programming Languages

Fakulta informatiky
podzim 2023
Rozsah
2/0/0. 2 kr. (plus ukončení). Doporučované ukončení: zk. Jiná možná ukončení: k, z.
Vyučující
Dr. rer. nat. Achim Blumensath (přednášející)
Garance
Dr. rer. nat. Achim Blumensath
Katedra teorie programování – Fakulta informatiky
Dodavatelské pracoviště: Katedra teorie programování – Fakulta informatiky
Rozvrh
Út 14:00–15:50 A218
Předpoklady
Knowledge of at least one imperative (e.g. C/C++/Java) and one functional language (e.g. Haskell). Knowledge of additional programming languages is an advantage.
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
Cíle předmětu
By the end of the course, the student 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;
Výstupy z učení
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.
Osnova
  • 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.
Literatura
    doporučená literatura
  • VAN ROY, Peter a 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 s. 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
Výukové metody
The course is organized as a series of lectures.
Metody hodnocení
Evaluation: final written exam.
Vyučovací jazyk
Angličtina
Další komentáře
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2015, jaro 2016, jaro 2017, jaro 2018, jaro 2019, jaro 2020, jaro 2021, podzim 2021, podzim 2022, podzim 2024.