Ü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
- Motivatsioon, funktsionaalse programmeerimiskeele tutvustus, paradigmad.
- λ-arvutuse tutvustus
- Idrise baasväärtused ja -tüübid, rekursiivsed funktsioonid täisarvudel.
- Substitutsioon (λ-arvutus)
- kõrgemat järku funktsioonid, listid
- Reduktsioon (λ-arvutus)
- Uute tüüpide loomine, andmestruktuurid, kirjed
- Vahekontrolltöö!
- Andmed ja püsipunktid (λ-arvutus)
- Liidesed, do-notatsioon
- Sisend-väljund
- Laisk väärtustamine ja lõpmatud struktuurid
- Lihtsalt tüübitud lambda arvutus
- Tüübituletus
- Tõestused tüübiteooria abil
- Vektorid ja muud sõltuvad tüübid
- Lineaarsete tüüpidega arvutamine
- Kontrolltöö!
Hindamine
Hinde skaala: 0p .. 50p → F, 51p .. 60p → E, 61p .. 70p → D, ... (Punktid ümardame üles. S.t. 90.1 on juba kindlasti A.)
Hinde moodustavad:
- Kontrolltööd (2*33p, paberil + Moodle)
- Väiksed Kodutööd (12*0.5p, Moodle)
- Suured Kodutööd (2*10p, Moodle + esitlus)
- Test ja tagasiside (16*0.5p, Moodle)
Kontrolltööd/Proovieksamid
Kontrolltöid on 2:
- Vahekontrolltöö ~6. nädalal
- Kontrolltöö 16. nädalal
Mõlemat kontrolltööd saab lahendada kuni 2 korda, esimene kord semestri ajal ning teine kord eksamisessiooni ajal. Kahest katsest läheb arvesse parim.
Kontrolltööde esimene osa on paberil (ning ilma materjalideta) ja teine osa on avatud materjalidega (s.h. enda lahenduste, näidislahenduste ja interneti kasutamine). Kontrolltöö ajal on suhtlemine ja AI kasutamine keelatud.
Kontrolltööd toimuvad Deltas kohapeal. Kontrolltööst haigestumise vms. mõjuval põhjusel puudumise korral võtta ühendust praktikumijuhendajaga.