Budapesti Műszaki Egyetem

Villamosmérnöki és Informatikai Kar


Műszaki Informatika Szak

Tantárgy-adatlap
és tárgykövetelmények

2007. február 15.

Deklaratív programozás

2.

Tantárgy kódja

Szemeszter

Követelmény

Kredit

Nyelv

Tárgyfélév


VIFO2218

4

4+0+0v

5

magyar

1/1

3. A tantárgyfelelős személy és tanszék:

Név:

Beosztás:

Tanszék, intézet:

dr. Hanák Péter

tud. mts.

Irányítástechnika és Informatika T.

4. A tantárgy előadói:

Név:

Beosztás:

Tanszék, intézet:

dr. Hanák Péter

tud. mts.

Irányítástechnika és Informatika T.

dr. Szeredi Péter

docens

Számítástudományi és Információelméleti T.

5. A tantárgy az alábbi témakörök ismeretére épít:

Programozás, Programozási technológia, Matematikai logika

6. Kötelező/ajánlott előtanulmányi rend:

       

7. A tantárgy célkitűzése:

A hallgatók ismerkedjenek meg az előző félévekben tanult imperatív programozás után a deklaratív programozással.

8. A tantárgy részletes tematikája:

Az imperatív és a deklaratív (funkcionális és logikai) programozás összevetése.

Funkcionális programozás SML nyelven.

Kifejezés, érték, típus. Egyszerű és összetett típusok (ennes, rekord, lista, fa stb.). Kötés. Típuslevezetés. Mintaillesztés. Függvény, magasabb rendű és részlegesen alkalmazható függvény. Típusparaméter, polimorfizmus. Rekurzió, iteráció. Lusta lista. Absztrakt típus. Struktúra, szignatúra, funktor. SML Basis Library. Programozási módszerek. Új irányzatok a funkcionális programozásban.

Logikai programozás Prolog nyelven.

A Prolog nyelv alapjai: eljárások, vezérlési szerkezet, összetett adatszerkezetek, operátorok, listák. Beépített eljárások. Programozási módszerek. Fejlettebb nyelvi elemek és alkalmazásuk, modularitás, hibakezelés. Új irányzatok a logikai programozásban.

9. A tantárgy oktatásának módja:

Tantermi és számítógép-laboratóriumi foglalkozások, konzultáció, önálló gyakorlás számítógépen, előadások.

10. Követelmények:

a) Előfeltételek

Alapszintű logikai, továbbá elméleti és gyakorlati programozási ismeretek.

b) Követelmények a szorgalmi időszakban

Kötelező: részvétel négy labor-és legalább négy tantermi gyakorlaton előre megadott beosztás szerint, a nagyzárthelyi megírása, három-három kis és egy-egy nagy házi feladat beadása mindkét programozási nyelven.

Ajánlott: a webes gyakorlórendszer használata.

c) Tantermi és laborgyakorlatok

Órarend szerinti időben tantermi és laborgyakorlatokat tartunk. Tantermi és laborgyakorlatok máskor is lehetnek, ha szükséges, pl. a munkahelyek korlátozott száma, a labor, illetve tanterem foglaltsága miatt vagy elmaradt tantermi és laborgyakorlatok pótlására.

A kis létszámú hallgatói csoportokat egy-egy állandó konzulens segíti a tananyag elsajátításában, ezért a hallgatóknak előre egyeztetett beosztás szerint kell részt venniük a foglalkozásokon, mégpedig minden hallgatónak legalább négy tantermi és négy laborgyakorlaton. A beosztás a regisztrációs hét második felében készül el az alábbi séma alapján, figyelembe véve az oktatási szüneteket és más korlátozó tényezőket:



tanterem

labor


tanterem

labor

1. hét 1. alk.

nagycsop1

-

1. hét 2. alk.

nagycsop4

-

2. hét 1. alk.

nagycsop2

nagycsop1

2. hét 2. alk.

nagycsop5

nagycsop4

3. hét 1. alk.

