K-INFO
HU
EN
Login

Applied Functional and Logic Programming

Alkalmazott funkcionális és logikai programozás
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
Subject name (Hungarian, English)
Alkalmazott funkcionális és logikai programozás
Applied Functional and Logic Programming
Subject code BMEVISZM100
Subject type
Training Level
Course types and hours (weekly/semester)
Course type lecture tutorial laboratory
hours (weekly) 3 0 2
type (linked/independent) derived course
Assessment type vizsga
Credits 6
Subject coordinator
Dr. Szeredi Péter
Responsible department
Számítástudományi és Információelméleti Tanszék
Faculty Villamosmérnöki és Informatikai Kar
Subject website
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

1. Előadás: A deklaratív paradigma fő jellemzői: a program mint állítások halmaza, a program végrehajtása mint következtetési folyamat; mellékhatás-mentesség, komponálhatóság. A deklaratív nyelvek fő eszközei: egyszeres értékadás, rekurzió, faszerkezetű adatstruktúrák, mintaillesztés és egyesítés. A deklaratív programozási nyelvek pozícionálása, alkalmazási területei. Motiváló programozási példák bemutatása logikai és funkcionális nyelveken.
Számítógépes labor: Ismerkedés az F# és Prolog programozási nyelvek fejlesztési környezetével, az előadáson bemutatott motiváló programozási példák futtatása, kisebb programozási feladatok megoldása.
2. Előadás: Funkcionális programozás F# nyelven: literál, függvény, lambdakifejezés, változó, kötés, operátor, függvényalkalmazás, részleges függvényalkalmazás, minta, mintaillesztés, őr, függvénydefiníció, klóz, rekurzió, terminális rekurzió, akkumulátor, vezérlés, lista és listanézet, típus, típuslevezetés, ennes, rekord, unió, polimorf típus, rekurzív típus, aktív minta, kivételkezelés, lusta kiértékelés.
Számítógépes labor: Listakezelő függvények programozása F# nyelven, listanézet ill. rekurzió használata, általános rekurzió átírása terminális rekurzióvá akkumulátorok segítségével.
3. Előadás: Könyvtári F# függvények: aritmetika, ennes-függvények, konverziók, logikai operátorok, listakezelő függvények; magasabb rendű függvények, rekurziós minták.
Számítógépes labor: Bináris és általános fastruktúrák defíniálása és alkalmazása F# nyelven, különböző adatelrendezések mellett. Rendezett fastruktúrák. Különböző bejárási algoritmusok.
4. Előadás: Programszervezési eszközök az F# nyelvben: modul, névtér, szignatúra, érvényesség, láthatóság. Tervezési minták. Programok fordítása és futtatása. A fejlesztő környezet haladó lehetőségei.
Számítógépes labor: Magasabb rendű függvények alkalmazása különféle adatstruktúrák feldolgozására, adatok akkumulálására. Egyszerű pénzügyi statisztikai feladatok megoldása.
5. Előadás: Programozás F# nyelven: imperatív programozás (felülírható változó és rekord, unit és ref típus, tömb és tömbnézet, vezérlés), objektum-orientált programozás (operátor, objektum, osztály, esemény, interfész, öröklődés). .NET típusok és könyvtárak használata.
Számítógépes labor: Több modulból álló F# nyelvű program tervezése és megvalósítása egy kis-közepes méretű pénzügyi feladat megoldására, pl. a piac napközbeni mozgásának  számítása témakörben.
6. Előadás: Az F# nyelv tipikus alkalmazási területei a gazdasági informatikában, különös tekintettel a pénzügyi szektorra. Egy nagyobb feladat (pl. kereskedési statisztikák számítása traderekre es ügyfelekre lebontva) F# nyelven való megoldásának áttekintése.
Számítógépes labor: Az előadáson ismertetett feladat egyes részeinek beprogramozása F# nyelven.
7.  Előadás: Az FP nyelvek családjának áttekintése (ML, Erlang, Haskell, F#). Az FP nyelvek jellemző eszközei: típusok, listák és listanézetek, polimorfizmus, részleges függvényalkalmazás, magasabb rendű függvények, mohó és lusta kiértékelés.
Számítógépes labor: Néhány korábban F# nyelven megoldott laborfeladat beprogramozása az ML, Erlang illetve Haskell nyelveken. A Haskell nyelv lusta kiértékelési mechanizmusának értékelése. 
8. Előadás: Az LP nyelvek áttekintése: Prolog, korlát-programozás. Az LP nyelvek jellemző eszközei: predikátumok, klózok, nem-determinizmus, logikai változó, az egyesítés mint a mintaillesztés általánosítása.
Számítógépes labor: Lista- ill. fastruktúra-kezelő eljárások programozása Prolog nyelven. A feladatok megoldása felsoroló ill. megoldásgyűjtő változatban.
9. Előadás: A véges tartományú korlát-programozás (CLPFD) alapfogalmai: korlát-változók, korlátok, megoldási algoritmus. Alapvető korláttípusok: aritmetikai, logikai és halmazkorlátok, ezek alkalmazása.
Számítógépes labor: Egyszerű korlátfeladatok megoldása, pl. térképszínezés, n-vezér, logikai feladványok. A korlátmegoldás folyamatának nyomkövetése.
10. Előadás: A CLPFD feladatmegoldás folyamata: modellezés, korlátok, címkézés. A modellezés lépései: a korlátváltozók és tartományaik meghatározása, korlátok felvétele, redundáns korlátok. Alapvető címkézési módszerek.
Számítógépes labor:  A CLPFD feladatmegoldás folyamatának bemutatása pl. a torpedó logikai feladvány példáján. Többféle modellezési lehetőség kipróbálása. A redundáns korlátok valamint a különböző címkézések hatásának értékelése.
11. Előadás: A CLPFD technológia haladó lehetőségei: tükrözött és kombinatorikai korlátok, szélsőértékfeladatok címkézési módszerei, felhasználói korlátok definiálása. Alkalmazásspecifikus korlátok, pl. ütemezési feladatok megoldására.
Számítógépes labor: Egy kombinatorikus pénzügyi optimalizálási feladat megoldása alapvető ill. alkalmazásspecifikus korlátokkal, a megoldások hatékonyságának összehasonlítása.
12. Előadás: A valós tartományú korlát programozás (CLPR) áttekintése: lineáris és nemlineáris aritmetikai korlátok, megoldási módszerek (szimplex, branch-and-bound). Szélsőértékek számítása.
Számítógépes labor: Jelzálogkölcsön modellezése, a modell többcélú felhasználása. Valós- és egészértékű lineáris optimalizációs feladatok megoldása.
13. Előadás: A korlát-programozás tipikus alkalmazási területei a gazdasági informatikában, különös tekintettel a pénzügyi szektorra. Egy összetettebb pénzügyi feladat (pl. beruházás gazdaságosságának értékelése) modellezése korlát-programozási eszközökkel.
Számítógépes labor: Az előadáson ismertetett feladat egyes részeinek beprogramozása CLPFD ill. CLPR környezetben.
14. Előadás: Kitekintés: a deklaratív nyelvek jövője, programok megbízhatósága, programhelyesség-bizonyítás, többmagos, többprocesszoros végrehajtás, várható alkalmazási lehetőségek.
Számítógépes labor: Az előző heti programozási feladat folytatása. A félévi munka értékelése.

 

 

A deklaratív programozási paradigma áttekintése. A deklaratív programozás két fő területe, a funkcionális programozás (FP) és a logikai programozás (LP) alapjainak és alkalmazási területeinek megismertetése. A funkcionális és a logikai programozási paradigmák módszertanának és eszközrendszerének bemutatása. Kitekintés a funkcionális és a korlát-alapú logikai programozás pénzügyi alkalmazásaira és pénzügyi modellezési lehetőségeire.

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

Előadás és laboratórium  

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  
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  
General rules
Követelmények: •A szorgalmi időszakban: 3-3 kis házi feladatot adunk ki az F#, illetve a korlát-programozási  témakörből. Az aláírás feltételei:       •részvétel a laboratóriumi gyakorlatok 70 százalékán;       •a kis házi feladatok kétharmadának megoldása úgy, hogy a megoldott kis házi feladatok között mindkét témakörből legalább egy-egy szerepeljen. •A vizsgaidőszakban: írásbeli feladatmegoldással kombinált szóbeli vizsga legalább 40%-os teljesítése. Pótlási lehetőségek: A laboratóriumi gyakorlatok pótlására nincs lehetőség. A kis házi feladatok pótlása a pótlási időszak végéig lehetséges. 
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
Kötelező: nincs.  Ajánlott: a deklaratív programozás témakör ismerete.  
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.