K-INFO
HU
EN
Login

Declarative Programming

Deklaratív programozás
A tantárgyleírás hatályossága
Hatályosság kezdete:
Hatályosság vége:
Subject name (Hungarian, English)
Deklaratív programozás
Declarative Programming
Subject code BMEVIFO2218
Subject type
Training Level
Course types and hours (weekly/semester)
Course type lecture tutorial laboratory
hours (weekly) 4 0 0
type (linked/independent)
Assessment type vizsga
Credits 5
Subject coordinator
Dr. Szeredi Péter
Responsible department
Faculty
Subject website http://dp.iit.bme.hu/
Primary curriculum type
Direct prerequisites – Strong prerequisite none
Direct prerequisites – Weak prerequisite none
Direct prerequisites – Parallel prerequisite none
Direct prerequisites – Milestone prerequisite none
Direct prerequisites – Exclusion none

Objectives

Programme

Az imperatív és a deklaratív (funkcionális és logikai) programozás összevetése.

Funkcionális programozás SML nyelven.

Kifejezés, érték, típus. Egyszerű és összetett típusok (ennes, rekord, lista, fa stb.). Kötés. Típuslevezetés. Mintaillesztés. Függvény, magasabb rendű és részlegesen alkalmazható függvény. Típusparaméter, polimorfizmus. Rekurzió, iteráció. Lusta lista. Absztrakt típus. Struktúra, szignatúra, funktor. SML Basis Library. Programozási módszerek. Új irányzatok a funkcionális programozásban.

Logikai programozás Prolog nyelven.

A Prolog nyelv alapjai: eljárások, vezérlési szerkezet, ö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 hallgatók ismerkedjenek meg az előző félévekben tanult imperatív programozás után a deklaratív programozással.

Learning outcomes

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

Knowledge

No learning outcomes recorded.

Skills

No learning outcomes recorded.

Attitudes

No learning outcomes recorded.

Autonomy and responsibility

No learning outcomes recorded.

Oktatási módszertan

Tantermi és számítógép-laboratóriumi foglalkozások, konzultáció, önálló gyakorlás számítógépen, előadások.

Tanulástámogató anyagok

Not provided.

Recommended preliminary knowledge for completing the subject

