|
|
|
||
|
The course treats programming languages as the subject of study. It introduces basic principles and concepts of paradigms including structured, object-oriented and functional programming. The concepts are
illustrated through examples in concrete programming and students will gain hands-on experience implementing some of the concepts in practice.
Last update: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
|
|
||
|
Credit and an exam are required to complete the course. Credit will be awarded for successful completion of assignments given during the semester or for completing a credit program within the scope agreed upon with the instructor. Last update: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
|
|
||
|
1. John C. Mitchell. Concepts in Programming Languages. ISBN: 978-0521780988, Cambridge University Press, 2003. 2. Mark Priestley. A Science of Operations: Machines, Logic and the Invention of Programming. ISBN 978-1-84882-554-3, Springer, 2011. 3. Robert Nystrom. Crafting interpreters. ISBN: 978-0990582939, Genever Benning, 2021. 4. Ramsey, Norman. Programming Languages: Build, Prove, and Compare. ISBN: 9781107180185. Cambridge University Press, 2022. Last update: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
|
|
||
|
The exam is oral. The requirements correspond to the syllabus of the course in the scope that was presented at the lectures. Last update: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
|
|
||
|
Origins of programming languages Early history of programming languagesUnstructured programming Scientific, business and symbolic programming Models of programming languages Specifying the syntax of a languageAbstract machines and semantic models Lambda calculus as a programming language The Algol programming paradigm Structured programming and block structuresParameter passing, variable scoping, exceptions Language safety, data types and static typing Functional programming paradigm Programming with expressions and functionsAlgebraic data types and function types Type checking and type inference Object-orientation and data abstraction Modules and abstract data typesEncapsulation, inheritance and subtyping Prototype-based and class-based OO Further programming paradigms Logic programming, unification and resolutionAsynchronous, reactive and concurrent programming Metaprogramming, event-driven programming Last update: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
|