PředmětyPředměty(verze: 898)
Předmět, akademický rok 2021/2022
  
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 [hodiny/týden]
Počet míst: neomezen
Minimální obsazenost: neomezen
Virtuální mobilita / počet míst: ne
Stav předmětu: vyučován
Jazyk výuky: čeština, angličtina
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
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. Pavel Töpfer, CSc. (05.02.2018)

Richard Bird, Thinking Functionally with Haskell, Cambridge University Press, 2014

Ivan Bratko, Prolog Programming for Artificial Intelligence, 4th ed., Addison-Wesley, 2011

William F. Clocksin, Christopher S. Mellish, Programming in Prolog: Using the ISO Standard, 5th ed., Springer, 2003

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

David Mertz, Functional Programming in Python, O'Relly Media, Sebastopol, CA 2015

Sylabus -
Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (12.02.2018)
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.

Funkcionální aspekty multiparadigmatických jazyků,
funkcionální rysy jazyka Python.

 
Univerzita Karlova | Informační systém UK