Knowledge type competencies
(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
Skill type competencies
(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
Recommended (non-compulsory) preliminary competencies
(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
General rules
Követelmények: a) Előfeltételek Alapszintű logikai, továbbá elméleti és gyakorlati programozási ismeretek. b) Követelmények a szorgalmi időszakban Kötelező: részvétel négy labor-és legalább négy tantermi gyakorlaton előre megadott beosztás szerint, a nagyzárthelyi megírása, három-három kis és egy-egy nagy házi feladat beadása mindkét programozási nyelven. Ajánlott: a webes gyakorlórendszer használata. c) Tantermi és laborgyakorlatok Órarend szerinti időben tantermi és laborgyakorlatokat tartunk. Tantermi és laborgyakorlatok máskor is lehetnek, ha szükséges, pl. a munkahelyek korlátozott száma, a labor, illetve tanterem foglaltsága miatt, vagy elmaradt tantermi és laborgyakorlatok pótlására. A kis létszámú hallgatói csoportokat egy-egy állandó konzulens segíti a tananyag elsajátításában, ezért a hallgatóknak előre egyeztetett beosztás szerint kell részt venniük a foglalkozásokon, mégpedig minden hallgatónak legalább négy tantermi és négy laborgyakorlaton. A beosztás a regisztrációs hét második felében készül el az alábbi séma alapján, figyelembe véve az oktatási szüneteket és más korlátozó tényezőket: tanterem labor tanterem labor 1. hét 1. alk. nagycsop1 - 1. hét 2. alk. nagycsop4 - 2. hét 1. alk. nagycsop2 nagycsop1 2. hét 2. alk. nagycsop5 nagycsop4 3. hét 1. alk. nagycsop3 nagycsop2 3. hét 2. alk. nagycsop6 nagycsop5 4. hét 1. alk. nagycsop1 nagycsop3 4. hét 2. alk. nagycsop4 nagycsop6 5. hét 1. alk. nagycsop2 nagycsop1 5. hét 2. alk. nagycsop5 nagycsop4 6. hét 1. alk. nagycsop3 nagycsop2 6. hét 2. alk. nagycsop6 nagycsop5 7. hét 1. alk. nagycsop1 nagycsop3 7. hét 2. alk. nagycsop4 nagycsop6 8. hét 1. alk. nagycsop2 nagycsop1 8. hét 2. alk. nagycsop5 nagycsop4 9. hét 1. alk. nagycsop3 nagycsop2 9. hét 2. alk. nagycsop6 nagycsop5 10. hét 1. alk. nagycsop1 nagycsop3 10. hét 2. alk. nagycsop4 nagycsop6 11. hét 1. alk. nagycsop2 nagycsop1 11. hét 2. alk. nagycsop5 nagycsop4 12. hét 1. alk. nagycsop3 nagycsop2 12. hét 2. alk. nagycsop6 nagycsop5 13. hét 1. alk. konzultáció nagycsop3 13. hét 2. alk. konzultáció nagycsop6 14. hét 1. alk. konzultáció pótlás 14. hét 2. alk. konzultáció pótlás Az előre egyeztetett beosztás szerinti gyakorlatokról csak nagyon indokolt esetben és a konzulens tudtával szabad távol maradni. Egy kötelező tantermi gyakorlat pótlására – a konzulenssel egyeztetett időpontban – a gyakorlatot követő két héten belül van lehetőség egy másik tantermi gyakorlaton. Egy kötelező laborgyakorlat pótlására – ugyancsak a konzulenssel egyeztetett időpontban – a szükség szerint két vagy háromhetente tartandó pótlaborgyakorlatokon adunk lehetőséget. d) A nagyzárthelyi időpontja és értékelése A nagyzárthelyit, amelyen a kijelölt tananyagot kérjük számon, az ütemtervben megadott oktatási héten íratjuk meg. A nagyzárthelyi pótlására, ill. javítására a szorgalmi időszak utolsó heteiben, továbbá – ismétlővizsga-jelleggel – a vizsgaidőszak első három hetében adunk lehetőséget. A pót-, ill. a pótpótzárthelyin is a nagyzárthelyin elvárt tananyagot kell tudni. 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. Minden esetben az utolsó zárthelyire kapott pontszámot vesszük figyelembe 15%-os súllyal a félévvégi osztályzatban. e) A nagy házi feladatok ki- és beadása, valamint értékelése A nagy házi feladatot az ütemtervben megadott oktatási héten adjuk ki. Az SML- é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. Az SML- és a Prolog-program helyes működését egymástól függetlenül legalább három tesztkészlettel vizsgáljuk. Az első tesztkészletet a házi feladattal együtt kiadjuk. A második tesztkészlettel a beadáskor vizsgáljuk a házi feladatot. A tesztelés eredményét elektronikus úton közöljük. Nem kielégítő eredmény esetén a javított változat a beadási határidőn belül többször is beadható. A pontszámot egy harmadik – az előzőkhöz hasonló nehézségű – tesztkészlettel állapítjuk meg. Egy tesztesetre akkor jár pont, ha a program meghatározott futási időn belül helyes eredményt ad. A programok jól olvasható („öndokumentált”) voltát és az elektronikus változatban (ascii, html, pdf) elkészítendő 5-10 oldalas dokumentációt is pontozzuk. A kapott pontszámot nyelvenként 7,5%-os, összesen 15%-os súllyal vesszük figyelembe a félévvégi osztályzatban. A hibátlan és megfelelően dokumentált, azaz a maximális pontszámot elérő programok 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. A nagy házi feladat pótlására a határidő lejárta után nincs lehetőség. f) A kis házi feladatok ki- és beadása, valamint értékelése A félév során hat alkalommal adunk ki kis házi feladatot. Az SML-, ill. Prolog-nyelvű programok beadásának módját a tárgy honlapján közzéteendő feladatkiírás részletezi. A helyes megoldásokra kapott pontok pluszpontként számítanak bele a félévvégi osztályzatba. A kis házi feladatok pótlására a határidő lejárta után nincs lehetőség. g) A gyakorlórendszer használata A tananyag elsajátítását webes gyakorlórendszer segíti. A gyakorlórendszer használatát a tárgy honlapján ismertetjük. h) Az aláírás megszerzésének feltételei Részvétel legalább négy tantermi és négy laborgyakorlaton az adott félévben. Mindkét nyelven legalább 40%-ban sikeres zárthelyi (nagyzárthelyi, pótzárthelyi vagy pótpótzárthelyi) megírása az adott félévben. Mindkét nyelven olyan nagyfeladat beadása az adott félévben, amelyik a tesztesetek 40%-ára sikeresen lefut. Legalább egy-egy olyan kisfeladat beadása mindkét nyelven és egy harmadik olyan kisfeladat beadása valamelyik nyelven az adott félévben, amelyik sikeresen lefut a tesztesetekre. i) A vizsgára bocsátás feltételei A hallgatónak legyen érvényes, azaz az adott félévben vagy az adott félévet megelőző tíz félév során megszerzett aláírása. j) A vizsga A vizsga írásbeli feladatmegoldással kombinált szóbeli vizsga. A sikeres vizsga feltétele a vizsgán megszerezhető maximális pontszám 40%-ának elérése külön-külön mindkét programozási nyelvből.     k) Javítási, illetve felkészülési lehetőségek aláírással rendelkező hallgatóknak Aláírással rendelkező hallgatók javítási, illetve felkészülési céllal írhatnak zárthelyit, illetve adhatnak be kis- és nagyfeladatokat, az alábbiak szerint: javítási céllal zárthelyit írni csak a nagy-, illetve a pótzárthelyi időpontjában lehet; a félévvégi osztályzatban az utoljára megírt zárthelyi eredményét vesszük figyelembe; a kis, illetve nagy házi feladatok beadását követően, előre egyeztetett időpontokban részt kell venni tantermi és laborgyakorlatokon, ahol a házi feladattal összefüggő ismereteket ellenőrizzük; a házi feladatokra csak akkor jár a félévvégi osztályzatba beszámítható pontszám, ha a hallgató részt vesz ezeken a tantermi és laborgyakorlatokon, és a tudását a helyben feladott kérdések megválaszolásával, illetve feladatok megoldásával igazolja; a félévvégi osztályzatban az adott félévben beadott házi feladatokra kapott pontszámot, ennek hiányában, ha volt, a korábban megszerzett pontszámot vesszük figyelembe. l) A félévvégi osztályzat megállapítása A félévvégi osztályzatban a vizsgára kapott összpontszámot 70%-os, a nagyzárthelyire (ill. a pót- vagy a pótpótzárthelyire) és a nagy házi feladatra kapott összpontszá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. l) 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. Mástól származó program vagy programrészlet átvétele/átadása és beadása esetén a kis és a nagy házi feladat érvénytelen. A nagyzárthelyin, a pót- és a pótpótzárthelyin, valamint a vizsgán semmilyen segédeszköz nem használható; a meg nem engedett eszközöket használó hallgató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: Tantermi gyakorlat pótlására a gyakorlatot követő két héten belül van lehetőség egy másik tantermi gyakorlaton. Laborgyakorlat pótlására a szükség szerint két vagy háromhetente tartandó pótlaborgyakorlatokon adunk lehetőséget. A nagyzárthelyi pótlására, illetve javítására a szorgalmi időszak utolsó heteiben (a pótzárthelyin), továbbá – ismétlővizsga-jelleggel – a vizsgaidőszak első három hetében (a pótpótzárthelyin) adunk lehetőséget. A kis és nagy házi feladat pótlására a határidő lejárta után nincs lehetőség.
Assessment methods
In-term assessments

No detailed assessments provided.

Weight of in-term assessments

No weights provided.

Exam-period assessments

No detailed assessments provided.

Weight of exam elements

No weights provided.

Grade calculation

No grade thresholds provided.

Attendance requirements

No attendance requirements provided.

Rules for retake and resubmission

Not provided.

Short description

Not provided.

Detailed description

Not provided.

Recommended courses
-------
Workload to complete the subject

No workload breakdown provided.

Validity of subject requirements
Requirements valid from:
Requirements valid until:
Curriculum placement

No curriculum placements recorded for this subject version.