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: 2014. október 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. Mann Zoltán Ádám, Számítástudományi és Információelméleti Tanszék
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. 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

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 rendek grafikus formában itt láthatók.

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, 1. kis házi feladat kiadása

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). A SICStus Prolog clpb könyvtára (a könyvtár használata és működése, példák)

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), 2. kis házi feladat kiadá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. 3. kis házi feladat kiadása

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á, 4. kis házi feladat kiadása

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:

4 kis házi feladat és egy nagy házi feladat elkészítése. Mindegyik kis házi feladat 15%-ban, a nagy házi feladat 40%-ban számít bele az értékelésbe.  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 vizsgaidőszakban:

nincs
11. Pótlási lehetőségek

A házi feladatok a pótlási hét végéig pótlólag beadhatók. A pótlólag beadott házi feladatokra 20 %-kal csökkentett pontszám jár.

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