PRM0046 Programování III pro neinformatiky  - 2/2 Z/Zk
Výběrová přednáška pro studenty neinformatických oborů - hlavní náplní je neprocedurální programování.
 
  přednáška pátek 9:00 v K3, cvičení pátek 10:40 K3
 Předmět je nepovinný, předpokládá se tedy zájem.
  Nic víc - kromě základů algoritmického myšlení  -
   se de facto nepředpokládá.  
Předmět prohlubuje znalosti z programování pro studenty, pro něž není informatika hlavním oborem.
Hlavní náplní kursu je neprocedurálního programování,
 které může být na základě zájmu studentů případně doplněno o další témata.
Neprocedurální programování se obejde bez základních kamenů běžných procedurálních jazyků
(Pascal, C, C++, Basic), kterými jsou pojem proměnné (jako jména pro kus paměti) a přiřazovacího příkazu.
 Programování se tak přibližuje "klasickému matematickému uvažování". 
 	- Hlavní důraz je věnován programování v jazyce Prolog. 
		Studenti si prakticky osvojí dovednosti v logickém programování. 
 		V Prologu se také vytvářejí a ladí zápočtové úlohy. 
- Jako doplňkové téma se proberou základy funkcionálního programování na bázi jazyků LISP a Haskell.
	 	V těchto jazycích studenti nemusejí prakticky programovat. 
- Styl výkladu i požadavky u zkoušky berou ohled na to, že jde o výběrovou přednášku pro nespecialisty v informatice. Z Prologu se zkouší schopnost naprogramovat nepříliš těžké úlohy, z funkcionálního jen hlavní ideje - obdobně jako na jiných zkouškách - na podrobnostech se lze domluvit.. 
-  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.02 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 číslo verze,
 ke které se připomínky vztahují.
- 
Přehled předdefinovaných forem ve vykládaném dialektu LISPu Ke stažení ve formátu pdf
- 
  
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, můžeme však jít dál v programátorské obtížnosti úloh.  Na dané adrese můžete získat úplný přehled o problematice jazyka Haskell.
- P.Jirků a kol. : Programování v jazyku Prolog
 SNTL 1991
 Pěkná knížkav češtině. Neobsahuje mnoho těžších příkladů, věnuje se však dost podrobně souvislostem s logikou.
- 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.
- 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.
- 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.
Pokud se nehodí žádný termín, je možno se domluvit na jiném. 
   K přihlášení ke zkoušce ani ke jejímu skládání není třeba mít zápočet.
Zatím vypsané termíny - vždy v posluchárně S3
		
		- pátek 8.6.2007 od 9:00
- pondělí 18.6.2007 od 9:30
- pondělí 25.6.2007 od 9:00
- pondělí 2.7.2007 od 9:00
Požadavky ke zkoušce
 
Zkouška má písemnou a ústní část, podstatně větší váhu má část písemná.
V písemné části mají studenti dvě hodiny na vypracování 
dvou nepříliš obtížných příkladů, v nichž má student prokázat,
 že ovládl základní techniku neprocedurálního programování.
   Jeden z příkladů bude mět být napsán v Prologu, u druhého si student může jazyk zvolit (Prolog, XSCHEME, Haskell)
   .
Ústní část se skládá ze dvou částí
- společná (zkoušející a zkoušený) oprava vytvořených programů a diskuse nad nimi
- Kromě toho může student dostat otázku z některého z následujících témat:
Prolog
- Tvar programu v Prologu a algoritmus jeho interpretace
- Deklarativní a operační sémantika programu v Prologu
- Operátor řezu, negace
- Rozdílové seznamy
- Predikáty pro řízení databáze (assert,...)
- Predikáty grupování termů (bagof, setof) a jejich užití
- Prostředky a techniky pro vytváření efektivních programů v Prologu
 Funkcionální programování a Haskell
	- Typy v Haskellu, typová specifikace funkce 
- Základní způsoby definování výrazů
- Sémantika "mečování" parametrů, as patterns ( @s ), žolíky ( _ ), lazy-parametry ( ˜x ),
-  Lazy vyhodnocování,  "nekonečné" termy.