IB015 Neimperativní programování

Fakulta informatiky
podzim 2025
Rozsah
2/1/1. 4 kr. (plus ukončení). Ukončení: zk.
Vyučováno kontaktně
Vyučující
prof. RNDr. Jiří Barnat, Ph.D. (přednášející)
RNDr. Martin Jonáš, Ph.D. (cvičící)
Bc. Klára Barnatová (cvičící)
Bc. Filip Gregora (cvičící)
Bc. Ján Kapko (cvičící)
RNDr. Vít Musil, Ph.D. (cvičící)
Bc. Karel Procházka (cvičící)
Karel Pýcha (cvičící)
Michal Rábek (cvičící)
Bc. Jan Ryzí (cvičící)
Bc. Tereza Siková (cvičící)
Mgr. Dávid Šutor (cvičící)
Pavol Trnavský (cvičící)
Andrea Večerková (cvičící)
Garance
prof. RNDr. Jiří Barnat, Ph.D.
Katedra teorie programování – Fakulta informatiky
Kontaktní osoba: prof. RNDr. Jiří Barnat, Ph.D.
Dodavatelské pracoviště: Katedra teorie programování – Fakulta informatiky
Rozvrh
St 17. 9. až St 10. 12. St 8:00–9:50 Velký sál kina ART, St 10:00–11:50 Velký sál kina ART
  • Rozvrh seminárních/paralelních skupin:
IB015/01: Út 23. 9. až Út 16. 12. každé liché úterý 10:00–11:50 S405, K. Barnatová
IB015/02: Út 30. 9. až Út 9. 12. každé sudé úterý 10:00–11:50 S405, K. Barnatová
IB015/03: St 24. 9. až St 17. 12. každou lichou středu 12:00–13:50 C121, F. Gregora
IB015/04: St 1. 10. až St 10. 12. každou sudou středu 12:00–13:50 C121, F. Gregora
IB015/05: Čt 25. 9. až Čt 18. 12. každý lichý čtvrtek 10:00–11:50 S405, M. Jonáš
IB015/06: Čt 2. 10. až Čt 11. 12. každý sudý čtvrtek 10:00–11:50 S405, M. Jonáš
IB015/07: St 24. 9. až St 17. 12. každou lichou středu 10:00–11:50 S405, K. Barnatová
IB015/08: St 1. 10. až St 10. 12. každou sudou středu 10:00–11:50 S405, T. Siková
IB015/09: Pá 26. 9. až Pá 19. 12. každý lichý pátek 12:00–13:50 C121, J. Kapko
IB015/10: Pá 3. 10. až Pá 12. 12. každý sudý pátek 12:00–13:50 C121, J. Kapko
IB015/11: Út 23. 9. až Út 16. 12. každé liché úterý 12:00–13:50 C122, V. Musil
IB015/12: Út 30. 9. až Út 9. 12. každé sudé úterý 12:00–13:50 C122, V. Musil
IB015/13: Po 22. 9. až Po 15. 12. každé liché pondělí 16:00–17:50 C121, K. Procházka
IB015/14: Po 29. 9. až Po 8. 12. každé sudé pondělí 16:00–17:50 C121, K. Procházka
IB015/15: Po 22. 9. až Po 15. 12. každé liché pondělí 12:00–13:50 C121, K. Pýcha
IB015/16: Po 29. 9. až Po 8. 12. každé sudé pondělí 12:00–13:50 C121, K. Pýcha
IB015/17: Pá 26. 9. až Pá 19. 12. každý lichý pátek 8:00–9:50 C121, M. Rábek
IB015/18: Pá 3. 10. až Pá 12. 12. každý sudý pátek 8:00–9:50 C121, M. Rábek
IB015/19: Po 22. 9. až Po 15. 12. každé liché pondělí 16:00–17:50 S405, J. Ryzí
IB015/20: Po 29. 9. až Po 8. 12. každé sudé pondělí 16:00–17:50 S405, J. Ryzí
IB015/21: Čt 25. 9. až Čt 18. 12. každý lichý čtvrtek 12:00–13:50 C122, T. Siková
IB015/22: Čt 2. 10. až Čt 11. 12. každý sudý čtvrtek 12:00–13:50 C122, T. Siková
IB015/23: Čt 25. 9. až Čt 18. 12. každý lichý čtvrtek 18:00–19:50 C122, A. Večerková
IB015/24: Čt 2. 10. až Čt 11. 12. každý sudý čtvrtek 18:00–19:50 C122, A. Večerková
IB015/25: Út 23. 9. až Út 16. 12. každé liché úterý 18:00–19:50 S405, D. Šutor
IB015/26: Út 30. 9. až Út 9. 12. každé sudé úterý 18:00–19:50 S405, D. Šutor
Předpoklady
Studenti by měli vystačit s běžnými středoškolskými znalostmi a jistou schopností matematické abstrakce.
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 36 mateřských oborů, zobrazit
Cíle předmětu
Kurz seznamuje posluchače s funkcionálním a logickým programovacím paradigmatem. Programovací jazyky vynucující deklarativní způsob popisu algoritmu mají přivést studenty ke správným návykům, jichž využijí při pozdější tvorbě větších programových celků a to i v imperativních jazycích.
Výstupy z učení
Student bude po absolvování předmětu: - chápat principy funkcionálního výpočetního paradigmatu, - schopen dekomponovat výpočetní problém na jednotlivé funkce a tuto schopnost používat při vytváření vlastních kódů i v imperativních programovacích jazycích, - mít základní znalost programovacího jazyka Haskell, - schopen navrhovat a implementovat jednoduché rekurzivní funkce, - použít rekurzivně definované datové struktury.
Osnova
  • Funkcionální výpočetní paradigma a Haskell
  •   Programování a funkce;
  •   Seznamy, Typy, Rekurze
  •   Funkce vyšších řádů, Lambda funkce
  •   Akumulační funkce, Definice typů, Vstup/Výstup
  •   Redukční strategie, Nekonečné seznamy
  •   Vztah rekurze a indukce, Rekurzivní datové typy
  •   Časová složitost výpočtu, Typové třídy, Moduly
  •   Ukázky funkcionálně řešených problémů
  • Logické výpočetní paradigma a Prolog
  •   Neimperativní programování v Prologu
  •   Seznamy, Aritmetika, Tail rekurze v Prologu
  •   Řezy, vstup-výstup, všechna řešení
  •   Programování s omezujícími podmínkami
