Institute of Computer Science
  1. Courses
  2. 2023/24 fall
  3. Functional Programming (LTAT.03.019)
ET
Log in

Functional Programming 2023/24 fall

  • Üldinfo
    • Õppekorraldus
  • Loeng
    • Baasväärtused ja tüübid
    • 𝜆-arvutus
    • Kõrgemat järku funktsioonid
    • Interaktiivne programmeerimine
    • Uute tüüpide loomine
    • Liidesed
    • Sisend-Väljund
    • Laiskus
    • Lihtsalt tüübitud 𝜆-arvutus
    • Tüübituletus
    • Sõltuvad tüübid
    • Tõestamine Idrises
    • Kvantitatiivne tüübiteooria
  • Praktikum
    • KKK
    • Installimine
    • Kodutöö 1
    • Kodutöö 2
    • Kodutöö 3
    • Kodutöö 4
    • Kodutöö 5
    • Kodutöö 6
    • Kodutöö 7
    • Kodutöö 8
    • Kodutöö 9
    • Kodutöö 10
    • Kodutöö 11
    • Kodutöö 12
    • Kordamine
    • Projektid
  • Moodle
  • Zulip (sisselogides näed linki)

Üldiselt

Funktsionaalprogrammeerimine (ehk FP) on välja kasvanud λ-arvutuse teooriast ja on oma heade omaduste tõttu leidnud tee paljudesse levinud programmeerimiskeeltesse. Kuigi funktsionaalses stiilis saab programmeerida nii Pythonis, Javas, C++-is, C#-is kui ka JavaScriptis, eelistame õppimiseks puhast funktsionaalset keelt Idris. Lisaks FP alustele õpime tüübipõhist programmeerimist, mis väidab, et tüüpe arvestades on lihtsam kirjutada korrektseid ja tõhusaid programme. Kursuse lõpus vaatame põgusalt paari tänapäevasemat FP teemat: sõltuvate tüüpide teooriat ja kvantitatiivset tüübiteooriat. Sõltuvad tüübid Idrises võimaldavad näiteks funktsioonide korrektust tõestada. Kvantitatiivses tüübiteoorias saame lisaks väljendada, mitu korda mingit väärtust kasutatakse -- võimaldades täpselt spetsifitseerida piiratud ressurssidega arvutusi, näiteks mitmelõimelist arvutamist.

Teemad nädalate kaupa (TODO)

  1. Sissejuhatus, funktsionaalse programmeerimiskeele tutvustus, paradigmad.
  2. λ-arvutuse tutvustus, baasväärtused ja -tüübid, rekursiivsed funktsioonid täisarvudel.
  3. Substitutsioon, kõrgemat järku funktsioonid, listid.
  4. Uute tüüpide loomine, andmestruktuurid, kirjed.
  5. Reduktsioon, λ-termid Idrises.
  6. Liidesed, do-notatsioon, sisend-väljund.
  7. Andmed λ-arvutuses.
  8. Vahekontrolltöö!
  9. Churchi tees
  10. Laisk väärtustamine ja lõpmatud struktuurid
  11. Tüübituletus
  12. Kombinaatorloogika
  13. Lineaarsete tüüpidega sisend-väljund
  14. Vektorid ja muud sõltuvad tüübid
  15. Tõestused tüübiteooria abil
  16. Kontrolltöö!

Hindamine

Hinde skaala: 0p .. 50p → F, 51p .. 60p → E, 61p .. 70p → D, ...

Hinde moodustavad:

  • Kontrolltööd (2*32p, 2*10p alampiir, praksi ja/või sessi ajal)
  • Kodutööd (12*3p, Moodle)
  • Lisaks projektiülesanne + esitlus (6 boonuspunkti)
  • Active Quiz ja Tagasiside (iga küsitlus 0.5 boonuspunkti, Moodle)
Kontrolltööd

Kontrolltöid on 2:

  • Vahekontrolltöö 9. nädalal (8. praktikumis)
  • Kontrolltöö 16. nädalal (15. praktikumis)

Mõlemat kontrolltööd saab lahendada kuni 2 korda, esimene kord semestri ajal praktikumis ning teine kord eksamisessiooni ajal. Kahest katsest läheb arvesse parim.

Kontrolltööd on avatud materjalidega: lubatud on enda lahenduste, näidislahenduste ja interneti kasutamine. Kontrolltöö ajal on suhtlemine keelatud.

Kontrolltööd toimuvad üldjuhul Deltas kohapeal. Kontrolltööst haigestumise vms. mõjuval põhjusel puudumise korral võtta ühendust praktikumijuhendajaga.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment