• Lukijalle
  • 1. Johdanto
    • 1.1 Ketterät menetelmät
    • 1.2 Extreme Programming
      • 1.2.1 Kurssilla sovellettavia XP:n käytäntöjä
    • 1.3 Ohjelman suunnittelu
    • 1.4 Työkalun valinta
    • 1.5 Koodaus
    • 1.6 Testaus
    • 1.7 Hyväksymistestaus ja palaute
    • 1.8 Käyttöönotto
    • 1.9 Ylläpito
    • 1.10 Yhteenveto
  • 2. Kerhon jäsenrekisteri
    • 2.1 Tehtävän tarkennus
    • 2.2 Työkalun valinta
    • 2.3 Tietorakenteet ja tiedostot
    • 2.4 Käyttöohje ja käyttöliittymä
      • 2.4.1 Ohjelman käynnistys
      • 2.4.2 Hakeminen
      • 2.4.3 Muokkaaminen
      • 2.4.4 Lisää uusi jäsen
      • 2.4.5 Poista jäsen
      • 2.4.6 Tulosta
      • 2.4.7 Lopeta
      • 2.4.8 Apua
      • 2.4.9 Tietoja
    • 2.5 Hyväksymistestaus
      • 2.5.1 Tyypillisiä vikoja
    • 2.6 Tarvittavien algoritmien hahmottaminen
      • 2.6.1 Aliohjelma
      • 2.6.2 Aliohjelma
    • 2.7 Koodaus ohjelmointikielelle
    • 2.8 Varautuminen tulevaan, eli relaatiotietomalli
      • 2.8.1 Kaikki samassa tietueessa
      • 2.8.2 Erimalliset tietueet
      • 2.8.3 Relaatiomalli
      • 2.8.4 XML-muotoinen tiedosto
    • 2.9 Graafiset käyttöliittymät
      • 2.9.1 Komponentit
      • 2.9.2 Omat komponentit
      • 2.9.3 Graafisten käyttöliittymien suunnittelutyökalut
      • 2.9.4 Tapahtumat
  • 3. Algoritmin suunnittelu
    • 3.1 Algoritmi
    • 3.2 Lajittelu
      • 3.2.1 Nimien ja numeroiden vertaus
      • 3.2.2 Algoritmin sanallinen versio on kuvaavampi!
      • 3.2.3 Numeroiden järjestäminen
      • 3.2.4 Kuplalajittelu
      • 3.2.5 Lajittelu avaimen mukaan
      • 3.2.6 Algoritmin parantaminen
    • 3.3 Algoritmin tarkentaminen
      • 3.3.1 Pienimmän etsiminen
      • 3.3.2 Paikalleen sijoittaminen
    • 3.4 Haku järjestetystä joukosta
      • 3.4.1 Suora haku
      • 3.4.2 Puolitushaku
    • 3.5 Yhteenveto
  • 4. Algoritmeissa tarvittavia rakenteita
    • 4.1 Ehtolauseet
    • 4.2 Valintalauseet
    • 4.3 Silmukat
    • 4.4 Muuttujat
      • 4.4.1 Yksinkertaiset muuttujat
      • 4.4.2 Pöytätesti
      • 4.4.3 Yksiulotteiset taulukot
      • 4.4.4 Osoittimet
      • 4.4.5 Moniulotteiset taulukot
      • 4.4.6 Sekarakenteet
    • 4.5 Osoittimista ja indekseistä
    • 4.6 Aliohjelma
    • 4.7 Vaihtoehtojen tutkiminen totuustaulun avulla
      • 4.7.1 Kaikkien vaihtoehtojen kirjaaminen
      • 4.7.2 Vaihtoehtojen lukumäärä
      • 4.7.3 Useita vaihtoehtoja samalla muuttujalla
      • 4.7.4 Loogiset operaatiot
    • 4.8 Muistele tätä
  • 5. Esimerkkejä eri kielistä
    • 5.1 Esimerkkiohjelmat
      • 5.1.1 C
      • 5.1.2 C++
      • 5.1.3 Java
      • 5.1.4 C#
      • 5.1.5 Pascal
      • 5.1.6 Fortran
      • 5.1.7 ADA
      • 5.1.8 BASIC
      • 5.1.9 APL
      • 5.1.10 Modula–2
      • 5.1.11 Lisp
      • 5.1.12 FORTH
      • 5.1.13 Assembler
    • 5.2 Käytettävän kielen valinta
  • 6. Java –kielen alkeita
    • 6.1 C#:sta Javaan
    • 6.2 Hello World! Java ja C#–kielillä
    • 6.3 Tekstitiedostosta toimivaksi konekieliseksi versioksi
      • 6.3.1 Kirjoittaminen
      • 6.3.2 Kääntäminen
      • 6.3.3 Linkittäminen
      • 6.3.4 Ohjelman ajaminen
      • 6.3.5 Varoitus
      • 6.3.6 Integroitu ympäristö
    • 6.4 Ohjelman yksityiskohtainen tarkastelu
      • 6.4.1 Kommentointi
      • 6.4.2 Miten kommentoida
      • 6.4.3 JavaDoc
      • 6.4.4 Valmiin kommenttilohkon lukeminen
      • 6.4.5 Tarvittavien luokkien esittely
      • 6.4.6 Luokan esittely
      • 6.4.7 Pääohjelman esittely
      • 6.4.8 Lausesulut
      • 6.4.9 Tulostuslause
      • 6.4.10 Lauseen loppumerkki ;
      • 6.4.11 Isot ja pienet kirjaimet
      • 6.4.12 White spaces, tyhjä
      • 6.4.13 Vakiomerkkijonot
      • 6.4.14 Vakiolukuarvot
  • 7. Java–kielen muuttujista ja aliohjelmista
    • 7.1 Mittakaavaohjelman suunnittelu
    • 7.2 Muuttujat
      • 7.2.1 Matkan laskeminen
      • 7.2.2 Muuttujan nimeäminen
      • 7.2.3 Muuttujalle sijoittaminen =
      • 7.2.4 Muuttujan esittely ja alkuarvon sijoittaminen
    • 7.3 Muuttujan arvon lukeminen päätteeltä
      • 7.3.1 Lukeminen merkkijonoon
      • 7.3.2 Lukuarvon selvittäminen merkkijonosta
      • 7.3.3 Apumetodit
      • 7.3.4 Apuluokat
      • 7.3.5 Luokan testaaminen
      • 7.3.6 Luokan käyttäminen
    • 7.4 Viitteet
      • 7.4.1 Miksi viitteet?
      • 7.4.2 Lokaalit muuttujat
      • 7.4.3 Dynaaminen muisti
      • 7.4.4 Viitteiden vertaaminen
      • 7.4.5 Viitteeseen sijoittaminen
      • 7.4.6 null-viite
    • 7.5 Aliohjelma
      • 7.5.1 Parametriton aliohjelma
      • 7.5.2 Funktiot ja parametrit
      • 7.5.3 Parametrin nimi kutsussa ja esittelyssä
      • 7.5.4 Nimessään arvon palauttavat funktiot
      • 7.5.5 Ketjutettu kutsu
      • 7.5.6 Yksinkertaisen aliohjelman kutsuminen
      • 7.5.7 Aliohjelmat tulostavat harvoin
      • 7.5.8 Jäsenten tulostaminen
    • 7.6 Parametrinvälitys
      • 7.6.1 Useita parametreja
      • 7.6.2 Parametrin paikka ratkaisee, ei nimi
      • 7.6.3 Metodin nimen kuormittaminen
      • 7.6.4 Muuttujien lokaalisuus
      • 7.6.5 Parametrinvälitysmekanismi
      • 7.6.6 Aliohjelmien kirjoittaminen
      • 7.6.7 Luokkamuuttujat ja suhde lokaaleihin muuttujiin
    • 7.7 Testipääohjelmat
    • 7.8 Yksikkötestaus
    • 7.9 JUnit
    • 7.10 ComTest
      • 7.10.1 ComTestin makrokieli
      • 7.10.2 ComTestin edistyneemmät ominaisuudet
    • 7.11 Mittakaavaohjelma graafisena
  • 8. Kohti olio-ohjelmointia
    • 8.1 Miksi olioita tarvitaan
    • 8.2 Hynttyyt yhteen, eli muututaan olioksi
      • 8.2.1 Terminologiaa
      • 8.2.2 Ensimmäinen olio-esimerkki
      • 8.2.3 toString()
      • 8.2.4 Luokka (class)  ja olio (object)
      • 8.2.5 Suojaustasot ja kapselointi
      • 8.2.6 Muodostajat (constructor)
      • 8.2.7 Oletusmuodostaja (default constructor)
      • 8.2.8 Sisäinen tilan valvonta
      • 8.2.9 Metodien kuormittaminen (lisämäärittely, overloading)
      • 8.2.10 this-osoitin
    • 8.3 Perintä
      • 8.3.1 Luokan ominaisuuksien laajentaminen
      • 8.3.2 Alkuperäisen luokan muuttaminen
      • 8.3.3 Saantimetodit
      • 8.3.4 Koostaminen
      • 8.3.5 Perintä
      • 8.3.6 Polymorfismi, eli monimuotoisuus
      • 8.3.7 Myöhäinen sidonta
    • 8.4 Kapselointi
      • 8.4.1 Rajapinta ja sisäinen esitys
    • 8.5 Rajapinta ja monimuotoisuus
    • 8.6 Object-luokan metodien korvaaminen
    • 8.7 Mistä hyviä luokkia
    • 8.8 Valmiita luokkia
      • 8.8.1 Merkkijonot
  • 9. Java–kielen ohjausrakenteista ja operaattoreista
    • 9.1 if–lause
      • 9.1.1 Ehdolla suoritettava yksi lause
      • 9.1.2 Ehdolla suoritettava useita lauseita
    • 9.2 Loogiset lausekkeet
      • 9.2.1 Vertailuoperaattorit
      • 9.2.2 Sijoitus palauttaa arvon!
    • 9.3 Loogisten lausekkeiden yhdistäminen
      • 9.3.1 Loogiset operaattorit &&, || ja !
      • 9.3.2 Loogisen lausekkeen suoritusjärjestys
      • 9.3.3 Loogiset operaattorit & ja |
    • 9.4 Bittitason operaattorit
    • 9.5 if – else –rakenne
      • 9.5.1 Sisäkkäiset if–lauseet
      • 9.5.2 Useat peräkkäiset ehdot
    • 9.6 do–while –silmukka
    • 9.7 while –silmukka
    • 9.8 for –silmukka, tavallisin muoto
    • 9.9 for-each silmukka
    • 9.10 Java–kielen lauseista
      • 9.10.1 Sijoitusoperaattori =
      • 9.10.2 Sijoitusoperaattori +=
      • 9.10.3 Lisäysoperaattori ++
    • 9.11 for –silmukka, yleinen muoto
    • 9.12 break ja continue
      • 9.12.1 break
      • 9.12.2 continue
    • 9.13 switch –valintalause
      • 9.13.1 | ei toimi switch –lauseessa!
    • 9.14 Ikuinen silmukka
      • 9.14.1 Yhteenveto silmukoista
  • 10. Oliosuunnittelu
    • 10.1 Olio on luokan esiintymä
    • 10.2 Tavoitteet
    • 10.3 Luokat
    • 10.4 CRC–kortit
      • 10.4.1 Jäsen-luokka (Jasen)
      • 10.4.2 Kerho-luokka (Kerho)
      • 10.4.3 Käyttöliittymä-luokka (Naytto)
      • 10.4.4 Luokkajaon tarkastelua
    • 10.5 Harrastukset mukaan
      • 10.5.1 "Oliomalli"
      • 10.5.2 Relaatiomalli
      • 10.5.3 Harrastus-luokka (Harrastus)
      • 10.5.4 Kerho-luokka (Kerho)
      • 10.5.5 Jäsenet-luokka (Jasenet)
      • 10.5.6 Harrastukset-luokka (Harrastukset)
  • 11. Jäsenrekisterin runko
    • 11.1 Runko ilman kommentteja
    • 11.2 Tietorakenne
      • 11.2.1 Taulukko
      • 11.2.2 Linkitetty lista
      • 11.2.3 Sekarakenne
    • 11.3 Harrastukset mukaan
      • 11.3.1 Tiedot jäsenen yhteyteen
      • 11.3.2 Relaatiomalli
  • 12. Java–kielen taulukoista
    • 12.1 Yksiulotteiset taulukot
      • 12.1.1 Taulukon määrittely
      • 12.1.2 Taulukon alkioihin viittaaminen indeksillä
      • 12.1.3 Taulukon läpikäyminen for ja for-each–silmukoilla
      • 12.1.4 Taulukon alustaminen
    • 12.2 Merkkijonot
      • 12.2.1 Merkkityyppi
      • 12.2.2 String
      • 12.2.3 StringBuilder ja StringBuffrer
    • 12.3 Moniulotteiset taulukot
      • 12.3.1 Kiinteä esittely
      • 12.3.2 Yksiulotteisen taulukon käyttäminen moniulotteisena
      • 12.3.3 Taulukko taulukoista
      • 12.3.4 Taulukko viitteistä
    • 12.4 Komentorivin parametrit (argv)
  • 13. Dynaaminen muistinkäyttö
    • 13.1 Muistin käyttö
    • 13.2 Dynaamisen muistin käyttö Javassa
      • 13.2.1 new
      • 13.2.2 Olion tuhoaminen
      • 13.2.3 Taulukon luominen new []
    • 13.3 Dynaamiset taulukot
      • 13.3.1 Poikkeukset
      • 13.3.2 Poikkeukset ja ComTest
    • 13.4 Geneerisyys
    • 13.5 Javan Collections Framework
      • 13.5.1 ArrayList ja geneerisyys
      • 13.5.2 Iteraattori
      • 13.5.3 Geneerisyys
      • 13.5.4 Algoritmit
    • 13.6 Tietovirta parametrina
  • 14. Funktio-olio
    • 14.1 Numeerinen integrointi
      • 14.1.1 Sinifunktio integrointi
    • 14.2 Numeerinen integrointi ja rajapinta
    • 14.3 Rajapinnan käyttäminen
  • 15. Tiedostot
    • 15.1 Tiedostojen käsittely
      • 15.1.1 Lukeminen
    • 15.2 Tiedostojen käsittely Javan tietovirroilla
      • 15.2.1 Tiedoston avaaminen muodostajassa
      • 15.2.2 Tiedostosta lukeminen
      • 15.2.3 Tiedoston lopun testaaminen
      • 15.2.4 Tiedostoon kirjoittaminen
      • 15.2.5 Tiedoston sulkeminen close
    • 15.3 Tiedoston yhdellä rivillä monta kenttää
      • 15.3.1 Ongelma
    • 15.4 Merkkijonon paloittelu
      • 15.4.1 parse
      • 15.4.2 erota
      • 15.4.3 Esimerkki erota-funktion käytöstä
      • 15.4.4 Erota funktion toiminta vaihe vaiheelta
      • 15.4.5 Luvun erottaminen
    • 15.5 Lukeminen ja paloittelu
      • 15.5.1 Olio joka lukee itsensä
    • 15.6 Esimerkki tiedoston lukemisesta
    • 15.7 Kerhon talletukset
  • 16. Kerho-ohjelman rakenne
    • 16.1 Jäsen ja kentät
      • 16.1.1 Algoritmi näytön ja jäsenen keskustelulle
    • 16.2 Näytön ja jäsenen välinen rajapinta
    • 16.3 Kerhon rakenne
      • 16.3.1 KerhoSwingin ja käyttöliittymän yhteistoiminta
    • 16.4 Jäsenien selaaminen
    • 16.5 Jäsenkenttien lisääminen
    • 16.6 Oikeellisuustarkistukset
      • 16.6.1 Säännölliset lausekkeet
      • 16.6.2 Säännöllisten lausekkeiden käyttäminen
    • 16.7 Kentät graafiseen käyttöliittymään
    • 16.8 Etsiminen
    • 16.9 Lajittelu
    • 16.10 Tulostaminen
  • Hakemisto
  • Tehtävät:
    • Tehtävä 3.1              Kävelyohjeet
    • Tehtävä 3.2              Muita lajittelualgoritmeja
    • Tehtävä 3.3              Algoritmin kompleksisuus
    • Tehtävä 3.4              Lajittelujärjestys
    • Tehtävä 3.5              Kuplalajittelu
    • Tehtävä 3.6              Loppuminen erikoistapauksessa
    • Tehtävä 3.7              QuickSortin kompleksisuus
    • Tehtävä 3.8              Lisäys oikealle paikalleen vaiko lisäys loppuun ja lajittelu?
    • Tehtävä 3.9              Puolitushaku
    • Tehtävä 3.10           Puolitushaun kompleksisuus
    • Tehtävä 3.11           Kumin paikkaus
    • Tehtävä 3.12           Sunnuntai–ilta
    • Tehtävä 3.13           Onkiminen
    • Tehtävä 3.14           Järjestyksen kääntäminen päinvastaiseksi
    • Tehtävä 4.1              Ajanlisäys
    • Tehtävä 4.2              Postimaksu
    • Tehtävä 4.3              Korvaaminen ehtolauseilla
    • Tehtävä 4.4              Uiminen
    • Tehtävä 4.5              Ynnää luvut 1–100
    • Tehtävä 4.6              Vuokaavio
    • Tehtävä 4.7              Algoritmin parantaminen
    • Tehtävä 4.8              Pöytätesti
    • Tehtävä 4.9              Lajittelun testaus
    • Tehtävä 4.10           Korttien poisto
    • Tehtävä 4.11           Korttien poisto osoittimia käyttäen
    • Tehtävä 4.12           Kaksiulotteisen taulukon indeksit
    • Tehtävä 4.13           Sijoitus 3–ulotteiseen taulukkoon
    • Tehtävä 4.14           3–ulotteinen taulukko 1–ulotteiseksi
    • Tehtävä 4.15           3–ulotteinen taulukko
    • Tehtävä 4.16           4–ulotteinen taulukko
    • Tehtävä 4.17           Sanojen muuttaminen
    • Tehtävä 4.18           Lihapullan paistaminen
    • Tehtävä 4.19           Kombinaatioiden lukumäärä
    • Tehtävä 4.20           BAL=kyllä?
    • Tehtävä 4.21           Kuka valehtelee?
    • Tehtävä 4.22           de Morganin kaava
    • Tehtävä 4.23           Osittelulaki
    • Tehtävä 4.24           Ehtojen sieventäminen
    • Tehtävä 4.25           Merkkijonot
    • Tehtävä 4.26           Päivämäärät
    • Tehtävä 6.1              Nimi ja osoite
    • Tehtävä 6.2              Terve maailma!
    • Tehtävä 6.3              Nimi ja osoite vakioksi
    • Tehtävä 6.4              Tetraedri
    • Tehtävä 7.1              Vakion korvaaminen
    • Tehtävä 7.2              Avainsanat
    • Tehtävä 7.3              Muuttujan nimeäminen
    • Tehtävä 7.4              Muuttujien esittely
    • Tehtävä 7.5              Oletuksen tulostaminen
    • Tehtävä 7.6              Muiden tyyppien lukeminen
    • Tehtävä 7.7              Mittakaavan kysyminen
    • Tehtävä 7.8              Funktio ja osoitin
    • Tehtävä 7.9              String vs. StringBuffer
    • Tehtävä 7.10           Math-luokka
    • Tehtävä 7.11           Funktiot
    • Tehtävä 7.12           Ympyrän ala ja pallon tilavuus
    • Tehtävä 7.13           Pääohjelma yhtenä funktiokutsuna
    • Tehtävä 7.14           Päämenuun kerhon nimi
    • Tehtävä 7.15           Toisen asteen yhtälön juuri
    • Tehtävä 7.16           Toisen asteen polynomi, root_1
    • Tehtävä 7.17           root_1 testaus
    • Tehtävä 7.18           Toisiaan kutsuvat aliohjelmat
    • Tehtävä 7.19           Eri nimet
    • Tehtävä 7.20           Muotoilu?
    • Tehtävä 7.21           Tiedon lukeminen
    • Tehtävä 7.22           Muuttujien näkyvyys
    • Tehtävä 8.1              Tulostus
    • Tehtävä 8.2              Negatiivinen minuuttiasetus
    • Tehtävä 8.3              Päivämääräluokka
    • Tehtävä 8.4              Päivämääräluokan toteutus
    • Tehtävä 8.5              Mitäs me tehtiin kun ei ollut kuormitusta?
    • Tehtävä 8.6              Lisäys yhdellä
    • Tehtävä 8.7              Vain tuntien asettaminen
    • Tehtävä 8.8              Luokan muuttaminen
    • Tehtävä 8.9              Sekuntien tulostus aina tai oletuksena
    • Tehtävä 8.10           Miksi vielä yksi lisaa-kutsu?
    • Tehtävä 8.11           Ei turhaa lisaa-kutsua
    • Tehtävä 8.12           Saantimetodi sekunneille
    • Tehtävä 8.13           Saantimetodien käyttäminen
    • Tehtävä 8.14           minuutteina()
    • Tehtävä 8.15           equals toString avulla
    • Tehtävä 8.16           equals AikaSek-luokkaan
    • Tehtävä 8.17           AikaSek perimällä
    • Tehtävä 8.18           Vertailu
    • Tehtävä 8.19           Ensimmäinen melkein järkevä olio
    • Tehtävä 9.1              vaihda
    • Tehtävä 9.2              abs
    • Tehtävä 9.3              jarjesta2
    • Tehtävä 9.4              maksimi ja minimi
    • Tehtävä 9.5              Loogiset/bittitason operaattorit
    • Tehtävä 9.6              Luku parilliseksi
    • Tehtävä 9.7              +=
    • Tehtävä 9.8              1+2++i
    • Tehtävä 9.9              Tarvitaanko sisäkkäisiä silmukoita?
    • Tehtävä 9.10           continuen korvaaminen
    • Tehtävä 9.11           Eri silmukoiden vertailu
    • Tehtävä 9.12           switch –> if
    • Tehtävä 9.13           Päävalinta
    • Tehtävä 9.14           lääni, versio 2
    • Tehtävä 11.1           Lisäys
    • Tehtävä 11.2           Etsiminen
    • Tehtävä 11.3           Poisto
    • Tehtävä 11.4           Lajittelu
    • Tehtävä 11.5           Lisää harrastus
    • Tehtävä 11.6           Mitä harrastaa
    • Tehtävä 11.7           Kuka harrastaa
    • Tehtävä 11.8           Poista harrastus
    • Tehtävä 11.9           Jäsenen poistaminen
    • Tehtävä 11.10        "Roskaharrastukset"
    • Tehtävä 11.11        Monta saman lajin harrastajaa
    • Tehtävä 12.1           Taulukon alkioiden nollaus
    • Tehtävä 12.2           Matriisit
    • Tehtävä 12.3           Matriisi 1–ulotteisena
    • Tehtävä 12.4           Transpoosi
    • Tehtävä 12.5           Palindromi
    • Tehtävä 15.1           Tiedoston lukujen summa
    • Tehtävä 15.2           Kommentit näytölle
    • Tehtävä 15.3           Ohjelman "sekoaminen"
    • Tehtävä 15.4           Tietorakenne
    • Tehtävä 15.5           Perintä
    • Tehtävä 15.6           Tunnistenumero
    • Tehtävä 15.7           Graafinen mittakaava
  • Kuvat:
    • Kuva 4.1 Ehtolauseet
    • Kuva 4.2 switch–valintalause
    • Kuva 4.3 do–silmukka ja do-while–silmukka
    • Kuva 6.1  Ohjelman kääntäminen ja linkittäminen
    • Kuva 6.2  Ohjelman kääntäminen ja linkittäminen
    • Kuva 7.1  Olioviitteet
    • Kuva 7.2  Kaksi viitettä samaan olioon
    • Kuva 8.1  Suojaustasot
    • Kuva 8.2  Aika perinnällä
    • Kuva 8.3  Musta laatikko
    • Kuva 11.1  Taulukko C++ -kielessä
    • Kuva 11.2  Javan taulukko
    • Kuva 11.3  Linkitetty lista
    • Kuva 11.4  Tietorakenne kun kerho tallettaa jäsenet
    • Kuva 11.5  Harrastukset linkitettynä listana
    • Kuva 11.6  Harrastukset relaation avulla
    • Kuva 13.1 Javan tärkeimmät tietorakennerajapinnat
  • Malliohjelmat:
    • kelmit.dat - ensimmäinen ehdotus tiedostoksi
    • kelmit.dat - sarakkeet linjaan
    • kelmit.dat – ei näin
    • kelmit.dat - harrasteet samalle riville
    • kelmit.dat - harrasteet omalle riville
    • kelmit.dat - relaatiokannan päätaulu
    • kelmit.har - harrasteet relaation avulla
    • kelmit.xml – kerho XML-muodossa
    • alkeet.hello.Hello.java - ensimmäinen Java ohjelma
    • C#-versio
    • alkeet.hello.Hello2.java - malliohjelma
    • alkeet.hello.Hello3.java - tervehdys parametrina
    • C#-versio tervehdyksestä parametrina
    • alkeet.hello.Hello7.java - tervehdys vakioksi
    • alkeet.kuutio.Kuutio.java - monikulmion tiedot vakioksi
    • C#-versio Kuutio-ohjelmasta
    • muuttujat.matka.MatkaScan.java - mittakaavamuunnos 1:200000 kartalta
    • muuttujat.matka.Matka.java - mittakaavamuunnos 1:200000 kartalta
    • muuttujat.syotto.Syotto.java – kokonaisluvun lukeminen päätteeltä
    • muuttujat.jono.Jonotesti.java - merkkijonoviitteet
    • muuttujat.matka.Matka_a1.java - ohjeet aliohjelmaksi
    • muuttujat.matka.Matka_a3.java - erilaisia funktioita /**
    • muuttujat.matka.Matka_a4.java - erilaisia tapoja kutsua funktiota
    • muuttujat.funktio.FunJaOlio.java - sivuvaikutuksellinen funktio
    • muuttujat.tulostus.Tulostustesti.java - tulostus näytölle ja tiedostoon
    • HT3 KerhoGUI.java – tulostamisikkunan avaaminen
    • HT3 KerhoSwing.java – viedään tulostusikkunalle
    • muuttujat.funktio.Parampaikka.java - parametrin paikka kutsussa ratkaisee
    • muuttujat.nakyvyys.Lokaali.java - lokaalien muuttujien näkyvyys
    • muuttujat.funktio.Aikalisa.java - yritys lisätä arvoja
    • muuttujat.funktio.Alisotku.java - parametrin välitystä
    • muuttujat.funktio.Alisotk2.java - parametrin välitystä
    • muuttujat.testaus.Alkuluku.java
    • muuttujat.testaus.Esiintymat.java
    • muuttujat.graafinen.Mittakaava.java
    • oliot.muut.Aikalis4.java - useita aika "muuttujia"
    • oliot.aika.olio.Aika.java - kunnon olioksi
    • oliot.aika.olio.Aikatesti.java - testiluokka Aika-luokalle
    • oliot.aika.olio.Aika.java - muodostaja alustamaan tiedot
    • oliot.aika.muodostaja.Aika.java - lisätään oletusmuodostaja
    • oliot.aika.valvonta.Aika.java - sisäinen tilan valvonta asetuksessa
    • oliot.aika.metodi.Aika.java - aliohjelma vastaan metodi
    • oliot.aika.koostaminen.AikaSek.java - laajentaminen koostamalla
    • oliot.aika.perinta.AikaSek.java - laajentaminen perimällä
    • oliot.aika.sisesitys.Aika.java - sisäinen toteutus minuutteina
    • oliot.aika.perinta.AikaSek.java - esimerkki polymorfisesta taulukosta
    • oliot.aika.koostaminen.AikaSek.java - kömpelö esimerkki polymorfisesta taulukosta
    • oliot.aika.rajapinta.AikaRajapinta.java - malli kaikkien Aika-luokkien rajapinnasta
    • oliot.aika.rajapinta.Aika.java - luokka joka toteuttaa rajapinnan
    • oliot.aika.rajapinta.AikaSek.java - luokka joka toteuttaa rajapinnan => polymorfismi
    • oliot.aika.object.Aika.java - luokka joka toteuttaa Object
    • oliot.henkilo.Henkilo.java - 1. järkevä olio
    • oliot.henkilo.Opiskelija.java - 1. järkevä olio
    • ohjausrak.Ifsij2.java - esimerkki tahallisesta sijoituksesta ehdossa
    • ohjausrak.polynomi.v1.Polynomi2.java - esimerkki 2. asteen yhtälön ratkaisemiseta
    • ohjausrak.polynomi.v2.Polynomi2.java - karsittu versio 2. asteen yhtälöstä
    • ohjausrak.polynomi.v3.Polynomi2.java - normaalit tapaukset ensin ratkaisussa
    • ohjausrak.polynomi.v4.Polynomi2.java - else -osat pois
    • ohjausrak.Postimaksu.java - esimerkki samanarvoisista ehtolauseista
    • alkeet.alkuluku.Alkuluku.java - testataan onko luku alkuluku
    • ohjausrak.Dowhile.java - lukujen lukeminen kunnes halutulla välillä
    • ohjausrak.alkuluku2.Alkuluku2.java - alkulukutesti while-silmukalla
    • ohjausrak.vali.Valinsum.java - esimerkki for-silmukasta
    • ohjausrak.Plusplus.java - esimerkki ei-yksikäsitteisestä ++ operaattorin käytöstä
    • ohjausrak.Valinsum.java - useita alustuslauseita for-silmukassa
    • ohjausrak.Valinsum.java - C:mäinen silmukka
    • ohjausrak.Break.java - silmukan katkaisu keskeltä
    • ohjausrak.Break.java - ulomman silmukan katkaisu keskeltä
    • ohjausrak.Continue.java - silmukan lopun ohittaminen
    • ohjausrak.SwingAanestys.java – esimerkki switch-lauseesta
    • ohjausrak.Switch.java - switch, jossa break tahallaan jätetty pois
    • taulukot.Mat2.c - matriisi parametrina riviosoittimen avulla
    • taulukot.Mat3.java - matriisi osoitintaulukon avulla
    • taulukot.Argv.java - komentorivin parametrit
    • dynaaminen.Taulukko.java -esimerkki dynaamisesta taulukosta
    • dynaaminen.TaulukkoGen.java -esimerkki dynaamisesta taulukosta
    • dynaaminen.ArrayListMalliGen.java –ArrayList-luokka
    • dynaaminen. AlgoritmiMalliGen.java – Collections-luokka
    • funktio.integroi.Integroi.java – Sinifunktion numeerinen integrointi
    • funktio.integroi.Integroi2.java – funktio-oliot
    • funktio.integroi.Integroi2.java – funktio-oliot
    • funktio.integroi.Integroi2.java – funktio-oliot
    • funktio.integroi.Integroi2.java – Toisen asteen polynomi
    • tiedosto.TiedKaScanner.java - Lukujen lukeminen tiedostosta
    • tiedosto.Kertotaulu.java - Tiedostoon tulostaminen
    • tuotteet.dat - esimerkkitiedosto
    • tiedosto.ErotaEsim.java - esimerkki erota-funktion käytöstä
    • tiedosto.LueTuote.java - esimerkki tiedoston lukemisesta
    • tiedosto.LueRek.java  - esimerkki oliosta joka käsittelee tiedostoa
    • tiedosto.LueTRek.java - esimerkki tiedoston lukemisesta
    • KerhoSwing.java – Harjoitustyö vaihe 7 – get ja set-metodit
    • Jasen.java – Harjoitustyö vaihe 7
    • Kentta.java – Harjoitustyö vaihe 7
    • PerusKentta.java – Harjoitustyö vaihe 7
    • JonoKentta.java – Harjoitustyö vaihe 7
    • Tarkistaja.java – Harjoitustyö vaihe 7
    • PuhelinKentta.java – Harjoitustyö vaihe 7
    • KerhoSwing.java – Harjoitustyö vaihe 7 – luoNaytto()-metodi
    • KerhoSwing.java – Harjoitustyö vaihe 7 – Jäsenen muuttaminen