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

High Efficiency Declarative Programming Laboratory
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
Tantárgy neve (magyarul, angolul)
Nagyhatékonyságú deklaratív programozás laboratórium
High Efficiency Declarative Programming Laboratory
Tantárgykód BMEVISZMB01
Tantárgyjelleg
Képzési szint
Kurzustípusok és óraszámok (heti/féléves)
Kurzustípus elmélet gyakorlat laboratóriumi gyakorlat
óraszám (heti) 0 0 3
jelleg (kapcsolt/önálló)
Tanulmányi teljesítmény/értékelés típusa félévközi érdemjegy
Tantárgy kreditértéke 4
Tantárgyfelelős
Név:
Tantárgyat gondozó oktatási szervezeti egység
Számítástudományi és Információelméleti Tanszék
Kar Villamosmérnöki és Informatikai Kar
Tantárgy weboldala http://cs.bme.hu/~szeredi/ndp/
Tantárgy elsődleges mintatantervi jellege
Közvetlen előkövetelmények – Erős előkövetelmény nincs
Közvetlen előkövetelmények – Gyenge előkövetelmény nincs
Közvetlen előkövetelmények – Párhuzamos előkövetelmény nincs
Közvetlen előkövetelmények – Mérföldkő előkövetelmény nincs
Közvetlen előkövetelmények – Kizáró feltétel nincs

Célkitűzés

Tantárgyprogram

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

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.

Tanulmányi eredmények

Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:

Tudás

Nincsenek rögzített tanulási eredmények.

Képességek

Nincsenek rögzített tanulási eredmények.

Attitűd

Nincsenek rögzített tanulási eredmények.

Autonómia és felelősség

Nincsenek rögzített tanulási eredmények.

Oktatási módszertan

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.

Tanulástámogató anyagok

Online források
Szeredi; Péter, Benkő Tamás: Nagyhatékonyságú logikai programozás, Kézirat.; http://cs.bme.hu/~szeredi/oktatas/docs/nlp02_jegyzet.pdf; Course material:; http://cs.bme.hu/~szeredi/oktatas/docs/nlp02_jegyzet.pdf (in Hungarian); Literature:; Kim Mariott, Peter J. Stuckey. Programming with Constraints: an Introduction. MIT Press, 1998.; Pascal Van Hentenryck. Constraint Satisfaction in Logic Programming. MIT Press, 1989.; M. Carlsson, G. Ottosson, and B. Carlson. An open-ended finite domain constraint solver. In: Programming Languages: Implementations, Logics, and Programs, pp. 191–206, 1997.; A. Bockmayr and J. Hooker. Constraint programming. In: Handbook of Discrete Optimization, K. Aardal, G. Nemhauser, and R. Weismantel, Eds., pp. 559–600, 2005.

A tantárgy teljesítéséhez ajánlott előzetes ismeretek

Tudás típusú kompetenciák
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
A Prolog programozási nyelv alapszintű ismerete
Képesség típusú kompetenciák
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
nincs
Általános szabályok
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 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ó. 
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Szorgalmi időszakban végzett teljesítményértékelések részaránya

Nincs megadva részarány.

Vizsgaidőszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Vizsgarészek részaránya

Nincs megadva részarány.

Érdemjegy megállapítása

Nincs megadva érdemjegy határ.

Jelenléti és részvételi követelmények

Nincs megadva jelenléti követelmény.

Javítás, ismétlés és pótlás különös szabályai

Nincs megadva.

Rövid leírás

Nincs megadva.

Részletes leírás

Nincs megadva.

Ajánlott tantárgyak
Ajánlott: Deklaratív Programozás c.tárgy 
A tantárgy elvégzéséhez szükséges tanulmányi munka

Nincs megadva munkaidő bontás.

Tantárgykövetelmények hatályossága
Tantárgykövetelmények hatályosságának kezdete:
Tantárgykövetelmények hatályosságának vége:
Tantervi elhelyezés

Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.