Course Unit Code | 460-4090/01 |
---|
Number of ECTS Credits Allocated | 4 ECTS credits |
---|
Type of Course Unit * | Optional |
---|
Level of Course Unit * | Second Cycle |
---|
Year of Study * | First Year |
---|
Semester when the Course Unit is delivered | Winter Semester |
---|
Mode of Delivery | Face-to-face |
---|
Language of Instruction | Czech |
---|
Prerequisites and Co-Requisites | There are no prerequisites or co-requisites for this course unit |
---|
Name of Lecturer(s) | Personal ID | Name |
---|
| BEH01 | Ing. Marek Běhálek, Ph.D. |
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.
|
Learning Outcomes of the Course Unit |
---|
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.
|
Course Contents |
---|
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 |
Recommended or Required Reading |
---|
Required Reading: |
---|
The materials are continuously published on: http://www.cs.vsb.cz/behalek/education/pp/ |
Materiály k předmětu jsou průběžně zveřejňované na: http://www.cs.vsb.cz/behalek/education/pp/
|
Recommended Reading: |
---|
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 |
Materiály k programovacímu jazyku Haskell na: http://www.haskell.org
Materiály k programovacímu jazyku Prolog na:
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 |
Planned learning activities and teaching methods |
---|
Lectures, Tutorials |
Assesment methods and criteria |
---|
Task Title | Task Type | Maximum Number of Points (Act. for Subtasks) | Minimum Number of Points for Task Passing |
---|
Graded credit | Graded credit | 100 | 51 |