nagycsop3

nagycsop2

3. hét 2. alk.

nagycsop6

nagycsop5

4. hét 1. alk.

nagycsop1

nagycsop3

4. hét 2. alk.

nagycsop4

nagycsop6

5. hét 1. alk.

nagycsop2

nagycsop1

5. hét 2. alk.

nagycsop5

nagycsop4

6. hét 1. alk.

nagycsop3

nagycsop2

6. hét 2. alk.

nagycsop6

nagycsop5

7. hét 1. alk.

nagycsop1

nagycsop3

7. hét 2. alk.

nagycsop4

nagycsop6

8. hét 1. alk.

nagycsop2

nagycsop1

8. hét 2. alk.

nagycsop5

nagycsop4

9. hét 1. alk.

nagycsop3

nagycsop2

9. hét 2. alk.

nagycsop6

nagycsop5

10. hét 1. alk.

nagycsop1

nagycsop3

10. hét 2. alk.

nagycsop4

nagycsop6

11. hét 1. alk.

nagycsop2

nagycsop1

11. hét 2. alk.

nagycsop5

nagycsop4

12. hét 1. alk.

nagycsop3

nagycsop2

12. hét 2. alk.

nagycsop6

nagycsop5

13. hét 1. alk.

konzultáció

nagycsop3

13. hét 2. alk.

konzultáció

nagycsop6

14. hét 1. alk.

konzultáció

pótlás

14. hét 2. alk.

konzultáció

pótlás

Az előre egyeztetett beosztás szerinti gyakorlatokról csak nagyon indokolt esetben és a konzulens tudtával szabad távol maradni. Egy kötelező tantermi gyakorlat pótlására – a konzulenssel egyeztetett időpontban – a gyakorlatot követő két héten belül van lehetőség egy másik tantermi gyakorlaton. Egy kötelező laborgyakorlat pótlására – ugyancsak a konzulenssel egyeztetett időpontban – a szükség szerint két vagy háromhetente tartandó pótlaborgyakorlatokon adunk lehetőséget.

d) A nagyzárthelyi időpontja és értékelése

A nagyzárthelyit, amelyen a kijelölt tananyagot kérjük számon, az ütemtervben megadott oktatási héten íratjuk meg.

A nagyzárthelyi pótlására, ill. javítására a szorgalmi időszak utolsó heteiben, továbbá – ismétlővizsga-jelleggel – a vizsgaidőszak első három hetében adunk lehetőséget. A pót-, ill. a pótpótzárthelyin is a nagyzárthelyin elvárt tananyagot kell tudni.

A zárthelyi megírásához írószeren, üres papíron és a kiadott feladatlapon kívül nem használható semmilyen segédeszköz.

Minden esetben az utolsó zárthelyire kapott pontszámot vesszük figyelembe 15%-os súllyal a félévvégi osztályzatban.

e) A nagy házi feladatok ki- és beadása, valamint értékelése

A nagy házi feladatot az ütemtervben megadott oktatási héten adjuk ki. Az SML- és Prolog-nyelven megírt programokat, valamint a dokumentációt elektronikus úton kell beadni az ütemtervben előírt oktatási héten. A beadás módját a tárgy honlapján közzéteendő feladatkiírás részletezi.

Az SML- és a Prolog-program helyes működését egymástól függetlenül legalább három tesztkészlettel vizsgáljuk. Az első tesztkészletet a házi feladattal együtt kiadjuk. A második tesztkészlettel a beadáskor vizsgáljuk a házi feladatot. A tesztelés eredményét elektronikus úton közöljük. Nem kielégítő eredmény esetén a javított változat a beadási határidőn belül többször is beadható. A pontszámot egy harmadik – az előzőkhöz hasonló nehézségű – tesztkészlettel állapítjuk meg.

Egy tesztesetre akkor jár pont, ha a program meghatározott futási időn belül helyes eredményt ad. A programok jól olvasható („öndokumentált”) voltát és az elektronikus változatban (ascii, html, pdf) elkészítendő 5-10 oldalas dokumentációt is pontozzuk.

