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

Lukuohje

Tässä kurssimateriaalissa yhdistyvät ohjelmoinnin oppikirja ja siihen liittyvät harjoitustehtävät. Materiaali on räätälöity Ohjelmointi 1 -kurssille sopivaksi, mutta voit käyttää sitä myös omatoimiseen opiskeluun kurssin ulkopuolella.

Materiaali jakautuu kierroksiin, jotka rytmittävät kurssia: kullakin kierroksella on oma deadlinensa.

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, mikä voikin olla mainio ajatus.

Ensimmäinen luku 1.1 toimii johdantona kurssille.

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

Oppimateriaalin luvut eivät ole hakuteos, mutta Scalaa kootusti -sivu ja Sanasto voivat auttaa tiedon etsinnässä.

Teknisiä vaatimuksia

Tutustut kurssin ohjelmointiympäristöön tämän materiaalin luvussa 1.2. Lue materiaalia koneella, jolta pääset käsiksi tuohon ohjelmointiympäristöön.

Materiaalia ei ole suunniteltu luettavaksi mobiililaitteilla. Ei se kiellettyäkään ole, muttet pysty mobiililaitteella käyttämään tarvittavaa ohjelmointiympäristöä ainakaan kätevästi. Jotkin oppikirjan osat saattavat toimia näillä laitteilla vajavaisesti.

Kurssimateriaali toimii kunnolla vain, jos sinulla on ajanmukainen web-selain ja sen 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 näidenkin laatikoiden sisältöön, jos haluat ja ehdit, mutta jos jostain pitää karsia, niin karsi näistä.

Oppimateriaaliin on upotettu 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ä. :)

Alla olevassa laatikossa on ohjelmatekstiä eli ohjelmakoodia; vastaavia koodiesimerkkejä on materiaalissa paljon. Monissa niistä koodin erilaisia osia on korostettu värein kuten alla.

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

Luku 1.3 esittelee REPLiksi kutsutun ohjelmointiympäristön; seuraavanlaisissa laatikoissa esimerkkejä ohjeilmoinnista REPLissä. Tummemmalla pohjalla on käyttäjän antama syöte ja vaaleammalla tietokoneen antama vastaus.

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

Seuraavanlaiset vihertävät laatikot selittävät esimerkkejä. Siirrä hiiren kursori laatikon päälle, niin esimerkistä korostuvat 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.

Joissakin koodilaatikoissa on pseudokoodia eli ohjelmakoodia muistuttavaa mutta 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 voit 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!

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...