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ä 2024, 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
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ä (2024 keskivaiheilla) ole Scala 3 -painosta.
Nimenomaan Scala-kielestä syvemmin
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 tavasta, jolla se perustelee eräitä Scalan ominaisuuksia, voi oppia myös kielestä riippumattomia 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 muuttunut sittemmin.
Ohjelmoinnin periatteita ja Scalaa
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ä vaikea vaikkei mahdoton. Se voi sopia esimerkiksi O1:n jatkokurssien oheen.
Tästä kirjasta ei kirjoitushetkellä (2024 keskivaiheilla) vielä ole Scala 3 -painosta.
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
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
Paul Chiusanon ja Rúnar Bjarnasonin Functional Programming In Scala (toinen painos, 2023) 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 vaikeita.
Uusin painos vuodelta 2023 käyttää Scala 3:a; ensimmäinen painos ei.
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, Kaisa Ek, Joonatan Honkamaa, Antti Immonen, Jaakko Kantojärvi, Onni Komulainen, Niklas Kröger, Kalle Laitinen, Teemu Lehtinen, Mikael Lenander, Ilona Ma, Jaakko Nakaza, Strasdosky Otewa, Timi Seppälä, Teemu Sirkiä, Joel Toppinen, 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, Juha Sorva ja Jaakko Nakaza. 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; sitä 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.