Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Deklaratív programozás

    A tantárgy angol neve: Declarative Programming

    Adatlap utolsó módosítása: 2012. február 11.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Műszaki Informatika Szak
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VISZA402 7 3/1/0/v 5  
    3. A tantárgyfelelős személy és tanszék Dr. Szeredi Péter,
    A tantárgy tanszéki weboldala http://dp.iit.bme.hu
    4. A tantárgy előadója
    Név:Beosztás:Tanszék, intézet:
    dr. Hanák Pétertud. munkatársIrányítástechnika és Informatika Tanszék
    dr. Szeredi PéterdocensSzámítástudományi és Információelm. Tanszék
    5. A tantárgy az alábbi témakörök ismeretére épít Programozás, Programozási technológia, Matematikai logika
    6. Előtanulmányi rend
    Kötelező:
    NEM (TárgyTeljesítve("BMEVISZA403") ) ÉS

    (TárgyEredmény( "BMEVIIIA217" , "jegy" , _ ) >= 2
    VAGY
    TárgyEredmény( "BMEVIFO2228" , "jegy" , _ ) >= 2
    VAGY
    KépzésLétezik( ahol a KépzésKód = "5N-08") )

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

    Ajánlott:
    -------
    7. A tantárgy célkitűzése A deklaratív - más néven nonimperatív - programozási paradigma megismertetése, többek között a párhuzamos és elosztott programozás (pl. a többmagos processzorok programozása), a korlátalapú programozás, a mesterségesintelligencia-módszerek, az ontológiakezelés és a szemantikusweb-kezelés korszerű megalapozására.

    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 Erlang nyelven.
    Az Erlang nyelv alapjai: elemi kifejezések, listák és más adatszerkezetek, változók, függvények, operátorok, összetett kifejezések. Mintaillesztés. Őrök. Kiértékelés. Rekurzió, iteráció. Modulok. Beépített függvények. Hibakezelés. Párhuzamos programozás: folyamatok, üzenetek. Elosztott programozás: csomópontok, távoli eljáráshívás. Új irányzatok a funkcionális programozásban.
    • Logikai programozás Prolog nyelven.
    A Prolog nyelv alapjai: eljárások, visszalépésen és mintaillesztéses eljáráshíváson alapuló vezérlés, ö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 (előadás, gyakorlat, laboratórium) Előadás, tantermi és számítógép-laboratóriumi gyakorlatok, konzultáció, önálló gyakorlás számítógépen.
    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ő: az aláírás megszerzése.
    Ajánlott: a webes gyakorlórendszer használata
    c) A zárthelyi időpontja, értékelése és elfogadása
    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át, ill. javítását illetően lásd a 11. pontot. Ezen alkalmakkor 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.
    Egynél több zárthelyi megírása esetén az utolsót tekintjük érvényesnek.
    d) A házi feladatok ki- és beadása, értékelése és elfogadása
    A nagy házi feladatot az ütemtervben megadott oktatási héten adjuk ki. Az Erlang- é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. A beadott feladatokkal kapcsolatban a hallgató a vizsgán kérdéseket kaphat (a házi feladat megvédése), amely kérdésekre adott válaszok az önálló munkavégzést is hivatottak bizonyítani.
    Azok a programok, amelyek a tesztesetek legalább 80%-át hibátlanul megoldják és megfelelően dokumentáltak, 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.
    Jó (4) megajánlott jegyet kap az, aki a félévközi követelmények teljesítése mellett mindkét programozási nyelvből bejut a létraversenybe, és a házi feladatát sikeresen megvédi az elővizsgán. Jeles (5) megajánlott jegyet kap az, aki emellett mindkét programozási nyelvből legalább 40%-os eredményt ér el a létraversenyen (azaz mindkét programja megoldja a létraverseny teszteseteinek legalább 40%-át).
    A félév során több alkalommal adunk ki kis házi feladatot. Az Erlang-, ill. Prolog-nyelvű programok beadásának módját a tárgy honlapján közzéteendő feladatkiírás részletezi.
    e) 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.
    f) Az aláírás megszerzésének feltétele
    A zárthelyi nyelvenként legalább 40%-os szintű megoldása. A kis házi feladatok 50%-ának beadása, a tesztesetek 100%-os teljesítésével úgy, hogy mindkét nyelven legalább egy 100%-ot teljesítő programot be kell adni. Részvétel a tantermi gyakorlatok 70 százalékán.

    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 ezt megelőzően, feltéve, hogy az aláírások érvényességére a TVSZ által előírt minimális időtartam még nem múlt el.

    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.
    A tárgyból elővizsgát tartunk, amelyen bármely, a tárgyból vizsgára bocsátható hallgató (lásd a g. pontot) részt vehet. Emellett -- az MSc képzésre jelentkezők érdekében -- a vizsgaidőszak decemberi részében még egy második vizsgaalkalmat is kitűzünk.
    Jó (4) megajánlott jegyet kap az, aki a félévközi követelmények teljesítése mellett mindkét programozási nyelvből bejut a létraversenybe, és a házi feladatát sikeresen megvédi az elővizsgán. Jeles (5) megajánlott jegyet kap az, aki emellett mindkét programozási nyelvből legalább 40%-os eredményt ér el a létraversenyen (azaz mindkét programja megoldja a létraverseny teszteseteinek legalább 40%-át).

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

    A félévvégi osztályzatban a vizsgára kapott pontszámot 70%-os, a zárthelyire és a nagy házi feladatra kapott pontszá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, tehát ezekkel együtt az összpontszám 100%-nál nagyobb is lehet.
    Az egyes osztályzatok alsó határai, az összpontszám százalékában: elégséges - 40%, közepes - 55%, jó - 70%, jeles - 85%.

    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.

    A zárthelyin és a vizsgán semmilyen segédeszköz nem használható.

    Mástól származó program vagy programrészlet átvétele/átadása és beadása esetén az összes kis és a nagy házi feladatot érvénytelennek tekintjük. A zárthelyin és a vizsgán a meg nem engedett eszközöket használó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 Gyakorlat pótlására nincs lehetőség. A nagyzárthelyi pótlására, illetve javítására a szorgalmi időszak utolsó előtti, vagy azt megelőző heteiben (a pótzárthelyin), továbbá a pótlási időszakban (a pótpótzárthelyin) adunk lehetőséget. A házi feladatok pótlása a pótlási időszak végéig lehetséges.
    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.
    13. Jegyzet, tankönyv, felhasználható irodalom

    A tantárgy egy részéhez sokszorosított jegyzet vásárolható a tantárgy honlapján megadott módon és helyen. Elektronikus változata a Webről is letölthető:

    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, Budapest, 2005

    Ajánlott irodalom:

    a. Joe Armstrong: Programming Erlang: Software for a Concurrent World. The Pragmatic Programmers, July 2007. ISBN 978-1-9343560-0-5 http://www.pragprog.com/titles/jaerlang/programming-erlang
    b. Joe Armstrong, Robert Virding, Claes Wikström, Mike Williams: Concurrent Programming in Erlang. Second Edition. Prentice Hall, 1996. ISBN 0-13-508301-X. Az első rész szabadon letölthető PDF-ben: http://erlang.org/download/erlang-book-part1.pdf.

    c. Erlang on-line documentation http://erlang.org/doc.html
    d. Erlang Programming. Wiki Books. http://en.wikibooks.org/wiki/Erlang_Programming
    e. Francesco Cesarini, Simon Thompson: Erlang Programming. O'Reilly Media,Inc., December 2008. ISBN 978-0596518189

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

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

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

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

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

    k. Ulf Nilsson and Jan Maluszynski: Logic, Programming and Prolog (2nd ed.). Previously published by John Wiley & Sons Ltd. http://www.ida.liu.se/~ulfni/lpp/

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra60
    Félévközi készülés órákra15
    Felkészülés zárthelyire5
    Házi feladat elkészítése30
    Kijelölt írásos tananyag elsajátítása10
    Vizsgafelkészülés30
    Összesen150


    15. A tantárgy tematikáját kidolgozta
    Tanszék, intézetNévBeosztás
    Irányítástechnika és Informatika Tanszékdr. Hanák Pétertud. munkatárs
    Számítástudományi és Információelméleti Tanszékdr. Szeredi Péterdocens
    Egyéb megjegyzések

    Honlap: 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ó Erlang és Prolog értelmezők, ill. fordítóprogramok elérését, a gyakorlórendszer elérését és használatát, valamint a házi feladatok elkészítésére és beadására vonatkozó tudnivalókat a tantárgy honlapján ismertetjük.