Õppekava
Kogemus näitab, et uute programmeerimiskeele õppimine võtab aega ning ainult põgus teoreetiline ülevaade keelte konstruktsioonidest ei anna tudengile juurde oskusi. Seepärast keskendume ainult kahele keelele.
Kursus jaguneb kaheks praktiliseks osaks: Haskelli osa ja Scala osa. Esimene pool kursuse sisust on Haskell ja teine pool Scala.
Motivatsioon (Haskell)
![](https://courses.cs.ut.ee/2018/PK/fall/Main/Syllabus?action=download&upname=haskell_logo.png)
Haskelli logo
Väga paljud laiatarbe programmeerimiskeeled võtavad üle funktsionaalse paradigma (FP) konstruktsioone. Praktiliselt kasutatavatest keeltest on just Haskell on kõige ekstreemsem keel -- tõenäoliselt FP kõige ehedam vorm.
Haskell sunnib meid palju sügavamalt mõtlema, mida me tegelikult teha tahame. Näiteks puhas funktsioon Haskellis garanteerib, et seal ei tehta kõrvalefekte -- suhtlus kasutaja või võrguga jne. Seetõttu on programmeerijal võimalik otsustada, millist kõrvalefektide süsteemi kasutada. Nii juhitakse programmeerija mõtlema tema töö tähtsatele detailidele.
Saades aru Haskellist on palju lihtsam kasutada funktsionaalset programmeerimist peavoolu programeerimiskeeltes.
Motivatsioon (Scala)
![](https://courses.cs.ut.ee/2018/PK/fall/Main/Syllabus?action=download&upname=scala_logo.png)
Scala logo
Scala ühendab endas väga palju erinevaid kasutusmustreid. Selles keeles saavad tudengid aimu, kuidas ühendada protseduraalne, objekt-orienteeritud ja funktsionaalne programeerimine.
Kuna OOP on meie tudengitele varasemast tuttav, keskendume keele sellele osale, mis on võimalikult erinev Javast.
Hindamine
Positiivse hinde saamiseks tuleb (perfektse tulemusega) läbida mõlema keele baastestid. Kumbagi testi saab teha kolmel korral, kus ülesande lahendamiseks on aega ~20 minutit.
Keelte oskust hinnatakse punktidega järgnevalt:
- Baastestid -- 20p
- Eksam -- 40p
- Kodutööd -- 30p
- Loengutestid -- 10p
Hinne kujuneb niimoodi:
- 91p .. 100p -- A; 81p .. 90p -- B; 71p .. 80p -- C; 61p .. 70p -- D; 51p .. 60p -- E; 0p .. 50p -- F
Baastest
Baastest on keele omandamise absoluutne miimimumtase (kohati isegi alla miinimumtaseme).
Baastest antakse ette paberil ning ka lahendust saab esitada paberil või läbi Moodle-i. Aega lahendamiseks on ~20 min. Ülesanded on individuaalseks lahendamiseks s.t. suhtlus teiste inimestega on keelatud. Arvuti kasutamine, aga, pole keelatud.
Eksam
Eksami ülesannetes tuleb rakendada kursuses õpitud oskusi probleemide lahendamiseks.
Kodutöö
Kursuse jooksul antakse 5 + 5 kodutööd. Mõlema keele jaoks on neli väikest (8*2p) ja üks suurem kodutöö (2*7p).
Loengutestid
Enamasti tuleb iga loengu kohta tuleb üks moodle-test, mida on loengu kuulajal väga lihtne lahendada.