Fakulta informačních technologií VUT v Brně

Detail předmětu

Funkcionální a logické programování

FLP Ak. rok 2005/2006 letní semestr 5 kreditů

Aktuální akademický rok

Praktické aplikace a širší úvod do lambda kalkulu a predikátové logiky v prostředí funkcionálních a logických programovacích jazyků. Jsou diskutovány abstraktní datové typy, použití rekurze a indukce, práce se seznamy a nekonečnými datovými strukturami. Základy programování v jazycích Haskell, Prolog a Goedel: principy jejich implementace.

Garant předmětu

Jazyk výuky

česky

Zakončení

zápočet+zkouška (písemná)

Rozsah

26 hod. přednášky, 12 hod. pc laboratoře, 14 hod. projekty

Bodové hodnocení

60 zkouška, 20 půlsemestrální test, 20 projekty

Zajišťuje ústav

Přednášející

Získané dovednosti, znalosti a kompetence z předmětu

Studenti získají základní znalosti a praktické zkušenosti ve funkcionálním a logickém programování, což jsou významní představitelé deklarativního programování. Kromě toho obdrží základní informace o teoretických základech obou paradigmat a způsobu implementace.

Dovednosti, znalosti a kompetence obecné

Užití a zvládnutí rekurze pro algoritmizaci.

Cíle předmětu

Zvládnutí funkcionálního a logického programování a formálních základů, které jsou při použití obou paradigmat využívány.

Prerekvizity

Požadované prerekvizitní znalosti a dovednosti

Způsoby zpracování (analýza, vyhodnocení/interpretace/překlad) programovacích jazyků, predikátová logika.

Literatura studijní

  • Přednášky v elektronické formě
  • Tutorial jazyka Haskell (Hugs), http://www.haskell.org
  • Tutorial jazyka SWI-Prolog, http://www.swi-prolog.org

Literatura referenční

  • Thompson, S.: Haskell, The Craft of Functional Programming, ADDISON-WESLEY, 1999, ISBN 0-201-34275-8
  • Hill, P., Lloyd, J.: The Gödel Programming Language, MIT Press, 1994, ISBN 0-262-08229-2
  • Bieliková, M., Návrat, P.: Funkcionálne a logické programovanie, Vydavateĺstvo STU, Vazovova 5, Bratislava, 2000.

Osnova přednášek

  • Úvod do funkcionálního programování, lambda kalkul
  • Programovací jazyk Haskell, úvod, práce se seznamy
  • Uživatelské datové typy, typové třídy, pole
  • Vstupy/výstupy
  • Praktické úlohy
  • Dokazování ve funkcionálním programování
  • Denotační sémantika, implementace funkcionálních jazyků
  • Prolog, úvod
  • Seznamy, operátor řezu, řazení
  • Datové struktury, řetězce, operátory
  • Stavový prostor, práce s klauzulemi, analýza jazyků
  • Goedel
  • Implementace logických jazyků, CLP, shrnutí, diskuse

Osnova počítačových cvičení

  • Seznámení s prostředím jazyka Haskell (Hugs), jednoduché funkce, rekurze, seznamy
  • Nekonečné datové struktury
  • Uživatelské datové typy, vstupy/výstupy
  • Praktická úloha, samostatná práce
  • Seznámení s prostředím jazyka Prolog, seznamy
  • Praktická úloha, samostatná práce

Osnova ostatní - projekty, práce

  1. Jednoduchý program v jazyce Haskell (Hugs, GHC, GHCi).
  2. Jednoduchý program v jazyce Prolog/Gödel/CLP(R) (SWIPL, Gödel, CiaoProlog).

Průběžná kontrola studia

  • Půlsemestrální zkouška, u které neexistuje náhradní, či opravný termín.
  • Vypracování 2 projektů v průběhu semestru a jejich odevzdání ve stanoveném termínu.

Kontrolovaná výuka

  • Půlsemestrální zkouška - písemná, formou otázek a úkolů (vyskytují se i otázky s výběrem jedné z nabízených odpovědí), neexistuje náhradní/opravný termín - 20 bodů.
  • Vypracování projektů - 2 projekty, jeden ve funkcionálním a druhý v logickém programovacím jazyce - jednoduché programy, dle zadání - 20 bodů celkem.
  • Závěrečná zkouška - písemná, formou otázek a úkolů (vyskytují se i otázky s výběrem jedné z nabízených odpovědí), 2 opravné termíny - 60 bodů.

Podmínky zápočtu

Student musí během semestru získat alespoň 50% bodů z možného maxima, tj. 20 bodů ze 40.
Nahoru