Tämä kurssi on jo päättynyt.

Kirjoja ja linkkejä

Kurssin oma verkko-oppikirja kattaa kurssin koko sisällön. Voit silti käyttää muita lähteitä oppiaksesi lisää Scala-kielestä tai ohjelmoinnista yleisemmin.

Kaikki alla mainitut kirjat ja verkkosivut hyödyntävät Scala-kieltä tavalla tai toisella, joten ne sopivat "suoremmin" O1-materiaalin jatkoksi. Toki voit laajentaa osaamistasi myös muita ohjelmointikieliä hyödyntävillä kirjoilla.

Kieliversioista

Tämän sivun tiedot on päivitetty kesällä 2022, jolloin Scalan tuore kolmosversio on jo löytänyt tiensä moniin kirjoihin ja nettimateriaaleihin muttei kaikkiin. Myös vanhempaa Scala 2:a käytetään edelleen laajasti. O1:llä käytämme Scala 3:a.

Jos harkitset kirjojen ostoa, huomaa, että osa kirjoista on jo päivitetty Scala 3:een mutta osasta tällaista painosta ei vielä ole. Vanha kieliversio ei estä hyödyntämästä kirjaa, mutta jonkin verran lisävaivaa siitä on. Mahdollisesti kannattaa odottaa seuraavaa painosta.

Scalan kotisivut

Scalan kotoa scala-lang.org-sivustolta löytyy monenlaista enemmän ja vähemmän valmista tietosivua. Muun muassa nämä:

  • Scala 3 Book: Scala 3:n ominaisuuksia pähkinänkuoressa. Kattaa O1:llä käsiteltyjen työkalujen lisäksi muitakin.

  • Scala Standard API Scaladoc: Scalan peruskirjastojen dokumentaatio. Ei valitettavasti kaikilta osin aloittelijaystävällistä.

Kirjoja

Ohjelmoinnin perusteita Scalalla

../_images/lewis_lacher.jpg

Mark C. Lewisin ja Lisa L. Lacherin Introduction to Programming and Problem Solving Using Scala (toinen painos, 2016) on aloittelijoille tarkoitettu ohjelmoinnin oppikirja, joka käyttää Scala-kieltä.

Kirja ei ole sisällöltään eikä opetukselliselta otteeltaan yhtenevä meidän kurssimme kanssa. Esimerkiksi asioiden käsittelyjärjestys on hyvin erilainen kuin kurssillamme, ja kirjassa käytetään eri ohjelmointityökaluja.

Tästä huolimatta kirja voi olla hyödyllistä lisämateriaalia, ja se on ohjelmoinnin aloittelijalle sopivampaa tekstiä kuin satunnainen nettihaulla löytynyt Scalaa käyttävä kirja tai web-sivu.

Kirjan kotisivujen kautta löydät paitsi lisätietoja kirjasta myös kirjaan liittyviä videoluentoja.

Tästä kirjasta ei kirjoitushetkellä (2022 keskivaiheilla) vielä ole Scala 3 -painosta.

Nimenomaan Scala-kielestä syvemmin

../_images/odersky_et_al.png

Martin Oderskyn, Bill Vennersin, Lex Spoonin ja Frank Sommersin Programming In Scala (viides painos, 2021) ei ole ohjelmoinnin perusteiden oppikirja eikä ohjelmointia yleisesti käsittelevä teos muutenkaan, vaan syvällinen katsaus nimenomaan Scala-ohjelmointikieleen. Toisaalta se perustelee eräitä kielen ominaisuuksia tavalla, josta voi oppia kieliriippumattomiakin hyvän ohjelmoinnin periaatteita.

Tämä kirja sopii ohjelmointia jo osaavalle lukijalle, joka haluaa perehtyä seikkaperäisesti Scala-kielen eri piirteisiin. Kirja kattaa runsaasti sellaisia Scala-kielen ominaisuuksia, joita ei käsitellä tällä kurssilla. Kirja on hyvin kirjoitettu, ja suosittelemme sitä kaikille sellaisille, jotka tunnistavat itsensä äskeisestä kuvauksesta.

