Zpět výuka LS 2010/11

PRG005 Neprocedurální programování

Základní kurs neprocedurálního programování pro studenty informatiky.

Můžete si vybrat kteroukoli paralelku, není však rozumné je střídat

můj seminář rozvržen pátek 9:00 S10

na semináře se můžete přihlašovat pomocí SISu, bude ale omezena maximální velikost skupiny

Ukázalo se však, že současné provedení SISu není použitelné (vypadá to tak, že v první týdnu se můžete zapsat jen na své cvičení a od druhého týdna na kterékoli).
Proto vyhlašuji toto pravidlo: Každý student má právo chodit na cvičení s kroužkem, do které byl zařazen. Musí ho uplatnit - alespoň emailem cvičícímu v druhém týdnu výuky.
Od třetího týdne výuky může cvičící dovolit i "přespolním", aby chodili na jeho cvičení, pokud ale počet účastníků nepřesáhne 20 (tato konstanta může být v případě nutnosti o málo zvýšena). Smyslem je, aby vnevznikaly ani moc malé ani moc velké skupiny.
Pravidlo není samoúčelné a pokud bude v konkrétním případě v rozporu se zdravým rozumem, může být porušeno

Semináře začnou druhý týden výuky.

Obsah a cíle předmětu

Úkolem předmětu je seznámit studenty s ideami neprocedurálního programování a vybavit je základními programovacími technikami logického a funkcionálního programování.
Přednáška má tři hlavní části:
Zpět začátek

Podmínky pro získání zápočtu

Student může získat zápočet za splnění dvou požadavků :

Získání zápočtu je podmínkou připuštění ke zkoušce.
Vzhledem k množství studentů nebude umožněno se ke zkoušce přihlásit dokud nebudete mít zápočet. Není to však prakticky žádné omezení. Jazyk Prolog se úplně probere na 5-7 prvních přednáškách.

Podmínky pro udělení zápočtu upřesňuje a kontroluje vedoucí semináře, na který student chodí. Při přebírání zápočtového programu se zpravidla vhodným způsobem přesvědčí zda student program vytvořil sám (např. může požadovat provedení drobných změn v programu v reálném čase).

Pokud student (kombinovaného) studia nemůže semináře navštěvovat, dohodne si začátkem semestru náhradní podmínky udělení zápočtu s přednášejícím.

Zpět začátek

Literatura:

Základní literatura (bude ještě doplněna):

  1. Rudolf Kryl: Úvod do programovacího jazyka Prolog
    učební text - ke stažení z WWW stránek přednášejícího aktuální verze 3.03 ve formátu pdf nebo zip.
    Text byl původně napsán pro čtenáře s o poznání menší programátorskou erudicí, než má většina z Vás. Proto by mělo jít o "nenáročné čtení před usnutím". Text pokrývá přibližně první polovinu látky z Prologu. Obsahuje řadu jednoduchých programů. Budu vděčný za připomínky a opravy chyb - posílejte je na můj mail a v subjectu uveďte název textu a číslo verze, ke které se připomínky vztahují.
  2. Přehled předdefinovaných forem ve vykládaném dialektu LISPu
    Ke stažení ve formátu pdf
  3. ke stažení z www.haskell.org
    Poměrně čtivý základní text o programovacím jazyku Haskell. Pokrývá vše z jazyka, co probereme. Některé partie vynecháme, půjdeme však podstatně dál v programátorské obtížnosti úloh.
    Na dané adrese můžete získat úplný přehled o problematice jazyka Haskell.
Zpět začátek

