TIEA341 Funktio-ohjelmointi 1 (1–5 op)

Opinnon taso:
Aineopinnot
Arviointiasteikko:
0-5
Suorituskieli:
englanti, suomi
Vastuuorganisaatio:
Informaatioteknologian tiedekunta
Opetussuunnitelmakaudet:
2020-2021, 2021-2022, 2022-2023, 2023-2024

Kuvaus

Sisältö

Tällä kurssilla käydään läpi funktio-ohjelmoinnin perusasiat, joihin lukeutuvat ainakin lausekkeet: lausekkeiden muodostaminen ja sieventäminen, muuttujat: muuttujien näkyvyys ja sidonta, aliohjelmat: aliohjelmien kutsuminen ja sivuvaikutukset, rekursio: rekursiivisten prosessien luokittelu, funktiot: korkeamman asteen ja nimettömät funktiot, sekä abstraktiot: abstraktioiden mallintaminen funktionaalisilla ohjaus- ja tietorakenteilla.

Suoritustavat

Pääasiallisesti kurssi suoritetaan palauttamalla tehtävät määräajassa. Vaihtoehtoisesti kurssin voi suorittaa tentillä, joka järjestetään ensimmäisenä yleisenä tenttipäivänä, paitsi jos tenttiin ei ilmoittaudu ketään. Tentistä kannattaa huomioida se, että se on huomattavasti muita suoritustapoja vaikeampi tapa saada kurssista hyvä arvosana.

Arviointiperusteet

Laskemme tehtävistä tai tentistä karkean summatiivisen arvion, jota käytämme arvosanan määrittämiseen. Ajan salliessa tarjoamme tehtävistä myös formatiivista palautetta, joka ei itsessään vaikuta arvosanaan.

Osaamistavoitteet

Tällä kurssilla tutustumme siihen, miltä tyypittämätön (eli dynaamisesti tyypitetty) funktio-ohjelmointi näyttää ja mihin sitä voi käyttää. Tämän kurssin tavoite ei ole kouluttaa teistä sovellusohjelmoinnin huippuosaajia, vaan tarjota teille syvällisempiä näkökulmia ohjelmoinnin perusasioihin ja muodostaa teille riittävät pohjatiedot siihen, että voitte myöhemmin tutustua tyypitettyyn (eli staattisesti tyypitettyyn) funktio-ohjelmointiin ilman kyyneliä. Toisaalta tämä kurssi tarjoaa teille myös erinomaisen tekosyyn uudenlaisten työkalujen ja työtapojen kokeilemiseen.

Esitietojen kuvaus

Tällä kurssilla ei ole ehdottomia kurssimuotoisia esitietovaatimuksia. Osallistujilta kuitenkin edellytetään tietokoneen peruskäytön hallintaa, kohtuullista matemaattista kypsyyttä sekä tervettä asennetta työntekoon. Matemaattinen kypsyys ei ainoastaan tee kurssista helpompaa suorittaa, vaan auttaa sen lisäksi luomaan yhteyksiä sellaisiin asioihin, joita käsitellään syvällisemmin muilla kursseilla.

Oppimateriaalit

Sampsa Kiiskinen. “TIEA341: Funktio-ohjelmointi”. Eprint: kurssit/tie/tiea341/2023s. TIM, 2023-08-15. URL: https://tim.jyu.fi/view/kurssit/tie/tiea341/2023s/koti

Kirjallisuus:


Harold Abelson and Gerald Jay Sussman with Julie Sussman. “Structure and Interpretation of Computer Programs”. Foreword by Alan Jay Perlis. Edited by Neil Van Dyke and Andres Raba. 2nd Edition: Cambridge, Massachusetts and London, England, 1996. URL: https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/full-text/book/book.html

Harold Abelson and Gerald Jay Sussman with Julie Sussman. “Structure and Interpretation of Computer Programs”. Foreword by Alan Jay Perlis. Edited by Neil Van Dyke and Andres Raba. 2.6.6th Edition: GitHub, 2015. URL: https://sarabander.github.io/sicp/

Dorai Sitaram. “Teach Yourself Scheme in Fixnum Days”. Cover Art by Margaret Wong. 1st Edition: GitHub, 2015. URL: https://ds26gte.github.io/tyscheme/

Hal Abelson et al. “Revised⁵ Report on the Algorithmic Language Scheme”. Edited by Richard Kelsey and William Clinger and Jonathan Rees. 1998-02-20. URL: https://people.csail.mit.edu/jaffer/r5rs/

Panicz Maciej Godek. “SRFI-200: Pattern Matching”. In: Scheme Requests for Implementation 200 (2022-03-23). URL: https://srfi.schemers.org/srfi-200/srfi-200.html

Jesse Alama et al. “raco: Racket Command-Line Tools”. Version 8.9: Racket, 2023-05-15. URL: https://docs.racket-lang.org/raco/

Urs Schreiber et al. “Monad”. Revision 117: nLab, 2023-08-13. URL: https://ncatlab.org/nlab/revision/monad/117

Suoritustavat

Tapa 1

Valitaan kaikki merkityt osat
Suoritustapojen osat
x

Osallistuminen opetukseen (1–5 op)

Tyyppi:
Osallistuminen opetukseen
Arviointiasteikko:
0-5
Suorituskieli:
englanti, suomi

Opetus