Uusin painos vuodelta 2021 käyttää Scala 3:a; aiemmat eivät.

Kirjan ensimmäinen painos (2008) on ilmaiseksi luettavana verkossa. Siitäkin voi olla iloa, kunhan pidät mielessä, että Scala-kieli on kehittynyt sittemmin.

Ohjelmoinnin periatteita ja Scalaa

../_images/haoyi.jpg

Haoyi Lin Hands-on Scala Programming (2020) on suunnattu ohjelmointia jo osaaville, jotka haluavat toisaalta oppia hyödyntämään Scalaa ja sen kirjastoja tehokkaasti. Kirja kuljettaa lukijan usean eri ohjelmointiprojektin lävitse; näissä projekteissa kohdataan mm. tiedostonkäsittelyä, web-ohjelmointia eri muodoissaan, rinnakkaislaskentaa ja tietokantoja sekä luodaan itse oma pieni ohjelmointikieli. Apuna ovat paitsi Scalan perus-API myös muut kätevät ja ammattikäyttöönkin sopivat kirjastot.

Kirjan esimerkit ovat konkreettisia mutta yhdistyvät sivistävästi laadukkaan ohjelmistotyön yleisiin periaatteisiin ja ovat opettavaisia myös kokeneille ohjelmoijille. Vaikka kirja onkin hyvin kirjoitettu, niin pelkän O1:n pohjalta se on epäilemättä haastava vaikkei mahdoton. Se voi sopia esimerkiksi O1:n jatkokurssien oheen. Tästä kirjasta ei kirjoitushetkellä (2022 keskivaiheilla) vielä ole Scala 3 -painosta.

../_images/wampler.jpg

Dean Wamplerin Programming Scala: Scalability = Functional Programming + Objects (toinen painos, 2021) opettaa mm. funktionaalista ohjelmointia ja sen yhdistämistä olio-ohjelmointiin ohjelmia suunnitellessa ja toteuttaessa. Sen kohderyhmänä ovat ohjelmointialan ammattilaiset tai edistyneet opiskelijat, jotka haluavat oppia luomaan isonkin mittakaavan ohjelmistoja.

Esimerkkejä on paljon, ja ne esittelevät monia hyviä periaatteita, Scalan hienouksia ja ammattikäyttöön tarkoitettuja kirjastoja kuten Akka hajautettuihin järjestelmiin ja Spark laskentaan ja koneoppimiseen. Kuten edellinenkin, tämä kirja voi sopia O1:n jatkokurssien tueksi. Uusin painos vuodelta 2021 käyttää Scala 3:a; aiemmat eivät.

"Reseptejä" monenlaisiin tilanteisiin

../_images/alexander.jpg

Alvin Alexanderin Scala Cookbook: Recipes for Object-Oriented and Functional Programming (toinen painos, 2021) tarjoaa nimensä mukaisesti ratkaisuja monenmoisiin ohjelmointitarpeisiin. Nämä tarpeet voivat liittyä kieleen itseensä ("Miten saan luotua metodin, joka ottaa mielivaltaisen määrän parametriarvoja?"), erilaisiin sovellustyyppeihin ja kirjastoihin ("Miten saan Scala-koodista yhteyden tietokantaan?", "Miten saan luettua verkkosivun sisällön?") tai yleisiin periaatteisiin ("Miten pääsen eroon null-arvoista koodissani?").

Kirjan voi lukea alusta lopuun tai siitä voi olla hyötyä hakuteoksena. Iso osa sen sisällöstä sopii peruskurssin käyneelle opiskelijalle. Uusin painos vuodelta 2021 käyttää Scala 3:a; ensimmäinen painos ei.

Vaativaa luettavaa puhtaan funktionaalisesta ohjelmoinnista

../_images/chiusano_bjarnason.jpg

