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: 2014. szeptember 15.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Mérnök informatikus szak, BSc képzés
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VISZA403   3/1/0/f 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. Szeredi Péterc.egyetemi tanár
    Számítástudományi és Információelm. Tanszék
    Kápolnai RichárdtanársegédIrányítástechnika és Informatika 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ő:

    (TárgyEredmény( "BMEVIIIA217" , "jegy" , _ ) >= 2
    VAGY
    TárgyEredmény( "BMEVIIIAB01" , "jegy" , _ ) >= 2
    VAGY
    TárgyEredmény( "BMEVIFO2228" , "jegy" , _ ) >= 2 )


    ÉS NEM ( TárgyEredmény( "BMEVISZAD00" , "jegy" , _ ) >= 2
    VAGY
    TárgyEredmény("BMEVISZAD00", "FELVETEL", AktualisFelev()) > 0
    VAGY
    TárgyTeljesítve("BMEVISZA402")
    VAGY Alairas("BMEVISZA402", _))

    ÉS Training.Code=("5N-A8")

    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
    • Bevezetés.
    Az imperatív és a deklaratív (funkcionális és logikai) programozás összevetése. Ismerkedés a deklaratív nyelvekkel: Cékla, a C++ egy deklaratív résznyelve.
    • 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) 10*4 óra előadás és 10*2 óra kiscsoportos foglalkozás a félév első 10 hetében egyenletesen elosztva.
    10. Követelmények a) Részvétel a gyakorlatokon
    A tantermi gyakorlatok 70 százalékán részt kell venni.
    b) Zárthelyi dolgozat értékelése és elfogadása
    A zárthelyi elfogadásához szükséges annak nyelvenként legalább 40%-os szintű megoldása. 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.
    c) Kis házi feladatok
    (A félév során több alkalommal adunk ki kis házi feladatot. A Cékla-, Erlang-, ill. Prolog-nyelvű programok beadásának módját a tárgy honlapján közzéteendő feladatkiírás részletezi. Az alábbiakban fő programozási nyelvnek az Erlang és Prolog nyelveket nevezzük.)
    A kis házi feladatok 50%-ának beadása, a tesztesetek 100%-os teljesítésével úgy, hogy mindkét fő programozási nyelven legalább egy 100%-ot teljesítő programot be kell adni.
    d) Nagy házi feladat, megajánlott jegy
    A nagy házi feladat megoldása nem kötelező a jegy megszerzéséhez, azonban a jegyszámításba beszámít, és beadásával megajánlott jegy is szerezhető.
    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 beszámoló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 gyakorlatokkal, zárthelyivel és kis házi feladatokkal kapcsolatos követelmények teljesítése mellett mindkét fő programozási nyelvből bejut a létraversenybe, és a házi feladatát sikeresen megvédi. Jeles (5) megajánlott jegyet kap az, aki emellett mindkét fő 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 megajánlott jegy elfogadása a beszámoló alóli mentességet jelenti (lásd következő pont).
    e) Beszámoló
    A 11. vagy a 12. héten kell teljesíteni a beszámolót. A beszámoló írásbeli feladatmegoldással kombinált szóbeli beszámoló a tárgy anyagából. A sikeres beszámoló feltétele a beszámolón megszerezhető maximális pontszám 40%-ának elérése külön-külön mindkét fő programozási nyelvből.
    f) A félévvégi osztályzat megállapítása
    A félévvégi osztályzatban a beszámoló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%.

    g) 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 beszámoló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 beszámoló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, és a házi feladatok pótlására nincs lehetőség. A nagyzárthelyi pótlására, illetve javítására a a pótzárthelyin, továbbá a pótlási időszakban (a pótpótzárthelyin) adunk lehetőséget. Ezen alkalmakkor is a nagyzárthelyin elvárt tananyagot kell tudni. A beszámoló pótlására is a pótlási héten adunk lehetőséget.
    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
    Irányítástechnika és Informatika TanszékKápolnai Richárdtanársegéd
    Számítástudományi és Információelm. Tanszékdr. Szeredi Péterc.egyetemi tanár
    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.