A kapott pontszámot nyelvenként 7,5%-os, összesen 15%-os súllyal vesszük figyelembe a félévvégi osztályzatban.

A hibátlan és megfelelően dokumentált, azaz a maximális pontszámot elérő programok létraversenyben vesznek részt. A létraversenyben részt vevő programokat bonyolultabb, nagyobb méretű tesztesetekkel futtatjuk. A létraversenyben jó helyezést elérő programok pluszpontot kapnak, amit az osztályzat megállapításakor figyelembe veszünk. A pluszpontszám maximumát nyelvenként a leggyorsabb program kapja meg, a többi program egyre kevesebb pluszpontot szerez.

A nagy házi feladat pótlására a határidő lejárta után nincs lehetőség.

f) A kis házi feladatok ki- és beadása, valamint értékelése

A félév során hat alkalommal adunk ki kis házi feladatot. Az SML-, ill. Prolog-nyelvű programok beadásának módját a tárgy honlapján közzéteendő feladatkiírás részletezi.

A helyes megoldásokra kapott pontok pluszpontként számítanak bele a félévvégi osztályzatba.

A kis házi feladatok pótlására a határidő lejárta után nincs lehetőség.

g) A gyakorlórendszer használata

A tananyag elsajátítását webes gyakorlórendszer segíti. A gyakorlórendszer használatát a tárgy honlapján ismertetjük.

h) Az aláírás megszerzésének feltételei

i) A vizsgára bocsátás feltételei

j) A vizsga

A vizsga írásbeli feladatmegoldással kombinált szóbeli vizsga. A sikeres vizsga feltétele a vizsgán megszerezhető maximális pontszám 40%-ának elérése külön-külön mindkét programozási nyelvből.

k) Javítási, illetve felkészülési lehetőségek aláírással rendelkező hallgatóknak

Aláírással rendelkező hallgatók javítási, illetve felkészülési céllal írhatnak zárthelyit, illetve adhatnak be kis- és nagyfeladatokat, az alábbiak szerint:

l) A félévvégi osztályzat megállapítása

A félévvégi osztályzatban a vizsgára kapott összpontszámot 70%-os, a nagyzárthelyire (ill. a pót- vagy a pótpótzárthelyire) és a nagy házi feladatra kapott összpontszámot 15-15%-os súllyal vesszük figyelembe. A kis házi feladatok megoldására kapott és a létraversenyen szerzett pontszám az összpontszámot javítja.

m) Meg nem engedett eszközök alkalmazása

A kis és nagy házi feladatokat minden hallgatónak önállóan, egyénileg kell megoldania, másoktól ötleteken kívül egyebet – pl. teljes kódot vagy akár csak kódrészletet – nem vehet át. A programok szerkezeti hasonlóságát automatikus eszközökkel is vizsgáljuk.

Mástól származó program vagy programrészlet átvétele/átadása és beadása esetén a kis és a nagy házi feladat érvénytelen.

A nagyzárthelyin, a pót- és a pótpótzárthelyin, valamint a vizsgán semmilyen segédeszköz nem használható; a meg nem engedett eszközöket használó hallgatókat az érvényes kari, ill. egyetemi rendelkezések szerint büntetjük.

Egyéb kérdésekben a TVSz rendelkezései az irányadók.

11. Pótlási lehetőségek:

Tantermi gyakorlat pótlására a gyakorlatot követő két héten belül van lehetőség egy másik tantermi gyakorlaton. Laborgyakorlat pótlására a szükség szerint két vagy háromhetente tartandó pótlaborgyakorlatokon adunk lehetőséget.

A nagyzárthelyi pótlására, illetve javítására a szorgalmi időszak utolsó heteiben (a pótzárthelyin), továbbá – ismétlővizsga-jelleggel – a vizsgaidőszak első három hetében (a pótpótzárthelyin) adunk lehetőséget.