Literatura
  • THOMPSON, Simon. Haskell :the craft of functional programming. Harlow: Addison-Wesley, 1996, xx, 500 s. ISBN 0-201-40357-9. info
  • LIPOVAČA, Miran. Learn You a Haskell for Great Good!: A Beginner's Guide. First Edition. San Francisco, CA, USA: No Starch Press, 2011, 400 s. ISBN 978-1-59327-283-8. URL info
  • BLACKBURN, Patrick a Johan BOS. Learn Prolog Now! London: College Publications, 2016. Texts in Computing, volume 7. ISBN 1-904987-17-6. URL info
Záložky
https://is.muni.cz/ln/tag/FI:IB015!
Výukové metody
Kurs probíhá formou přednášek a samostatné domácí práce, a je doplněn nepovinným cvičením.
Metody hodnocení
Zkouška je písemná a má dvě části, povinnou a nepovinnou. Do závěrečného hodnocení se navíc mohou promítnout i body za domácí úlohy a aktivitu ve cvičení. Pro úspěšné absolvování je třeba uspět u povinné části zkoušky a získat minimální stanovený počet bodů za domácí úlohy.
Navazující předměty
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Nachází se v prerekvizitách jiných předmětů
Předmět je zařazen také v obdobích podzim 2002, podzim 2003, podzim 2004, podzim 2005, podzim 2006, podzim 2007, jaro 2008, podzim 2008, jaro 2009, podzim 2009, jaro 2010, podzim 2010, jaro 2011, podzim 2011, jaro 2012, podzim 2012, podzim 2013, podzim 2014, podzim 2015, podzim 2016, podzim 2017, podzim 2018, podzim 2019, podzim 2020, podzim 2021, podzim 2022, podzim 2023, podzim 2024.
  • Statistika zápisu (nejnovější)
  • Permalink: https://is.muni.cz/predmet/fi/podzim2025/IB015