Applied Functional and Logic Programming
A tantárgyleírás hatályossága
| 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) |
|
||||||||||||
| Assessment type | vizsga | ||||||||||||
| Credits | 6 | ||||||||||||
| Subject coordinator |
Dr. Szeredi Péter
contact:
szeredi.peter@vik.bme.hu
|
||||||||||||
| 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
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.
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
Tanulástámogató anyagok
Not provided.
Recommended preliminary knowledge for completing the subject
General rules
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
Curriculum placement
No curriculum placements recorded for this subject version.