Logo ČVUT
CZECH TECHNICAL UNIVERSITY IN PRAGUE
STUDY PLANS
2021/2022

Programming Paradigms

Login to KOS for course enrollment Display time-table
Code Completion Credits Range Language
BI-PPA Z,ZK 5 2P+2C Czech
Lecturer:
Jan Janoušek (guarantor), Petr Máj
Tutor:
Petr Máj, Tomáš Pecka, Jan Sliacký
Supervisor:
Department of Theoretical Computer Science
Synopsis:

The course deals with basic paradigms of high-level programming languages, including their basic execution models, benefits, and limitations of particular approaches. Functional programming paradigm and its basic principles are explained in details. Logic programming is introduced as another way of declarative programming. The principles are demonstrated on lambda calculus and on Lisp (Racket) and Prolog programming languages. Moreover, usage of these principles is demonstrated on modern mainstream programming languages such as C++ and Java.

Requirements:

Basic knowledge of imperative programming and of OOP (C and C++)

Syllabus of lectures:

1. High-level programming languages and their paradigms.

2. Basic runtime environment for executing programs.

3. Functional programming: Lambda calculus.

4. Informal introduction to LISP, from Lambda calculus to LISP.

5. Recursion, higher order functions and their composition.

6. Macros.

7. Functional programming in modern programming languages.

8. [2] Efficient interpretation of functional languages: SECD virtual machine.

10. Programming in logic: Prolog - introduction.

11. Unification, cut operator.

12. [2] More complex examples, graph algorithms in Prolog.

Syllabus of tutorials:

1. Lambda calculus I

2. Lambda calculus II

3. Lambda calculus III

4. Lisp I

5. Lisp II

6. Lisp III

7. Prolog I

8. Prolog II

Study Objective:

The goal of the course is to provide an overview of programming paradigms. Basic principles and concepts of high-level programming languages based on the programming paradigms are described and compared. The course deals with functional and logic programming in details. Students should learn both basic theoretical principles and programming practical examples. Principles of implementing programming languages are discussed as well.

Study materials:

1. Lee K. D. : Foundations of Programming Languages. Springer, 2014. ISBN 978-3-319-13314-0.

2. Hoyte D. : Let Over Lambda. lulu.com, 2008. ISBN 978-1435712751.

3. Brammer M. : Logic Programming with Prolog (2nd Edition). Springer, 2013. ISBN 978-1-4471-5487-7.

4. Weitz E. : Common Lisp Recipes: A Problem-Solution Approach. Apress, 2016. ISBN 978-1-4842-1177-9.

Note:
Further information:
https://courses.fit.cvut.cz/BI-PPA/
Time-table for winter semester 2021/2022:
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Mon
Tue
Fri
Thu
roomT9:105
Pecka T.
Sliacký J.

18:00–19:30
(lecture parallel1
parallel nr.101)

Dejvice
Posluchárna
Fri
roomT9:155
Janoušek J.
Máj P.

11:00–12:30
(lecture parallel1)
Dejvice
Posluchárna
roomTH:A-s135
Pecka T.
Máj P.

14:30–16:00
(lecture parallel1
parallel nr.102)

Thákurova 7 (FSv-budova A)
As135
Time-table for summer semester 2021/2022:
Time-table is not available yet
The course is a part of the following study plans:
Data valid to 2021-09-25
For updated information see http://bilakniha.cvut.cz/en/predmet3461206.html