TIES343 - Funktio-ohjelmointi

Huhuista huolimatta Funktio-ohjelmointia opetetaan taas syyslukukaudella.

Funktio-ohjelmointi on yksi nopeimmin kehittyvistä ohjelmoinnin aloista ja se on jo paikoin syrjäyttänyt olio-ohjelmoinnin perusopetuksen paremman modulaarisuutensa ja tehokkaampien abstraktioidensa takia (Ks. Carnegie-Mellon).

Tällä kurssilla opiskelemme funktio-ohjelmointia käyttäen Haskell-kieltä. Pyrimme oppimaan ja soveltamaan funktioiden käyttöä arvoina, staattista tyypitystä, kevyttä tyyppiteoriaa, laiskaa laskentaa, ohjelmoinnin algebrallisia käsitteitä, rekursiota ja induktiota, persistenttejä tietorakenteita, ohjelman verifioimista sekä rinnakkaislaskentaa SMP-ympäristöissä.

Näiden asioiden opiskelua voi suositella lämpimästi kaikille, sillä kehittyvänä alana funktio-ohjelmointi tuottaa jatkuvasti uusia piirteitä, jotka hiljalleen löytävät tiensä myös mainstream-kieliin.

Kurssilla ei ole esitietovaatimuksia, mutta seuraavat kurssit saattavat muuttua tämän myötä mielekkäämmiksi: MATA220 - Algebra, TIEA241 Automaatit ja kieliopit, TIES448 Kääntäjätekniikka, TIES542 Ohjelmointikielten periaatteet.

Kurssin suoritus koostuu harjoituksista, joita tehdään sekä ohjattuna että itsenäisesti ryhmissä. Tentti on tarjolla vain niille, jotka suorittavat kurssin esitietojensa perusteella.

Kurssiin voi ilmoittautua korppi-järjestelmän kautta.

Kurssi alkaa aloitusluennolla torstaina 1.9.2011, 16:15 - 18:00 salissa Ag Delta. Huomaa, että sinun tulee tutustua ensimmäisen viikon tehtäviin jo ennen 6.9 pidettäviä ensimmäisiä harjoituksia

Lukujärjestys

Huom. Pakollisia paikalla-oloja ovat tiistain harjoitukset ja torstain tehtävien katselmointituokio. Kysymykset ja tehtävät palautetaan sähköisesti.

Koska kurssilla on varattu noin 10h/viikko omatoimista opiskelua, sille kannattaa ehdottomasti varata aikaa lukujärjestyksestä.

Aika Maanatai Tiistai Keskiviikko Torstai Perjantai
8–10 Kysymykset tehtävistä luennoijalle Uudet tehtävät
10–12 Uusi lukutehtävä Tehtävien palautus
12–14
15–16
16–18 Harjoitukset Harjoitukset Tehtävien katselmointi

Kurssipalaute

Voit antaa nimetöntä palautetta kurssista korppikyselyn kautta. Palautetta käytetään sekä kurssin kehittämiseen, että opetuksen yleiseen kehittämiseen.

Anna siis palautetta aina kun tuntuu siltä.

Kirjallisuus

  1. Miran Lipovaca - Learn You A Haskell For Great Good
  2. Bryan O’’Sullivan &al. - Real World Haskell
  3. Graham Hutton - Programming in Haskell
  4. Simon Thompson: Haskell: The Craft of Functional Programming
  5. Paul Hudak: The Haskell School of Expression
  6. Richard Bird: Introduction to Functional Programming using Haskell
  7. Chris Okasaki: Purely Functional Data Structures

Osaamistavoitteet

Osaamistavoite 1. Muistaa 2. Ymmärtää 3. Osaa Soveltaa 4. Osaa analysoida 5. Osaa arvioida 6. Osaa luoda
Funktiot & Funktionaalit X
Perustyypitys X
Tyyppiluokat X
Rekursio & Induktio X
Haskell - syntaksi X
Laiska laskenta X
Monadit X
Persistentit tietorakenteet X
Funktionaalinen IO X
Rinnakkaislaskenta X
Funktionaalinen ongelmanratkaisu X
Funktorit & applikatiiviset- X

Kurssin työmäärä

t/vko viikkoja yht.
Ohjaukset 2 12 24
Harjoituspalautukset 2 12 24
Harjoitukset (kotona) 10 12 120
Yhteensä: 14 12 168

Etäsuoritukset

Kurssin voi suorittaa ilman paikalla-oloa, mutta tällöin suurin osa kurssin tuesta jää saamatta. Suoritustapa on sama kuin normaalisuorittajalla, eli tehtävät ja kysymykset palautetaan kerran viikossa, mutta tilaisuuksiin ei tarvitse osallistua. Koska jokaisen etäsuorittajan tehtävät ja kysymykset on käsiteltävä erikseen, kurssilla ei pystytä tarjoamaan samaa määrää tukea etäsuorittajille kuin varsinaisille opiskelijoille.

blog comments powered by Disqus