A kis és nagy házi feladatok pótlására a határidő lejárta után nincs lehetőség.

12. Konzultációs lehetőségek:

Minden hallgatónak rendszeres kapcsolatot kell tartania a konzulensével. A levelezési listára feliratkozott hallgatók írásban feltett konzultációs kérdéseire folyamatosan válaszolunk.

13. Jegyzet, tankönyv, felhasználható irodalom:

  1. Szeredi Péter, Benkő Tamás: Deklaratív programozás. Oktatási segédlet. Bevezetés a logikai programozásba. Számítástudományi és Információelméleti Tanszék - IQSYS Rt., Budapest, 2004.

  2. Hanák D. Péter: Deklaratív programozás. Oktatási segédlet. Bevezetés a funkcionális programozásba. Irányítástechnika és Informatika Tanszék, Budapest, 2005. márc.

Elektronikus változatuk letölthető a tárgy honlapjáról.

Ajánlott irodalom:

  1. Jeffrey D. Ullman: Elements of ML Programming. Prentice Hall, 1993, ISBN: 0-13-184854-2

  2. Richard Bosworth: A Practical Course in Functional Programming using Standard ML. McGraw-Hill, 1995. ISBN 0-07-707625-7

  3. Colin Myers, Chris Clack, Ellen Poon: Programming with Standard ML. Prentice Hall, 1993, ISBN 0-13-722075-8

  4. Robert Harper: Programming in Standard ML. School of Computer Science, Carnegie-Mellon University, 1986-2000. <http://www.cs.cmu.edu/~rwh/introsml/>

  5. Lawrence C. Paulsson: ML for the Working Programmer. Cambridge University Press, 1991, ISBN 0-521-39022-2

  6. Farkas Zsuzsa, Futó Iván, Langer Tamás, Szeredi Péter: M-Prolog programozási nyelv. Műszaki Könyvkiadó, Budapest, 1989.

  7. Márkusz Zsuzsa: Prologban programozni könnyű. Novotrade, Budapest, 1988.

  8. Richard A. O'Keefe: The Craft of PROLOG. MIT Press, 1990. ISBN 0-262-15039-5

  9. Leon Sterling, Ehud Shapiro. The Art of Prolog. Advanced Programming Techniques, 2nd Edition, MIT Press, 1994, ISBN 0-262-19338-8

  10. David H. D. Warren: Logic Programming and Compiler Writing. In: Software-Practice and Experience 10(2): 97-125, 1980.

  11. Peter Flach: Logikai Programozás. Az intelligens következtetés példákon keresztül. Panem-John Wiley & Sons, 2001.

14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka:

(A tantárgyhoz tartozó tanulmányi idő körülbelüli felosztása a tanórák, továbbá a házi feladatok és a zárthelyik között; a felkészülésre, ill. a kidolgozásra átlagosan fordítandó/elvárható idők félévi munkaórában: kredit * 30 óra, pl. 5 kredit esetén 150 óra.)


Kontaktóra

16

Félévközi készülés órákra

32

Felkészülés zárthelyire

16

Házi feladatok elkészítése

36

Kijelölt írásos tananyag elsajátítása

20

Vizsgafelkészülés

30

Összesen

150

15. Egyéb tudnivalók:

A tárgy honlapja: <http://dp.iit.bme.hu>.

Levelezési lista: <http://www.iit.bme.hu/mailman/listinfo/dp-l/>.

A gyakorlásra és a házi feladatok megoldására használható SML- és Prolog-értelmezők, ill. fordítóprogramok, továbbá a gyakorlórendszer elérését, valamint a kis- és nagy házi feladatokra vonatkozó összes tudnivalót a tárgy honlapján adjuk meg.

16. A tantárgy tematikáját kidolgozta:

Tanszék, intézet

Név

Beosztás

Irányítástechnika és Informatika T.

dr. Hanák Péter

tud. mts.

Számítástudományi és Információelméleti Tsz.

dr. Szeredi Péter

docens


VIFO2208 Tárgykövetelmények 5/5