SubjectsSubjects(version: 978)
Course, academic year 2025/2026
   Login via CAS
   
Principles of Programming Languages - NPRG084
Title: Principy programovacích jazyků
Guaranteed by: Department of Software and Computer Science Education (32-KSVI)
Faculty: Faculty of Mathematics and Physics
Actual: from 2025
Semester: summer
E-Credits: 5
Hours per week, examination: summer s.:2/2, Ex [HT]
Capacity: unlimited
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: Czech
Teaching methods: full-time
Guarantor: RNDr. Vít Šefl, Ph.D.
Teacher(s): doc. Mgr. Tomáš Petříček, Ph.D.
RNDr. Vít Šefl, Ph.D.
Incompatibility : NPRG003
Annotation -
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)
Course completion requirements -

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)
Literature -

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)
Requirements to the exam -

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)
Syllabus -

Origins of programming languages

Early history of programming languages
Unstructured programming
Scientific, business and symbolic programming

Models of programming languages

Specifying the syntax of a language
Abstract machines and semantic models
Lambda calculus as a programming language

The Algol programming paradigm

Structured programming and block structures
Parameter passing, variable scoping, exceptions
Language safety, data types and static typing

Functional programming paradigm

Programming with expressions and functions
Algebraic data types and function types
Type checking and type inference

Object-orientation and data abstraction

Modules and abstract data types
Encapsulation, inheritance and subtyping
Prototype-based and class-based OO

Further programming paradigms

Logic programming, unification and resolution
Asynchronous, reactive and concurrent programming
Metaprogramming, event-driven programming

Last update: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html