TANTÁRGYI TÁJÉKOZTATÓ (1)

Tanszék: BME Tanszék

1. A tantárgy neve: Deklaratív programozás

2. Melyik évfolyam(ok): második mely féléveiben oktatják: tavaszi

3. A tárgyfelelős neve, beosztása: dr. Hanák Péter adjunktus

A tárgyat oktatók névsora: dr. Szeredi Péter docens, dr. Hanák Péter adjuktus,

Lukácsy Gergely doktorandusz, Békés András György

4. A tárgy oktatási formája, és a heti idősávok száma: előadás, számítógépes gyakorlat

előadás: 3, 2 szeminárium: 0 gyakorlat:

A félév első nyolc hetében, szerdánként. Minden páratlan héten 3 előadási és 1 gyakorlati, minden páros héten 2 előadási és 2 gyakorlati foglalkozási idősáv.

5. A tantárgy oktatási célja, tartalmának rövid (10-15 soros) leírása:

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

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). 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ó. SML Basis Library. Programozási módszerek. Összetett típusok: fák. Lusta lista. Ú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.

6. A felhasználandó tankönyv, jegyzet, stb. pontos megnevezése:

    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 - IQSOFT Rt., Budapest, 2001.
    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, 2001.

A segédletek letölthetők a tárgy honlapjáról (http://dp.iit.bme.hu), ill. nyomtatott alakban megrendelhetők az Elektronikus TanárSegédtől: (http://dp.iit.bme.hu/ets).

Ajánlott: Structure and Interpretation of Computer Programs (http://mitpress.mit.edu/sicp/)

TANTÁRGYI TÁJÉKOZTATÓ (2)

 

7. A számonkérés módja és a hallgatókkal szemben támasztott követelmények:

 

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

Kötelező: minden foglalkozási napon kiszárthelyit íratunk; a nyolcból hat megírása kötelező. Kötelező továbbá a nagyzárthelyi megírása.

Ajánlott: a webes gyakorlórendszer használata, valamint a kis házi feladatok és a nagy házi feladat megoldása mindkét nyelven.

b) A kiszárthelyik időpontja, értékelése és elfogadása

Minden foglalkozási napon kiszárthelyit íratunk. A nyolc kiszárthelyiből hatot kötelező megírni, más elfogadási feltétel nincs.

c) A nagyzárthelyi időpontja, értékelése és elfogadása

A nagyzárthelyit az ötödik foglalkozási napon íratjuk meg. A nagyzárthelyin az előző hét végéig leadott, ill. kijelölt tananyagot kérjük számon.

A nagyzárthelyi pótlására, ill. javítására a hetedik foglalkozási napon lesz lehetőség. A pótzárthelyin is csak 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. Az elfogadás feltétele az arányos részpontszám 40-40%-ának az elérése mindkét programozási nyelven, kivéve, ha a hallgató egy korábbi félévben már szerzett aláírást, mert ekkor a zárthelyi eredményét az alsó ponthatártól függetlenül elfogadjuk, és beszámítjuk a félévvégi osztályzatba.

A nagyzárthelyire kapott pontszámot, ill. a pótzárthelyi megírása esetén a zárthelyikre kapott pontszámok közül a legnagyobbat 15%-os súllyal vesszük figyelembe a félévvégi osztályzatban.

d) A házi feladatok ki- és beadása, értékelése és elfogadása

A nagy házi feladatot a budapesti hallgatók ütemtervében megadott (legkésőbb a hatodik) 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 (rendszerint a tizenharmadik) 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, ps vagy pdf) elkészítendő 5-10 oldalas dokumentációt ugyancsak pontozzuk.

A nagy házi feladatot külön-külön legalább 40%-os szinten megoldó SML-, ill. Prolog-programokat fogadjuk el. 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. A pluszpontszám maximumát nyelvenként a leggyorsabb program kapja meg, a többi program egyre kevesebb pluszpontot szerez.

A félév során több alkalommal adunk ki kis házi feladatot. A helyes megoldásokra (az elektronikus úton beadott SML-, ill. Prolog-nyelvű programokra) pluszpontot lehet kapni. A beadás módját a tárgy honlapján közzéteendő feladatkiírás részletezi.

Csak a szorgalmi időszakban, határidőre beadott házi feladat pontszáma számít bele a félévvégi osztályzatba. A nagy és a kis házi feladat a beadási határidő után nem pótolható.

A kis házi feladatokra kapott, valamint a létraversenyben szerzett pluszpontokat a vizsgaosztályzatot meghatározó pontszám kiszámításakor figyelembe vesszük.

e) A gyakorlórendszer használata

A tananyag elsajátítását webes gyakorlórendszer segíti. A gyakorlórendszer az Elektronikus TanárSegédből érhető el, használatát a tárgy honlapján ismertetjük.

f) Az aláírás megszerzésének feltétele

Az aláírás feltétele a nagyzárthelyi, ill. a pótzárthelyi nyelvenként legalább 40%-os szintű megoldása.

g) A vizsgára bocsátás feltétele

A hallgató vizsgára bocsátható, ha aláírást szerzett a jelen félévben, vagy a jelen félévet megelőző négy félév során.

h) 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.

i) 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ó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.

A zárthelyikre és a házi feladatokra kapott pontszámot csak akkor számítjuk be az osztályzatba, ha ezeket a hallgató az adott (és nem valamelyik korábbi) félévben szerezte.

j) 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ó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:

A nagyzárthelyi a pótzárthelyin pótolható. A kiszárthelyik, valamint a nem kötelező nagy és kis házi feladatok nem pótolhatók.

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

A levelezési listára feliratkozott hallgatók írásban feltett konzultációs kérdéseire a félév során folyamatosan válaszolunk. Előzetes egyeztetést követően személyes konzultációra is van lehetőség a foglalkozási napokon, az előadások szünetében vagy után.

8. Előfeltételként megszabott tárgyak:

Nincsenek.

 

Dátum: 2004. jan. 28. Aláírás: Hanák Péter sk., Szeredi Péter sk.

 

TANTÁRGYI TÁJÉKOZTATÓ (3/A)

 

Tanszék: BME Tanszék

Tantárgy: Deklaratív programozás

 

9. A tantárgy hetekre bontott tematikája:

 

  1. hét: Logikai programozás, alapok 1. rész.
  2. hét: Logikai programozás, alapok 2. rész.
  3. hét: Funkcionális programozás, alapok 1. rész.
  4. hét: Funkcionális programozás, alapok 2. rész.
  5. hét Logikai programozás, beépített eljárások, programozási módszerek.
  6. hét: Logikai programozás, fejlettebb nyelvi elemek és alkalmazásuk.
  7. hét: Funkcionális programozás, könyvtári függvények, programozási módszerek.
  8. hét: Funkcionális programozás, magasabb rendű és rekurzív függvények alkalmazása.

 

 

 

 

Aláírás:

Hanák Péter sk., Szeredi Péter sk.