Magasabb rendű funkcionális programozás

A tantárgy angol neve: Higher-Order Functional Programming

Adatlap utolsó módosítása: 2006. július 1.

Tantárgy lejárati dátuma: 2009. november 24.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

Villamosmérnöki Szak

Műszaki Informatika Szak

Választható tárgy

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIFO9375 7,8,9 4/0/0/v 5 1/1
4. A tantárgy előadója

Név:

Beosztás:

Tanszék, Int.:

Dr. Hanák Péter

adjunktus

Irányítástechn. és Inform. T. / OM KFHÁT

Csala Viktor

AAM Technologies Kft.

5. A tantárgy az alábbi témakörök ismeretére épít

BMEVIFO2218 Deklaratív programozás

6. Előtanulmányi rend
Ajánlott:

BMEVIFO2218 Deklaratív programozás

7. A tantárgy célkitűzése

A funkcionális programozási ismeretek bővítése, néhány funkcionális programozási nyelv és megvalósítás összevetése, gyakorlati (“ipari”) alkalmazási lehetőségek bemutatása.

8. A tantárgy részletes tematikája
  • Lambda kalkulus és funkcionális programozás.
  • A funkcionális programozás magasabbrendű módszerei (funktor, abstract data type, sharing, monád, continuation passing style stb.).
  • Érdekes algoritmusok és hatékony megvalósításuk.
  • A lusta és mohó kiértékelés összehasonlítása, lusta listák.
  • A lusta kiértékelésű nyelvek egy reprezentánsa (Haskell).
  • A LISP-családba tartozó néhány nyelv (Common Lisp, Scheme stb.).
  • Az ML-család objektumelvű programozási nyelve (OCaml).
  • Más érdekes funkcionális programozási nyelvek bemutatása (Clean, Oz stb.).
  • Metaprogramozás, programgenerálás (MetaML).
  • A típusnyelv kiterjesztése (Depentdent ML).
9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

(előadás, gyakorlat, laboratórium):

Előadás, konzultáció, önálló gyakorlás számítógépen.

10. Követelmények

a) A szorgalmi időszakban

Kötelező: kiadott cikk, téma feldolgozása. Ajánlott: házi feladatok megoldása.

Az aláírás megszerzésének feltétele a kiadott cikk, téma feldolgozása. A vizsgára bocsátásnak más feltétele nincs.

b) A vizsgaidőszakban

A vizsga szóbeli. A félévvégi osztályzatot a vizsga alapján állapítjuk meg.

c) Elővizsga

Megbeszélés szerint.

11. Pótlási lehetőségek

A kiadott cikk, téma feldolgozása a szorgalmi időszak végéig pótolható.

12. Konzultációs lehetőségek

Előzetes egyeztetést követően lehetőség van személyes konzultációra.

13. Jegyzet, tankönyv, felhasználható irodalom

Jegyzet:

Nincs.

Ajánlott irodalom:

  1. Emmanuel Chailloux, Pascal Manoury, Bruno Pagano: Développement d'applications avec Objective CAML. O’Reilly France, 2000, ISBN 2-841-77121-0 (Developing applications with Objective Caml címen az angol változat letölthető a webről).
  2. David Andrew Kranz: ORBIT: An Optimizing Compiler For Scheme. Yale University, 1988.
  3. Paul Hudak, John Peterson, Joseph Fasel: A Gentle Introduction to Haskell 98. Yale University, 1999.
  4. Paul Graham: On Lisp. Prentice Hall, 1993, ISBN 0-130-30552-9.
  5. Greg Michaelson: An introduction to functional programming through lambda calculus. Addison-Wesley, 1989, ISBN 0-201-17812-5
  6. Functional Programming in CLEAN. 1999. Letölthető a webről.
14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka

(a tantárgyhoz tartozó tanulmányi idő körülbelüli felosztása a tanórák, a házi feladatok és a zárthelyik között - a felkészülésre, ill. a kidolgozásra átlagosan fordítandó/elvárható idők félévi munkaórában, kredit x 30 óra, pl. 5 kredit esetén 150 óra):

Kontaktóra

60

Félévközi készülés órákra

30

Felkészülés zárthelyire

-

Házi feladat elkészítése

-

Kijelölt írásos tananyag elsajátítása

30

Vizsgafelkészülés

30

Összesen

150

15. A tantárgy tematikáját kidolgozta

Név:

Beosztás:

Tanszék, Int.:

Dr. Hanák Péter

adjunktus

Irányítástechn. és Inform. T./OM KFHÁT

Csala Viktor

AAM Technologies Kft.