Doplňková literatura (není nutná)

  1. P.Jirků a kol. : Programování v jazyku Prolog
    SNTL 1991
    Pěkná knížka v češtině. Neobsahuje mnoho těžších příkladů, věnuje se však dost podrobně souvislostem s logikou.
  2. Bratko I.: PROLOG Programming for Artificial Intelligence
    Addison-Wesley, Reading, Massachussets, 1986 ISBN 0-201-14224-4
    Stále velmi pěkná knížka. První díl obsahuje výklad Prologu (náš přístup k výkladu je do značné míry poplatný přístupu této knihy), druhý obsahuje výklad některých základních partií umělé inteligence pomocí programů v Prologu.
  3. Harold Abelson, Gerald Jay Sussman, Julie Sussman : Structure and Interpretation of Computer Programs
    Mc Graw-Hill Book Company 1985 ISBN 0-07-000-422-6
    Výklad principů programování na bázi jazyka XSCHEME (dialekt jazyka LISP). Kniha byla používána v základnídním kursu programování na MIT.
    My použijeme tohoto jazyka i příkladů z této knihy k velmi zběžnému seznámení s principy LISPu.
  4. Ivan Kalaš : Iné programovanie - stretnutie s jazykom Lisp
    Alfa 1992
    Krásná kniha s množství originálních příkladů. Uživaný dialekt LISPu se poněkud liší od toho, se kterým budeme pracovat na přednášce my.
Zpět začátek

Překladač prologu SWI

K ladění zápočtových programů a experimentům v Prologu doporučuji překladač SWI Prolog. Jde o volně stažitelný výborný překladač, který je k dispozici pro všechny platformy. Obecně lze experimenty s jazykem vřele doporučit, možná však je dobré počkat až z přednášky a seminářů ovládnete základy jazyka. Na třetí nebo na čtvrté přednášce si o práci s tímto překladačem řekneme více.

Zpět začátek

Informace o zkoušce

Nutnou podmínkou připuštění ke zkoušce je předchozí získání zápočtu.
Ke zkoušce se studenti přihlašují v SISu.
Ke zkoušce se můžete přihlásit jen když již máte zápočet udělen (t.j. zapsán v SISu).
Pokud je volná kapacita může zkoušku skládat i ten, kdo nebyl přihlášen.
V den a v hodinu uvedenou v systému SIS se píše písemná část zkoušky. Po jejím zkoušení bude vypsán rozpis podle, kterého budou studenti skládat část ústní. Z pravidla to bude týž den odpoledne nebo druhý den. Pokud bude termín plně obsazen, může se ústní zkouška i v některém z dalších dnů.
 
Je žádoucí absolvovat první (a v optimálním případě i poslední) termín do prázdnin. V září budu zkoušet, ale nemusí se Vám podařit abslvovat tři pokusy (a pokud se většina bude chovat nerozumně, pak třeba ani dva).

Požadavky ke zkoušce

Budou upřesněny

Zkouška má písemnou a ústní část, větší váhu má část písemná.

Písemná část

se skládá ze dvou částí:
  1. Technická - čas 90-120 minut (bude ještě upřesněno)

    Bude obsahovat (algoritmicky) jednoduché úlohy na programování v Prologu a Haskellu.
  2. Programátorská - 90 minut

    Úkolem bude vyřešit v Haskellu středně obtížnou úlohu, požaduje se volba vhodných datových struktur, rozumného algoritmu a vytvoření odpovídajícího kódu v Haskellu.
    Složitost zvoleného algoritmu nemusí být optimální, ale nesmí být neúnosně velká.
    Haskell je pro tuto část předepsán proto, že naprostá většina studentů řeší zápočtovou úlohu v Prologu.

Součástí řešení úloh v písemné části nemusí být vstup a výstup, ale "jen" algorimická část řešení.
U všech funkcí v Haskellu je napsat jejich typovou specifikaci.
Není nutné znát předdefinované funkce v Haskellu, ale pokud je budete používat je nutné je naprogramovat,
Je nutné (alespoň pasivně) znát základní konstrukce pro definování typů, funkcí a tříd v Haskellu, abyste byli schopni odpovídat na otázky typu "co dělá tato funkce" resp. " je daná definice dobře?" a pod.
V obou částech písemné práce se požadují taková řešení, která vycházení z principů neprocedurálního programování, za správná nebudou uznána taková, která jsou založena tom, jak tyto principy obejít.

Ústní část zkoušky se skládá

Témata pro ústní zkoušku - mohou se ještě změnit :

Zpět začátek
Zpět výuka LS 2010/11