Neprocedurální programování - NPRG005
Anglický název: Non-procedural Programming
Zajišťuje: Katedra softwaru a výuky informatiky (32-KSVI)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2020
Semestr: letní
E-Kredity: 5
Rozsah, examinace: letní s.:2/2, Z+Zk [HT]
Počet míst: neomezen
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Stav předmětu: vyučován
Jazyk výuky: čeština, angličtina
Způsob výuky: prezenční
Způsob výuky: prezenční
Další informace: http://ksvi.mff.cuni.cz/~dvorak/vyuka/NPRG005/
Garant: doc. RNDr. Tomáš Dvořák, CSc.
RNDr. Jan Hric
Třída: Informatika Bc.
Informatika Mgr. - učitelské studium informatiky
Kategorizace předmětu: Informatika > Programování
Neslučitelnost : NPRX005
Záměnnost : NPRX005
Je neslučitelnost pro: NPRM046, NPRX005
Je prerekvizitou pro: NAIL024, NPFL049
Je záměnnost pro: NPRX005
Výsledky anket   Termíny zkoušek   Rozvrh LS   Nástěnka   
Anotace -
Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (05.02.2018)
Předmět je věnován principům logického a funkcionálního programování, které jsou vyloženy prostřednictvím programovacích jazyků Prolog a Haskell. Funkcionální aspekty multiparadigmatických jazyků jsou ilustrovány na příkladu jazyka Python.
Podmínky zakončení předmětu -
Poslední úprava: doc. RNDr. Tomáš Dvořák, CSc. (20.02.2020)

Předmět je zakončen zápočtem a zkouškou. K získání zápočtu je vyžadováno

  • vypracování zápočtového programu včetně uživatelské a vývojové dokumentace na téma, zadané cvičícím,
  • získání stanoveného počtu bodů z řešení problémů, zadávaných ve formě domácích úloh či testů na cvičeních.

Zkouška je složena z části písemné a ústní. Písemná část

  • probíhá na PC v počítačové laboratoři
  • je složena z úloh z logického i funkcionálního programování
  • témata úloh odpovídají sylabu předmětu i látce, probrané na cvičení.

Nesplnění písemné části znamená, že celá zkouška je hodnocena známkou nevyhověl(a).

Požadavky ústní části zkoušky odpovídají sylabu předmětu v rozsahu, v němž byl prezentován na přednášce.

Literatura -
Poslední úprava: doc. RNDr. Tomáš Dvořák, CSc. (17.02.2024)

Richard Bird, Jeremy Gibbons, Algorithm Design with Haskell, Cambridge University Press, 2020

Patrick Blackburn, Johan Bos, Kristina Striegnitz, Learn Prolog Now!, College Publications, 2006

Ivan Bratko, Prolog Programming for Artificial Intelligence, 4th ed., Pearson, 2012

Graham Hutton, Programming in Haskell, 2nd ed., Cambridge University Press, 2016

Miran Lipovača, Learn You a Haskell for Great Good!: A Beginner's Guide, No Starch Press, 2011

Rebecca Skinner, Effective Haskell: Solving Real-World Problems with Strongly Typed Functional Programming, Pragmatic Bookshelf, 2023

David S. Warren et al., Prolog: The Next 50 Years, Lecture Notes in Artificial Intelligence 13900, Springer, 2023

Sylabus -
Poslední úprava: doc. RNDr. Tomáš Dvořák, CSc. (17.02.2024)
Logické programování v jazyce Prolog.

Tvar programu a jeho interpretace, unifikace, backtracking.

Deklarativní a procedurální sémantika programu.

Práce se seznamy a s rekurzivními datovými strukturami.

Standardní predikáty a jejich použití. Aritmetika. Definice operátorů.

Řez a negace. Efektivita programů v Prologu, neúplně definované datové struktury.

Aplikace logického programování v umělé inteligenci.

Funkcionální programování, základy lambda kalkulu.

Tvar programu v jazyce Haskell. Dvojrozměrná syntax, líné vyhodnocení.

Definice funkce, rekurze, porovnávání se vzorem. Stručné seznamy.

Definice typů a datových struktur, polymorfismus, typové třídy a instance.

Funkce vyšších řádů. Nekonečné datové struktury. Monády, vstup a výstup.