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:
Békés András György doktorandusz, Lukácsy Gergely doktorandusz
dr. Hanák Péter adjunktus, dr. Szeredi Péter docens
4. A tárgy oktatási formája, és a heti idősávok száma: előadás és számítógépes gyakorlat
előadás: heti 2-3 szeminárium: 0 gyakorlat: heti 2-1
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:
Szeredi Péter, Benkő Tamás: Deklaratív programozás. Oktatási segédlet. Bevezetés a logikai programozásba. Budapest
Hanák D. Péter: Deklaratív programozás. Oktatási segédlet. Bevezetés a funkcionális programozásba. Budapest
A jegyzetek letölthetők a tárgy honlapjáról <../dp-current>, ill. nyomtatott alakban megrendelhetők az Elektronikus TanárSegédtől (ETS) <../ets>.
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ő: hat kiszárthelyi és a nagyzárthelyi megírása, valamint a webes gyakorló rendszerben (ETSweb) legalább 15-15 kisfeladat megoldása mindkét nyelven.
Ajánlott: a webes (ETSweb) gyakorlórendszer további vagy az otthoni (ETShome) gyakorlórendszer használata, továbbá a kiadandó 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 héten kiszárthelyit íratunk. Közülük hatot kötelező teljesíteni, más elfogadási feltétel nincs.
c) A nagyzárthelyi időpontja, értékelése és elfogadása
A nagyzárthelyit a 8. héten í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 10. vagy 11. héten 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 írja le.
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 (ETSweb) és otthoni (ETShome) gyakorlórendszer segíti. Használatukat a tárgy honlapján ismertetjük, az otthoni változat letölthető.
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.
k) 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.
l) 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: 2005. február 4. Aláírás: Hanák Péter sk., Szeredi Péter sk.
TANTÁRGYI TÁJÉKOZTATÓ (2)
Tanszék: BME Tanszék
Tantárgy: Deklaratív programozás
9. A tantárgy hetekre bontott tematikája:
hét: Logikai programozás, alapok 1. rész.
hét: Logikai programozás, alapok 2. rész.
hét: Logikai programozás, alapok 3. rész.
hét: Funkcionális programozás, alapok 1. rész.
hét: Funkcionális programozás, alapok 2. rész.
hét: Funkcionális programozás, alapok 3. rész.
hét: Logikai programozás, beépített eljárások. Felkészülés a nagyzárthelyire.
hét: Nagyzárthelyi. Logikai programozás, beépített eljárások.
hét: Nagyzárthelyi megbeszélése. Logikai programozás, programozási módszerek.
hét: Logikai programozás, fejlettebb nyelvi elemek és alkalmazásuk.
hét: Funkcionális programozás, könyvtári függvények.
hét: Funkcionális programozás, programozási módszerek.
hét: Funkcionális programozás, magasabbrendű függvények alkalmazása.
hét: Fekészülés a vizsgára, nagy házi feladat megbeszélése.
Minden héten: kiszárthelyik és kisfeladatok megoldásának megbeszélése.
Dátum: 2005. február 4. Aláírás: Hanák Péter sk., Szeredi Péter sk.