Paul Chiusanon ja Rúnar Bjarnasonin Functional Programming In Scala (2014) ei ole ohjelmoinnin perusteiden oppikirja eikä pääasiallisesti Scala-kirjakaan. Scalaa se esittelee ripeästi ja tiiviisti, mutta tavoitteena ei ole kielen opettaminen sinänsä vaan erään ohjelmointitavan, puhtaan funktionaalisen ohjelmoinnin, opettaminen syvällisesti.

Tämä kirja sopii Ohjelmointi 1 -kurssin opiskelijoista vain hyvin pienelle osalle, jolla on merkittävästi aiempaa ohjelmointikokemusta ja joka haluaa haastaa itsensä oppimaan uuden näkökulman ohjelmointiin ja työkaluja laadukkaiden ohjelmien laatimiseen. Kirja sisältää paljon tehtäviä, joista osa on erittäin haastavia.

Tästä kirjasta ei kirjoitushetkellä (2022 keskivaiheilla) ole Scala 3 -painosta. Toisaalta tämän kirjan kohdalla kielen yksityiskohdat eivät ole kovin merkityksellisiä.

Palaute

Tekijät

Tämän oppimateriaalin kehitystyössä on käytetty apuna tuhansilta opiskelijoilta kerättyä palautetta. Kiitos!

Materiaalin luvut tehtävineen ja viikkokoosteineen on laatinut Juha Sorva.

Liitesivut (sanasto, Scala-kooste, usein kysytyt kysymykset jne.) on kirjoittanut Juha Sorva sikäli kuin sivulla ei ole toisin mainittu.

Tehtävien automaattisen arvioinnin ovat toteuttaneet: (aakkosjärjestyksessä) Riku Autio, Nikolas Drosdek, Joonatan Honkamaa, Antti Immonen, Jaakko Kantojärvi, Niklas Kröger, Kalle Laitinen, Teemu Lehtinen, Jaakko Nakaza, Strasdosky Otewa, Timi Seppälä, Teemu Sirkiä, Anna Valldeoriola Cardó ja Aleksi Vartiainen.

Lukujen alkuja koristavat kuvat ja muut vastaavat kuvituskuvat on piirtänyt Christina Lassheikki.

Yksityiskohtaiset animaatiot Scala-ohjelmien suorituksen vaiheista suunnittelivat Juha Sorva ja Teemu Sirkiä. Teemu Sirkiä ja Riku Autio toteuttivat ne apunaan Teemun aiemmin rakentamat työkalut Jsvee ja Kelmu.

Muut diagrammit ja materiaaliin upotetut vuorovaikutteiset esitykset laati Juha Sorva.

O1Library-ohjelmakirjaston ovat kehittäneet Aleksi Lukkarinen ja Juha Sorva. Useat sen keskeisistä osista tukeutuvat Aleksin SMCL-kirjastoon.

Tapa, jolla käytämme O1Libraryn työkaluja (kuten Pic) yksinkertaiseen graafiseen ohjelmointiin, on saanut vaikutteita tekijöiden Flatt, Felleisen, Findler ja Krishnamurthi oppikirjasta How to Design Programs sekä Stephen Blochin oppikirjasta Picturing Programs.

Oppimisalusta A+ luotiin alun perin Aallon LeTech-tutkimusryhmässä pitkälti opiskelijavoimin. Nykyään tätä avoimen lähdekoodin projektia kehittää Tietotekniikan laitoksen opetusteknologiatiimi ja tarjoaa palveluna laitoksen IT-tuki. Pääkehittäjänä on nyt Markku Riekkinen, jonka lisäksi A+:aa ovat kehittäneet kymmenet Aallon opiskelijat ja muut.

A+ Courses -lisäosa, joka tukee A+:aa ja O1-kurssia IntelliJ-ohjelmointiympäristössä, on toinen avoin projekti. Sen suunnitteluun ja toteutukseen on osallistunut useita opiskelijoita yhteistyössä O1-kurssin opettajien kanssa.

Kurssin tämänhetkinen henkilökunta löytyy luvusta 1.1.

Joidenkin lukujen lopuissa on lukukohtaisia lisäyksiä tähän tekijäluetteloon.

a drop of ink
Palautusta lähetetään...