582315: Johdatus funktionaaliseen ohjelmointiin
1. Kurssikuvaus
Kurssi johdattaa ohjelmointitapaan, jossa ohjelma pyritään kirjoittamaan siten, että sen suorittamista voitaisiin ajatella jonkin matemaattisen funktion arvon laskemisena. Tällainen lähestymistapa ohjelmointiin on hyödyllinen esimerkiksi silloin, kun pyritään sellaisiin ohjelmiin, joiden oikea toiminta voitaisiin todistaa. Esimerkkinä funktionaalisesta ohjelmointikielestä kurssilla on Haskell.
2. Esitietovaatimukset
Esitietoina oletetaan kurssi 58131-8: Tietorakenteet tai vastaavat perustiedot ohjelmoinnista ja tietorakenteista.
3. Asema opetuksessa
Valinnainen kurssi, joka on
- uusimmassa (1.8.2005-) tutkinnossa
- perus- ja aineopintotasolla laajuudeltaan 4 op
- vanhemmissa tutkinnoissa
- cum laude approbatur -tasolla laajuudeltaan 2 ov.
4. Tavoite
Eri ohjelmointikielet eroavat toisistaan varsinkin siinä, millaisia ongelmanmallinnustapoja ne tukevat. Perusopetuksessa käytettävän Java-ohjelmointikielen myötä on tutustuttu ongelmien mallinnukseen olioita ja periytymistä käyttämällä. Tällöin keskitytään käsitehierarkioiden esittämiseen.
On kuitenkin sellaisia ongelmia, joissa keskeinen mallinnettava asia onkin sellainen syöte-tulos-vastaavuus, joka voidaan esittää hierarkioita luontevammin (matemaattisilla) funktioilla ja niiden välisillä operaatioilla. Näin mallinnettuja tehtäviä on vuorostaan luontevampaa ohjelmoida sellaisilla kielillä, joissa funktio on peruskäsite (olion sijaan tai ohella).
Kurssin yleistavoite onkin esitellä tällaista funktionaalista perustuvaa ohjelmointia käyttäen funktionaalista ohjelmointikieltä. Esimerkkikielenä on Haskell, joka on tämä ohjelmointikoulukunnan puhdasverinen edustaja.
5. Suoritustavat
Kurssin voi suorittaa kahdella eri tavalla:
- luennoilla, laskuharjoituksilla ja kurssikokeella
- jotka pidetään syksyn 2006 toisella periodilla
- erilliskokeella
- näiden luentojen jälkeen. Erilliskoeajoista ilmoitetaan laitoksen verkkosivuilla erikseen.
Sisältö on molemmissa tavoissa sama, eli kyseiset luennot.
Laskuharjoitukset eivät ole pakollisia. Kurssista voi saada täydet pisteet ja parhaan arvosanan pelkällä kurssikokeella.
Laskuharjoituksista saa kuitenkin lisäpisteitä (joita on jaossa 1/5 koepisteistä). Nämä lisäpisteet lisätään kurssikokeesta saatuihin pisteisiin arvosanaa määrättäessä.
Laskuharjoituksista kerätyt lisäpisteet otetaan huomioon kurssikokeen lisäksi vielä ensimmäisessä kurssin jälkeisessä erilliskokeessa. Seuraavissa erilliskokeissa niitä ei enää oteta huomioon.
The exercise sessions are held in Finnish. However, these exercises are optional: You can get full points from the course exam alone. On the other hand, the exercises provide extra points (up to 1/5th above the exam points) to supplement your exam score. These extra points are taken into account in the course exam and the first separate exam after the course, but not in any subsequent separate exams. Contact the lecturer in advance if you want the exam questions in English.
6. Materiaali
- Luentokalvot
-
tulevat saataville sähköisessä muodossa allaolevaan kalenteritaulukkoon sitä mukaa
kun ne valmistuvat kurssin edetessä.
- NOTE: Lecture notes are in Finnish. They will become available in electronic form as the course progresses. You can download them from the calendar table below.
- Laskuharjoitustehtävät
-
Tulevat saataville samaan kalenteritaulukkoon edellisen
viikon loppuun mennessä.
- NOTE: Exercises are also in Finnish. The exercises for next week appear in the same calendar by the end of the preceding week.
- Kurssilla ei ole varsinaista oppikirjaa.
-
Haskell-kielen
kotisivuilta löytyy dokumentteja, joita voi käyttää
luentojen oheismateriaalina.
- NOTE: The course does not have a definite textbook. You can supplement the sides with extra documents via the Haskell home page.
- Toteutuksen GHC
- Linux-versio käynnistyy komennolla
ghci
.
- Laitoksen XEmacs
- sisältää Haskell-moodin, joka käynnistyy silloin kun editoitavan lähdekooditiedoston suffiksi on
.hs
.
7. Kurssin tapahtumakalenteri
aika | tapahtumat |
---|---|
viikko 44/2006 |
|
viikko 45/2006 |
|
viikko 46/2006 |
|
viikko 47/2006 |
|
viikko 48/2006 |
|
viikko 49/2006 |
|
viikko 50/2006 |
|
30.1.2007 |
|
3.4.2007 |
|
Tätä sivua ylläpitää kurssin vastuuhenkilö Matti Nykänen. Last modified: Tue Dec 19 13:51:53 EET 2006