Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 sügis
  3. Funktsionaalprogrammeerimine (LTAT.03.019)
EN
Logi sisse

Funktsionaalprogrammeerimine 2024/25 sügis

  • Üldinfo
    • Õppekorraldus
  • Kursus
    • 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
    • Kodutöö 13
    • Kodutöö 14
  • Konspekt
    • 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
  • 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.

Peamised teemad

  1. Motivatsioon, funktsionaalse programmeerimiskeele tutvustus, paradigmad.
  2. λ-arvutuse tutvustus
  3. Idrise baasväärtused ja -tüübid, rekursiivsed funktsioonid täisarvudel.
  4. Substitutsioon (λ-arvutus)
  5. kõrgemat järku funktsioonid, listid
  6. Reduktsioon (λ-arvutus)
  7. Liidesed, do-notatsioon
  8. Uute tüüpide loomine, andmestruktuurid, kirjed
  9. Sisend-väljund
  10. Vahekontrolltöö!
  11. Lihtsalt tüübitud lambda arvutus
  12. Laisk väärtustamine ja lõpmatud struktuurid
  13. Tüübituletus
  14. Andmed ja püsipunktid (λ-arvutus)
  15. Tõestused tüübiteooria abil
  16. Vektorid ja muud sõltuvad tüübid
  17. Lineaarsete tüüpidega sisend-väljund
  18. Kontrolltöö!

Hindamine

Hinde skaala: 0p .. 50p → F, 51p .. 60p → E, 61p .. 70p → D, ... (Punktid ümardame üles. S.t. 9.1 on juba kindlasti A.)

Hinde moodustavad:

  • Kontrolltööd (2*31p, 2*10p alampiir, praksi ja/või sessi ajal)
  • Kodutööd (12*2p, Moodle)
  • Test ja tagasiside (14*1p, Moodle)
  • Active Quiz (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.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused