460-4090/01 – Paradigmata programování (PP)
Garantující katedra | Katedra informatiky | Kredity | 4 |
Garant předmětu | Ing. Marek Běhálek, Ph.D. | Garant verze předmětu | Ing. Marek Běhálek, Ph.D. |
Úroveň studia | pregraduální nebo graduální | Povinnost | povinně volitelný |
Ročník | 1 | Semestr | zimní |
| | Jazyk výuky | čeština |
Rok zavedení | 2015/2016 | Rok zrušení | 2021/2022 |
Určeno pro fakulty | FEI | Určeno pro typy studia | navazující magisterské |
Cíle předmětu vyjádřené dosaženými dovednostmi a kompetencemi
Cílem předmětu Paradigmata programování je posluchače seznámit s méně rozšířenými programovacími jazyky a alternativními způsoby vývoje softwaru. Příkladem takovýchto technologií je funkcionální programování, řešení úloh s omezeními nebo verifikace. Posluchači si probírané technologie vyzkouší na připravených příkladech. Souběžné s probíranými paradigmaty programování a technologiemi budou posluchači seznámeni s vhodnými nástroji pro práci s nimi.
Po absolvování předmětu, by studenti měli vědět o celé řadě alternativních technologií a měli by rozpoznat úlohy, pro které jejich použití usnadňuje řešení.
Vyučovací metody
Přednášky
Cvičení (v učebně)
Anotace
V současnosti nejvíce používané programovací jazyky (jako: C++, Java, PHP, C#) jsou imperativní a integrují objektově orientované programování. Cílem předmětu Paradigmata programování je posluchače seznámit s méně rozšířenými programovacími jazyky a alternativními způsoby vývoje softwaru. Příkladem takovýchto technologií je funkcionální programování, řešení úloh s omezeními nebo verifikace.
Předmět si neklade za cíl poskytnout kompletní přehled takovýchto technologií, ani rozebrat tyto technologie do detailu, ale ukáže alternativní přístup při řešení různých typů problémů. Předmět je prakticky orientovaný. Posluchači si probírané technologie vyzkouší na připravených příkladech. Souběžné s probíranými paradigmaty programování a technologiemi budou posluchači seznámeni s vhodnými nástroji pro práci s nimi.
Po absolvování předmětu, by studenti měli vědět o celé řadě alternativních technologií a měli by rozpoznat úlohy, kde usnadňují jejich řešení.
Povinná literatura:
Materiály k předmětu jsou průběžně zveřejňované na: http://www.cs.vsb.cz/behalek/education/pp/
Doporučená literatura:
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
Forma způsobu ověření studijních výsledků a další požadavky na studenta
Předmět je ukončen klasifikovaným zápočtem. Body lze získat zejména za různé praktické úkoly, které budou zadávány v průběhu semestru. Tyto úkoly budou řešeny jak přímo v laboratořích tak jako domácí úkoly.
E-learning
Kurz není vyučován v e-lerningové formě. Prezentace z přednášek a připravená cvičení jsou průběžně zveřejňována na: http://www.cs.vsb.cz/behalek/education/pp.
Další požadavky na studenta
Další požadavky na studenta nejsou kladeny.
Prerekvizity
Předmět nemá žádné prerekvizity.
Korekvizity
Předmět nemá žádné korekvizity.
Osnova předmětu
Osnova přednášek
1. týden - Úvod do Funkcionálního programování - popis deklarativního způsobu programování, teoretické základy, lambda kalkul.
2. týden - Programování s rekurzí, pattern matching, funkce vyšších řádů.
3. týden - Typový systém, uživatelsky definované typy.
4. týden - Funkce pro práci se seznamy.
5. týden - Líné vyhodnocování, zpracování chyb.
6. týden - Vstupně - výstupní operace
7. týden - Logické programování
8. týden - Constraint programming
9. týden - Concurrent programming - ukázka technik, které lze jednoduše využít v běžných programech jako OpenMP nebo map/reduce programming.
10. týden - Vizuální programování – stručný úvod do Petriho sítí, nástroj Kaira, později bude použit i pro verifikace.
11. týden - Language oriented programming
12. týden - Stručný úvod do popisu sémantiky programovacích jazyků. Praktická ukázka jak lze popsat sémantiku (programovacího) jazyka.
13. týden - Základní pojmy z oblasti testování a verifikace, typy verifikačních nástrojů
14. týden - Praktické příklady verifikačních nástrojů
Obsah cvičení koresponduje s obsahem přednášek. Všechna cvičení budou na počítačové učebně.
Obsah cvičení
1) Implementace jednoduchých funkcí v jazyce Haskell.
2) Funkce vyšších řádů.
3) Práce se seznamy.
4) Uživatelsky definované datové typy.
5) Typové třídy
6) Práce se vstupem a výstupem
7) Ukázka programování v jazyce Prolog
8) Implementace vybraného algoritmu z oblasti Constraint programming
9) Implementace ukázkových aplikaci s OpenMP
10) Implementace MPI aplikace v nástroji Kaira
11) Řešení úlohy s využitím doménově specifického programování
12) Definice jednoduchého jazyka v denotační sémantice
13) Ukázka verifikace v nástrojích SPIN a UPPAL
14) Verifikace aplikace vytvořené v nástroji Kaira z cvičení 10.
Podmínky absolvování předmětu
Výskyt ve studijních plánech
Výskyt ve speciálních blocích
Hodnocení Výuky