460-4090/01 – Programming Paradigms (PP)

Gurantor departmentDepartment of Computer ScienceCredits4
Subject guarantorIng. Marek Běhálek, Ph.D.Subject version guarantorIng. Marek Běhálek, Ph.D.
Study levelundergraduate or graduateRequirementChoice-compulsory
Year1Semesterwinter
Study languageCzech
Year of introduction2015/2016Year of cancellation2021/2022
Intended for the facultiesFEIIntended for study typesFollow-up Master
Instruction secured by
LoginNameTuitorTeacher giving lectures
BEH01 Ing. Marek Běhálek, Ph.D.
Extent of instruction for forms of study
Form of studyWay of compl.Extent
Full-time Graded credit 2+2
Part-time Graded credit 0+14

Subject aims expressed by acquired skills and competences

The aim of Programming Paradigms course is to present less frequently used programming languages and alternative methods of software development. Examples of such technologies are a functional programming, constraint programming or verifications. Students learn discussed technologies on prepared examples. Together with selected programming paradigms and technologies, also appropriate tools to work with them will be demonstrated. After completing the course, students should know about a wide range of alternative technologies, and they should be able to recognize tasks, for which they are simplifying the solution.

Teaching methods

Lectures
Tutorials

Summary

Currently, the most widely used programming languages (such as C ++, Java, PHP, C #) are imperative and integrate object-oriented programming. The aim of Programming Paradigms course is to show students less frequently used programming languages and alternative methods of software development. Examples of such technologies are a functional programming, constraint programming or verifications. The course does not provide a complete overview of such technologies and it does not aim to show these technologies in detail, but alternative approaches for solving different types of problems are shown. The course is practically oriented. Students learn discussed technologies on prepared examples. Together with selected programming paradigms and technologies, also appropriate tools to work with them will be demonstrated. After completing the course, students should know about a wide range of alternative technologies, and they should be able to recognize tasks, where they are simplifying the solution.

Compulsory literature:

The materials are continuously published on: http://www.cs.vsb.cz/behalek/education/pp/

Recommended literature:

Materials for programming language Haskell from: http://www.haskell.org Materials for programming language Prolog from: http://www.swi.psy.uva.nl/projects/SWI-Prolog/ Simon Thompson: Haskell: The Craft of Functional Programming, Addison-Wesley Professional; 3 edition (October 2, 2011), English, ISBN-10: 0201882957

Way of continuous check of knowledge in the course of semester

The course is finished with classified credit. Points can be obtained mainly from various practical tasks that will be assigned during the semester. These tasks will be solved both in the laboratories and as homeworks

E-learning

The course is not taught in the e-lerning form. Prepared presentations and exercises are continuously published at: http://www.cs.vsb.cz/behalek/education/pp.

Other requirements

No additional requirements.

Prerequisities

Subject has no prerequisities.

Co-requisities

Subject has no co-requisities.

Subject syllabus:

Course curriculum Week 1 - Introduction to Functional Programming - description of declarative programming, theoretical background, lambda calculus. Week 2 - Programming with recursion, pattern matching, higher-order functions. Week 3 - The type system, user-defined types. Week 4 - Functions for working with lists. Week 5 - Lazy evaluation, processing errors. Week 6 - Input - output operations Week 7. - Logic Programming Week 8. - Constraint Programming Week 9. - Concurrent programming - demonstration of techniques that can be easily used in common programs such as OpenMP or map / reduce programming. Week 10. - Visual programming - a brief introduction to Petri nets, the tool Kaira, later will be used for verification. Week 11. - Language oriented programming Week 12. - Brief introduction how to describe a semantic of programming languages. Week 13. - Basic concepts of testing and verifications, types of verification tools Week 14. - Practical examples of verification tools Assignments content correspond to the content of presentations. All exercises will be in the computer classroom. Contents of exercises 1) Implementation of simple functions in Haskell. 2) Higher order functions. 3) Working with lists. 4) User-defined data types. 5) Type classes 6) Work with the input and output 7) Sample programs in Prolog 8) Implementation of selected algorithms of Constraint Programming 9) Implementation of sample applications with OpenMP 10) Implementation of MPI applications in the tool Kaira 11) Solution of the problems with using domain-specific programming 12) The definitions in simple language denotational semantics 13) Sample verification in SPIN tools and Uppaal 14) Verification of applications that were created in Kaira in 10th assignment

Conditions for subject completion

Full-time form (validity from: 2015/2016 Winter semester, validity until: 2021/2022 Summer semester)
Task nameType of taskMax. number of points
(act. for subtasks)
Min. number of pointsMax. počet pokusů
Graded credit Graded credit 100  51 3
Mandatory attendence participation: 80% attendance at the exercises

Show history

Conditions for subject completion and attendance at the exercises within ISP:

Show history

Occurrence in study plans

Academic yearProgrammeBranch/spec.Spec.ZaměřeníFormStudy language Tut. centreYearWSType of duty
2021/2022 (N0688A140014) Industry 4.0 P Czech Ostrava 1 Optional study plan
2021/2022 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology P Czech Ostrava 1 Choice-compulsory study plan
2021/2022 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology K Czech Ostrava 1 Choice-compulsory study plan
2020/2021 (N0688A140014) Industry 4.0 P Czech Ostrava 1 Optional study plan
2020/2021 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology P Czech Ostrava 1 Choice-compulsory study plan
2020/2021 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology K Czech Ostrava 1 Choice-compulsory study plan
2019/2020 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology P Czech Ostrava 1 Choice-compulsory study plan
2019/2020 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology K Czech Ostrava 1 Choice-compulsory study plan
2018/2019 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology P Czech Ostrava 1 Choice-compulsory study plan
2018/2019 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology K Czech Ostrava 1 Choice-compulsory study plan
2017/2018 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology P Czech Ostrava 1 Choice-compulsory study plan
2017/2018 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology K Czech Ostrava 1 Choice-compulsory study plan
2016/2017 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology P Czech Ostrava 1 Choice-compulsory study plan
2016/2017 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology K Czech Ostrava 1 Choice-compulsory study plan
2015/2016 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology P Czech Ostrava 1 Choice-compulsory study plan
2015/2016 (N2647) Information and Communication Technology (2612T025) Computer Science and Technology K Czech Ostrava 1 Choice-compulsory study plan

Occurrence in special blocks

Block nameAcademic yearForm of studyStudy language YearWSType of blockBlock owner

Assessment of instruction



2021/2022 Winter
2020/2021 Winter
2019/2020 Winter
2018/2019 Winter
2017/2018 Winter
2016/2017 Winter
2015/2016 Winter