K-INFO
HU
EN
Belépés

Deklaratív programozás

Declarative Programming
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)
Deklaratív programozás
Declarative Programming
Tantárgykód BMEVISZA403
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) 3 1 0
jelleg (kapcsolt/önálló) kapcsolt
Tanulmányi teljesítmény/értékelés típusa félévközi érdemjegy
Tantárgy kreditértéke 5
Tantárgyfelelős
Dr. Szeredi Péter
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://dp.iit.bme.hu
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
  • 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.
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.

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

10*4 óra előadás és 10*2 óra kiscsoportos foglalkozás a félév első 10 hetében egyenletesen elosztva.

Tanulástámogató anyagok

Online források
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-erlangb. 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.htmld. Erlang Programming. Wiki Books. http://en.wikibooks.org/wiki/Erlang_Programminge. 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/

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)
Programozás, Programozási technológia, Matematikai logika
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)
Programozás, Programozási technológia, Matematikai logika
Általános szabályok
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ásaA 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. 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.
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
----
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.