Nyelvek típusrendszere (IPM-08sztNYTRE, IPM-08EsztNYTRE)
Ez a tárgy a típusrendszerek elméletével, azaz a típuselmélettel foglalkozik. Ez a tématerület a számítástudomány jelenleg is intenzíven fejlődő területe, mivel a típusrendszerek komoly szerepet játszanak a szoftverfejlesztésben, a programok írásában és fordításában, valamint az utóbbi időben pedig rendkívül nagy szerepet kaptak a programnyelvek tervezésében.
Irodalom
A tárgy elsajátításához az alábbi könyvek javasoltak, segítségükkel az előadáson szereplő témák részletesebben ezekben tanulmányozhatóak.
Csörnyei Z. Lambda-kalkulus: A funkcionális programozás alapjai. Typotex Elektronikus Kiadó, 2007, ISBN 978-963-9664-46-3.
Csörnyei Z. Bevezetés a típusrendszerek elméletébe. ELTE Eötvös Kiadó, 2012, ISBN 978-963-312-134-4.
Ajánlott irodalom
Ezek a könyvek segíthetnek még a fentebb említett könyveket kívül az egyes anyagrészek alaposabb megértésében.
B. C. Pierce. Types and Programming Languages. MIT Press, 2002.
B. C. Pierce. (szerk.) Advanced Topics in Types and Programming Languages. MIT Press, 2005.
R. Harper. Practical Foundations for Programming Languages. Cambridge University Press, 2012. (online)
A tárgy kollokvium, amelyhez írásbeli vizsga tartozik, ahol a következő témakörökben szerepelhetnek kérdések, feladatok:
Az F1 típusrendszer. Szintaktika, szemantika, tulajdonságok. Következtetések helyességének ellenőrzése. (A következtetési szabályok segédlapon elérhetőek lesznek.)
Az F1 kibővített alaptípusai, típus induktív definíciója.Unit, Bool, Nat, Pair, List, Record, Variant. Induktív típusdefiníciók.
Az F1 < : típusrendszer. Altípus, szintaktika, szemantika, tulajdonságok. Következtetések helyességének ellenőrzése. (A következtetési szabályok segédlapon elérhetőek lesznek.) Kontravariáns típus, biztonságos helyettesítés elve, típus gyengítése.
A Curry-típusrendszer. Szintaktika, szemantika, tulajdonságok. Következtetések helyességének ellenőrzése. (A következtetési szabályok segédlapon elérhetőek lesznek.)
Típuskikövetkeztetés a Curry-típusrendszerben. Helyettesítések, egységesítő helyettesítés, principális típus. (A korlátozások generálása és az egységesítés algoritmusa segédlapon elérhetőek lesznek.)
A Hindley-Milner-típusrendszer.let-polimorfizmus, W-, J- és M-algoritmusok, polimorfikus rekurzió (Milner-Mycroft-típusrendszer). (Az algoritmusok leírása egy segédlapon elérhető lesz.)
Az F2 típusrendszer. Szintaktika, szemantika, tulajdonságok. Típusok: Unit, Bool, Nat, Pair, List, rekurzív függvények. Egzisztenciális típusok, az F2∃ típusrendszer szintaktikája és tulajdonságai.
Magasabbrendű típusrendszerek. Az Fω típusrendszer szintaktikája és szemantikája, tulajdonságok, fajták. Az Fω < : típusrendszer szintaktikája és szemantikája, tulajdonságai.
A λP típusrendszer. Szintaktika, szemantika. Függő típusok, függő típusos függvények, a Vec és Fin induktív típuscsaládok.
A vizsgázás előfeltételeként a félév során teljesíteni kell három beadandó feladatot. Ezek az előadáson tárgyalt témákhoz kapcsolódó, önállóan megoldandó programozási feladatokat jelentenek, amelyekhez az oktatók segítségét is igénybe lehet venni elektronikus levél írásával vagy a konzultációs alkalmakon. A feladatokat és az értékelésüket a BE-AD rendszerben lehet elérni, a tárgyhoz tartozó csoportba történő sikeres feliratkozást követően. A BE-AD szerverre a kari, INF-es (Pandorás) azonosítóval és jelszóval lehet belépni, oda külön regisztrálni már nem kell. A beadandókat a félév során folyamatosan, a félév végéig lehet beadni, illetve a beadott megoldásokat a visszajelzések mentén javítani.
A beadandókban szereplő témakörökhöz tartoznak a félév során zárthelyi dolgozatok is, amelyek kapcsolódó elméleti kérdéseket és gyakorlati feladatokat tartalmaznak. Ezekből együtt számtani átlagban legalább 50%-os eredményt kell elérni a vizsgázáshoz. Az itt kiemelkedő eredményt elérő hallgatók jeles érdemjegyet szerezhetnek, külön vizsgázás nélkül.
Amennyiben valaki, nagyon indokolt esetben, nem tud részt venni valamelyik zárthelyin, az az előadónál Neptun-kóddal, elektronikusan, előre jelezve feljelentkezhet a pótlás időpontjára. Az ez időpont egyben arra is lehetőséget ad, hogy akinek a félév során nem sikerült elérnie a kívánt teljesítményt, a rosszul sikerült dolgozatokat javíthatja. (Csak javítani lehet.)
A vizsgakurzus részeként a szorgalmi időszak utolsó két hetében Kaposi Ambrus tömbösítve megtartja az előző féléves előadásokat. Ezeken a részvétel nem kötelező, csupán ajánlott, mivel ennek célja, hogy segítse a felkészülést a vizsgára. Természetesen ez egyúttal konzultációra is lehetőséget nyújt az érintett témakörökben.
A vizsgakurzushoz a második héttel kezdődően tartozik tanrendbe beosztott konzultációs lehetőség is. Ezek csütörtökönként 17 és 18 óra között, a D-2.108 (PC5) teremben lesznek megtartva. A gyakorlati számonkérés szervezéséért felelős oktatók természetesen szükség esetén elektronikus levélben is megkereshetőek: