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

Lukuohje

Tässä kurssimateriaalissa yhdistyvät eräänlainen ohjelmoinnin oppikirja ja siihen liittyvät harjoitustehtävät. Materiaali on räätälöity syksyn 2018 Ohjelmointi 1 -kurssille ja kevään 2019 Ohjelmointistudio 2 -kurssille sopivaksi, mutta sitä voi käyttää myös omatoimiseen opiskeluun näiden kurssien ulkopuolella.

Materiaali jakautuu kierroksiin, jotka ryhmittävät kurssia: kullakin kierroksella on oma deadlinensa. Kierrokset 1–13 kuuluvat Ohjelmointi 1 -kurssiin ja kierrokset 14–20 Ohjelmointistudio 2 -kurssiin.

Kierrokset jakautuvat lukuihin. Myöhemmät luvut rakentuvat aiempien varaan, ja materiaali onkin tarkoitus käydä läpi järjestyksessä jättämättä lukuja välistä. Aiempia lukuja voi toki palata kertaamaan myöhempiä käsitellessään, mikä voikin olla mainio ajatus.

Materiaalin ensimmäinen luku 1.1 toimii johdantona Ohjelmointi 1 -kurssille ja luku 14.1 Ohjelmointistudio 2 -kurssille.

Materiaaliin sisältyy paljon esimerkkiohjelmia, joista osa on upotettu suoraan materiaalin sivuille ja osa tarjotaan pakkauksina, joita käsitellään erillisessä ohjelmointiympäristössä.

Oppimateriaalin luvut eivät ole hakuteos. Sivut Scalaa kootusti ja Sanasto voivat tässä suhteessa auttaa, samoin sanahakusivu.

Teknisiä vaatimuksia

Oppimateriaalia on tarkoitus lukea siten, että sinulla on samanaikaisesti pääsy ohjelmointiympäristöön ja voit kokeilla asioita itse materiaaliin perehtyessäsi. Kurssilla käytettävään ohjelmointiympäristöön tutustut materiaalin luvusta 1.2 alkaen.

Materiaalia ei ole suunniteltu luettavaksi mobiililaitteilla. Ei sellaisen käyttö kiellettyäkään ole, mutta paitsi ettet pysty mobiililaitteella käyttämään tarvittavaa ohjelmointiympäristöä, niin kaikki tarvittavat ohjelmistot eivät ole saatavilla mobiililaitteille ja jotkin materiaalin osat saattavat toimia näillä laitteilla vajavaisesti

Kurssimateriaali toimii kunnolla vain, jos sinulla on ajanmukainen web-selain ja selaimen JavaScript-tuki on päällä.

Materiaali sisältää kohtia, joissa käytetään koneen tuottamaa ääntä. Tämä tietysti järjestyy vain, jos sinulla on äänentoistolaitteisto käytettävissäsi. Jos opiskelet ihmisten keskellä, esimerkiksi Aallon tietokoneluokissa, varaa omat kuulokkeet mukaan. Äänikohdat eivät ole aivan välttämättömiä, eikä niitä ole kovin monta. Pakon edessä voit myös ohittaa ne.

Käytetyistä merkinnöistä

Harmareunuksiset laatikot

Tällaisissa harmaareunaisissa laatikoissa on vapaaehtoista luettavaa, jonka ohittaminen ei vahingoita ohjelmoinnin keskeisimpien perusteiden oppimista tai kurssisuoritustasi. Näissä laatikoista löytyy muun muassa lisäselityksiä valituista aiheista sekä enemmän ja vähemmän haastavia vapaaehtoisia lisätehtäviä.

Tutustu myös näiden laatikoiden sisältöön, jos haluat ja ehdit, mutta jos jostain pitää karsia, niin karsi niistä.

Oppimateriaaliin on upotettu lainauksia aiempien ja myös käynnissä olevan kurssin opiskelijoiden kommentteja tähän tyyliin:

Tuntuupa hyvältä, kun ihmettelyn ja vääntämisen jälkeen tulee ymmärtämisen tunne! Olin niin tohkeissani, että palautin viimeisen tehtävän toiseen kertaan vaikka eka meni läpi täysillä pisteillä. :)

Seuraavanlaisissa laatikoissa on ohjelmatekstiä eli ohjelmakoodia. Tällaisia laatikoita käytetään materiaalissa toistuvasti esimerkkiohjelmia käsiteltäessä. Monesti käytetään erivärisiä tekstejä ohjelmakoodin eri osien korostamiseen kuten alla.

def nosta(summa: Int) = {
  val nostettu = min(summa, this.saldo)
  this.saldo = this.saldo - nostettu
  nostettu
}

Seuraavanlaisissa laatikoissa on ns. REPL-esimerkkejä eli esimerkkejä REPLiksi kutsutun vuorovaikutteisen ohjelmointiympäristön käytöstä. Tummemmalla pohjalla on käyttäjän antama syöte ja vaaleammalla tietokoneen antama vastaus. REPL-ympäristö esitellään luvussa 1.3.

1 + 1res0: Int = 2
50 + 50 > 100res1: Boolean = false

Seuraavanlaisia vihertäviä laatikoita käytetään monien esimerkkien selityksinä. Siirtämällä hiiren kursorin laatikon päälle korostuvat esimerkistä ne kohdat, joihin selitys liittyy. Voit myös näpäyttää laatikoita, jolloin korostus jää päälle.

Nämä ovat ohjelmoijan näppäimistöllään antamia syötteitä.
Nämä ovat arvoja, jotka tietokone on määrittänyt saamiensa syötteen perusteella.

Raikkaan punaisissa laatikoissa on pseudokoodia eli ohjelmakoodia muistuttavaa mutta ainakin osittain vain ihmislukijalle tarkoitettua tekstiä. Pseudokoodia käytetään ensi kerran luvussa 2.5.

def totalPrice = {
  Vuorotellen jokaiselle huutokaupalle puskurissa this.items:
    - Selvitä huutokaupan hinta ja lisää summaan.
  Lopuksi palauta summa.
}

Kurssimateriaaliin on myös upotettu erilaisia vuorovaikutteisia osia kuten monivalintakysymyksiä ja vaiheittaisia animaatioita, joita lukija voi kontrolloida. Näiden osien käyttö on joko itseselitteistä tai siihen on annettu apua paikan päällä.

Palaute

Tekijät

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

Kierrokset 1–13 ja niihin liittyvät tehtävät ja viikkokoosteet on laatinut Juha Sorva.

Kierrokset 14–20 on laatinut Otto Seppälä. Ne eivät ole julki syksyllä, mutta julkaistaan ennen kuin määräajat lähestyvät.

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 Riku Autio, Jaakko Kantojärvi, Teemu Lehtinen, Timi Seppälä, Teemu Sirkiä ja Aleksi Vartiainen.

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

Yksityiskohtaiset animaatiot Scala-ohjelmien suorituksen vaiheista ovat suunnitelleet Juha Sorva ja Teemu Sirkiä. Niiden teknisen toteutuksen ovat tehneet Teemu Sirkiä ja Riku Autio käyttäen Teemun toteuttamia Jsvee- ja Kelmu-työkaluja.

Muut diagrammit ja materiaaliin upotetut vuorovaikutteiset esitykset on laatinut Juha Sorva.

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

Opetustapa, jossa 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+ on luotu Aallon LeTech-tutkimusryhmässä pitkälti opiskelijavoimin. Pääkehittäjänä toimii tällä hetkellä Jaakko Kantojärvi, jonka lisäksi järjestelmää kehittävät useat tietotekniikan ja informaatioverkostojen opiskelijat.

Kurssin tämänhetkinen henkilökunta on kerrottu luvussa 1.1.

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

../_images/imho15.png
Palautusta lähetetään...