460-2054/02 – Funkcionální programování (FPR)

Garantující katedraKatedra informatikyKredity3
Garant předmětuIng. Marek Běhálek, Ph.D.Garant verze předmětuIng. Marek Běhálek, Ph.D.
Úroveň studiapregraduální nebo graduálníPovinnostpovinný
Ročník1Semestrzimní
Jazyk výukyangličtina
Rok zavedení2019/2020Rok zrušení2022/2023
Určeno pro fakultyFEIUrčeno pro typy studiabakalářské
Výuku zajišťuje
Os. čís.JménoCvičícíPřednášející
BEH01 Ing. Marek Běhálek, Ph.D.
KOT06 Ing. Martin Kot, Ph.D.
Rozsah výuky pro formy studia
Forma studiaZp.zak.Rozsah
prezenční Klasifikovaný zápočet 1+2

Cíle předmětu vyjádřené dosaženými dovednostmi a kompetencemi

Základním cílem předmětu bude dovednost zapsat jednoduché algoritmy pomocí funkcionálního stylu programování. Přesněji řečeno, studenti pochopí rekurzi a vybrané rekurzivní datové struktury, budou schopni využívat funkce vyššího řádu, budou schopni definovat funkce pomocí techniky pattern matching. Budou schopni používat mechanismus zapouzdření pro funkce jako jsou uzávěry či modulární rozhraní a správně rozumět proměnným a jejich lexikálnímu rozsahu platnosti v programech. Na praktické úrovni budou schopni zapsat tyto základní algoritmy v programovacím jazyce Haskell. Navíc budou schopni rozpoznat funkcionální styl programování, pochopí výhody a nevýhody tohoto stylu programování a budou schopni porovnat tento styl programování s jinými přístupy, jako je imperativní nebo objektově orientované programování.

Vyučovací metody

Přednášky
Individuální konzultace
Cvičení (v učebně)
Projekt

Anotace

Předmět seznamuje s funkcionálním stylem programování. Zahrnuje základní vlastnosti funkcionálního programování, jako je programování bez vedlejších efektu, funkce jako hodnota prvního řádu, funkce vyšších řádů, rekurze, přizpůsobení, technika pattern matching nebo uzávěry funkcí. Rovněž kurz představuje vybrané datové struktury jako je seznam nebo strom a funkcionální styl práce s těmito strukturami. Jako programovací jazyk bude použit Haskell. Je to čistě funkcionální, staticky typovaný a líně vyhodnocovaný jazyk.

Povinná literatura:

O'Sullivan B., Goerzen J., Stewart D.: Real world Haskell, O'Reilly Media, Inc. 2008. ISBN:0596514980 - zdarma k dispozici na: http://book.realworldhaskell.org/read/

Doporučená literatura:

Thompson S.: The Haskell: The Craft of Functional Programming (3nd ed.). Addison-Wesley Professional, October 2, 2011, ISBN-10: 0201882957. Lipovaca M.:Learn You a Haskell for Great Good!: A Beginner's Guide (1st ed.). No Starch Press, San Francisco, CA, USA, 2011 - zdarma k dispozici na: http://learnyouahaskell.com/

Forma způsobu ověření studijních výsledků a další požadavky na studenta

Během cvičení budou studenti programovat zadané úkoly. Výsledky těchto úkolů budou důležitou součástí závěrečného hodnocení. Bude zadáno nejméně sedm hodnocených úkolů. Za tyto úkoly bude možné získat přibližně 70 bodů. Dále budou zadány dva menší projekty. Za ně bude možné získat zbývající body.

E-learning

Další požadavky na studenta

Na studenty nejsou kladeny žádné další požadavky. Na studenty nejsou kladeny žádné další požadavky.

Prerekvizity

Předmět nemá žádné prerekvizity.

Korekvizity

Předmět nemá žádné korekvizity.

Osnova předmětu

Seznam přednášek Základní úvod do funkcionálního programování 1. Úvod do kurzu. Úvod do funkcionálního programování. Úvod do programování v jazyku Haskell (pomocí interpretu GHC). 2. Základní definice funkce. Jak psát jednoduché (rekurzivní) funkce v jazyce Haskell. 3. Základní datové typy a jejich použití. 4. Revize definice funkce: využití techniky pattern matching 5. Seznamy a n-tice - základní notace, jak je používat v programech. 6. Práce se seznamy. 7. Funkcí vyššího řádu. Funkce jako hodnota prvního řádu. Funkce map - fold. 8. Generátory seznamů. 8. Uživatelsky definované datové typy a způsob práce s nimi. 9. Rekurzivní datové typy a polymorfismus, částečně vyhodnocené funkce, základní úvod do typových tříd. 10. Abstraktní datové typy (seznam, fronta, strom). Pokročilá témata 11. Úvod do lambda kalkulu, výpočet jako přepisování, líné hodnocení. 13. Vstup a výstup. 14. Programovací jazyk Elm. Seznam cvičení (očekává se, že všechna cvičení budou v počítačových učebnách) 1. Interpret GHC - základní použití 2. Implementace základních funkcí pro výpočet např. faktoriálu, sekvence Fibonacciho čísel nebo největšího společného dělitele. 3. Funkce a operátory, které pracují s čísly, řetězci nebo znaky. 4. Implementace složitějších funkcí, které používají techniku pattern matching nebo chráněné výrzy. 5. - 6. Implementace funkcí, které pracují se seznamy jako: length, reverse, (++), zip, zipWith. 7. Použití standardních funkcí pracujících se seznamy jako map, fold, concat atd. 8. Generátory seznamů. 9. Hodnocení prvního projektu. 10. Definice datového typu pro matematické výrazy. Vyhodnocení těchto výrazů. 11. Definice binárního stromu. Implementace funkcí, které pracují s tímto stromem. 12. Implementace abstraktních datových typů - zásobník a fronta. 13. Vstup a výstup v jazyce Haskell - výpis do standardní výstup, čtení souboru. 14. Hodnocení druhého projektu.

Podmínky absolvování předmětu

Prezenční forma (platnost od: 2020/2021 zimní semestr, platnost do: 2021/2022 letní semestr)
Název úlohyTyp úlohyMax. počet bodů
(akt. za podúlohy)
Min. počet bodůMax. počet pokusů
Klasifikovaný zápočet Klasifikovaný zápočet 100 (100) 51 3
        1. Domácí úkol Projekt 25  0
        2. Domácí úkol Projekt 25  0
        1. Programovací úkol Laboratorní práce 20  7
        2. Programovací úkol Laboratorní práce 20  7
        Psaný test Písemka 10  0
Rozsah povinné účasti: Nejméně 80%

Zobrazit historii

Podmínky absolvování předmětu a účast na cvičeních v rámci ISP: Nejméně 80%

Zobrazit historii

Výskyt ve studijních plánech

Akademický rokProgramObor/spec.Spec.ZaměřeníFormaJazyk výuky Konz. stř.RočníkZLTyp povinnosti
2022/2023 (B0613A140010) Informatika INF P angličtina Ostrava 1 povinný stu. plán
2021/2022 (B0613A140010) Informatika INF P angličtina Ostrava 1 povinný stu. plán
2020/2021 (B0613A140010) Informatika INF P angličtina Ostrava 1 povinný stu. plán
2019/2020 (B0613A140010) Informatika INF P angličtina Ostrava 1 povinný stu. plán

Výskyt ve speciálních blocích

Název blokuAkademický rokForma studiaJazyk výuky RočníkZLTyp blokuVlastník bloku

Hodnocení Výuky



2022/2023 zimní
2021/2022 zimní
2020/2021 zimní