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ó    

    Nagyhatékonyságú deklaratív programozás laboratórium

    A tantárgy angol neve: High Efficiency Declarative Programming Laboratory

    Adatlap utolsó módosítása: 2024. február 1.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar

    Mérnökinformatikus szak, MSc képzés

    Számításelmélet mellékspecializáció

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VISZMB01 3 0/0/3/f 4  
    3. A tantárgyfelelős személy és tanszék Dr. Szeredi Péter,
    A tantárgy tanszéki weboldala http://cs.bme.hu/~szeredi/ndp/
    4. A tantárgy előadója

    Név:

    Beosztás:

    Tanszék, Int.:

    Dr. Szeredi Péter


    c. egyetemi tanár

    Számítástudományi és Információelméleti Tanszék




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

    A Prolog programozási nyelv alapszintű ismerete

    6. Előtanulmányi rend
    Kötelező:
    NEM ( TárgyEredmény( "BMEVISZM232" , "jegy" , _ ) >= 2
    VAGY
    TárgyEredmény("BMEVISZM232", "FELVETEL", AktualisFelev()) > 0)

    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:

    Ajánlott: Deklaratív Programozás c.tárgy 


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

    A Deklaratív Programozás c. BSc tárgy keretében szerzett tudás elmélyítése, kiterjesztése a korlát-logikai programozás (constraint logic programming, CLP) területére. A CLP elméleti alapjainak és megvalósításainak megismertetése, a korlát-programozás módszereinek áttekintése és gyakoroltatása.

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

    1)      A CLP alapjai (a CLP(X) séma, példák), CLP megvalósításhoz szükséges haladó Prolog eszközök (blokkolás, korutin-szervezés, korutin-szervező eljárások Prologban, példák korutinok alkalmazására, kifejezések testreszabott kiírása)

    2)      CLP(MiniNat) esettanulmány (kvázi-CLP nyelv természetes számokra), a CLP(MiniNat) megvalósítása a tanult haladó Prolog eszközök segítségével

    3)      A SICStus Prolog clpq és clpr könyvtára, használatuk és működési elveik, példák a könyvtárak használatára és működésére, esettanulmány: tökéletes téglalapok

    4)      A korlát logikai programozás elmélete (CLP szintaxis, deklaratív szemantika, procedurális szemantika, következtetés folyamata). 

    5)      A CLP(FD) alapjai, bevezetés a SICStus Prolog clpfd könyvtárának használatába, elméleti háttér: korlát-kielégítési problémák (CSP), egyszerű és összetett korlátok, halmazkorlátok és aritmetikai korlátok, példák a clpfd könyvtár használatára

    6)      Konzisztencia és szűkítési szintek, a korlátok végrehajtása, klasszikus CSP feladatok (zebra feladat, n királynő probléma, mágikus sorozatok), redundáns korlátok. Nagy házi feladat kiadása

    7)      Reifikáció, logikai korlátok, korlátok levezethetősége, globális aritmetikai korlátok, clpfd segédeljárások, FD-halmazok, címkézés (címkézési eljárások, címkézési opciók, a címkézés testreszabása)

    8)      Felhasználói korlátok definiálási lehetőségei: globális korlátok és FD-predikátumok. Globális korlátok megadásának módja, a szűkítést végző kampó-eljárások szerkezete

    9)      FD-predikátumok: indexikálisok és tartománykifejezések, reifikáláshoz szükséges további FD-klózok, indexikálisok jelentése, korlátok fordítása indexikálisokká

    10)  A SICStus clpfd beépített kombinatorikus korlátai: számlálás és különbözőség, általános relációk megadása (párokkal, gráfokkal, táblázattal, automatával), gráf-korlátok, ütemezés, pakolás. Példák ezek alkalmazására

    11)  CLP(FD) nyomkövetés az FDBG könyvtár segítségével (használat, testreszabás, saját megjelenítő írása)

    12)  Összetett CLP(FD) esettanulmányok (négyzetdarabolás, torpedó, dominó): modellezés, korlátok megválasztása, hatékony keresés

    13)  A CHR (Constraint Handling Rules) generikus korlát-programozási eszköz, CHR szabályok megadása és végrehajtása, példák a CHR alkalmazására

    14)  Összefoglalás, tartalék

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

    Előadás + laboratórium.  Az előadás részben a fent felsorolt témakörök kerülnek előadásra ill. megvitatásra, a laboratórium részben a hallgatók a témakörhöz kapcsolódó elméleti ill. programozási feladatokat oldanak meg.

    10. Követelmények

    Szorgalmi időszakban:

    Hat kis házi feladat és egy nagy házi feladat elkészítése. A legjobb négy kis házi feladat 5-5%-ban, a nagy házi feladat 40%-ban számít bele az értékelésbe.  A 6 kis házi feladat közül négyet kötelező beadni. A kis házi feladatok beadási határideje a kiadás után két héttel van, a nagy házi feladat a szorgalmi időszak utolsó napjáig adható be. A szorgalmi időszak utolsó hetében a hallgatók zárthelyit írnak, amely 40%-ban számít be az értékelésbe.

    A vizsgaidőszakban:

    nincs

    11. Pótlási lehetőségek
    A kis házi feladatok nem pótolhatók. A nagy házi feladat a pótlási hét végéig pótlólag beadható. A pótlólag beadott házi feladatra 20 %-kal csökkentett pontszám jár. A sikertelen zárthelyi a pótlási héten pótolható. 
    12. Konzultációs lehetőségek

    Előzetes egyeztetés szerint .


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

    Szeredi Péter, Benkő Tamás: Nagyhatékonyságú logikai programozás, Kézirat.

    http://cs.bme.hu/~szeredi/oktatas/docs/nlp02_jegyzet.pdf

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra42
    Félévközi készülés órákra12
    Felkészülés zárthelyire 
    Házi feladat elkészítése42
    Kijelölt írásos tananyag elsajátítása24
    Vizsgafelkészülés 
    Összesen120
    15. A tantárgy tematikáját kidolgozta

    Név:

    Beosztás:

    Tanszék, Int.:

    Dr. Mann Zoltán Ádám

    egyetemi docens

    Számítástudományi és Információelméleti Tanszék

    Dr. Szeredi Péter

    c. egyetemi tanár

    Számítástudományi és Információelméleti Tanszék