JavaCC on "parserigeneraattori". Java Practices -- Joitain Java-kikkoja selkeähkösti jäsenneltynä; ei parane purra nielemättä, mutta on noissa paljon asiaakin. */ ?> TIEP111 - Ohjelmointi 2 --- Kesä 2006, Jyväskylän yliopisto

TIEP111 - Ohjelmointi 2 --- Kesä 2006

Kurssin TIEP111 kesän 2006 ilmentymän tiedonantoja: linkit luentoaiheisiin ja lisämateriaaliin, demo, mallivastaukset, jne... Aikataulut, luentosalit, tulokset ja lomakkeet Korpissa: Tästä linkistä....

Tarkista, että olet saanut minulta postia välikokeeseen liittyen. Vaihtoehtoja on:

Jos en ole lähettänyt mitään postia, olen tulkinnut, että olet jättänyt kurssin kesken. Jos tämä ei mielestäsi ole tilanne, ota yhteyttä välittömästi.

Sivu elää kurssin ajan. "); ?> MUUTOKSIA TULEE! (Nyt on hyvä aika klikata selaimen Reload-nappia, ettet lue välimuistista vanhentunutta tietoa...)

Sisältö

Tervetuloa kurssille 12.5.2006 asti

"Kioski on auki" 12.5.2006 asti. (Sen verran joustan Matti Myöhäsille, jollainen itsekin aika usein olen...) Sen jälkeen kurssia ei voi enää aloittaa, koska mm. meillä on pakolliset demot ja harjoitustyö jo hyvää vauhtia menossa. Myöhäilmoittautujien tulee tehdä 100 % demon 2 tehtävistä (jos ei ehdi palauttaa demoa 1 normaaliin tapaan).

Jos päätät osallistua, on kesäohjelmasi saman tien lyöty lukkoon heinäkuun loppupuolelle saakka: Tulet ohjelmoimaan. Paljon. Kurssi on työläs, eli se vaatii aikaa ja istumista näppäimistön ääressä. Toisaalta elämä on valintoja: rötväätkö kesän rannalla velaksi vai opiskeletko siten, että yhteiskunta maksaa sinulle siitä. Tämä valinta on sinun. Toivottavasti kurssista tulee myös palkitseva: Tavoitteena on saada osallistujille todella lyhyessä kalenteriajassa syntymään alustava ohjelmoinnin taito. Guruja ei vielä Ohjelmointi kakkosella tehdä, mutta yritetään saada jokainen oikealle tielle (ja pois vääriltä raiteilta) ohjelmoinnin suhteen.

Helppoa se on (ja mukavaa) vaikkakin työlästä. Tervetuloa.

Tämän tervehdyksen, nettisivun ja kesäkurssin opetuksen allekirjoittaa Paavo Nieminen. Suurin osa materiaalista periytyy aiemmilta kurssikerroilta, joista melkein kaikki on pitänyt Vesa Lappalainen.

Luennot

Tämä on luentosuunnitelma, jonka mukaan pyrin etenemään. Merkitsen toteutuneet aiheet ja lisämateriaaliviitteet kunkin luennon jälkeen. Saatan venkslata myös tulevia aiheita paikasta toiseen, joten pitäkää varanne ja tarkkailkaa ohjelmaa pari päivää etukäteen. Päivämäärät ovat nyt lopullisia: Jos (puuta koputtaen) en tule kipiäksi tai hulluksi, niin näillä ajankohdilla mennään kurssin 52 luentotuntia:

nro viikko Ajankohta Aiheet, monisteviitteet Lisämateriaalia
1 18 ti 2.5. Kurssin aloitus:
  • Aikataulu, vaatimukset
  • johdattelua, motivointia
  • "mitä kaikkea, ja miksi, on ohjelmointi"
2 ke 3.5. Ohjelman elinkaari, suunnitteluvaihe esimerkkiohjelman kautta:
3 to 4.5. Vielä ohjelman suunnittelua esimerkkien kautta:
4 19 ti 9.5. Algoritmien suunnittelusta, toteuttamisesta ja testauksesta. Pöytätesti, totuustaulu.
5 ke 10.5. Ohjelmointikielten historia ja periaatteet; Java-kieli muiden joukossa.
6 to 11.5. Sisälle Javan rakenteisiin. (Muista luento 4, monisteen luvut 4 ja 5)!
  • Javan kääntäminen ja ajaminen komentokehotteessa: Windows/Unix
  • Lyhyt "kertaus" komentokehotteesta ja tehokkaasta tekstieditoinnista: miten ATK:sta tulee ATK:ta (Armottoman Tehottomasta Klikkailusta tulee Automaattista/Avustettua Tekstin Kirjoittamista)
  • 8. Java-kielen muuttujista ja aliohjelmista
7 20 ke 17.5.
8 to 18.5. Olioiden käsittely alkaa, "paradigmahyppy"...
9 21 ti 23.5. Jatketaan luokista ja olioista
10 ke 24.5. Jatketaan luokista ja olioista. Polymorfismi, rajapinnat.
11 22 ti 30.5. Kertaus olioiden perusteista. Javan kielioppi: lauseet, lohkot, operaattorit, peruskontrollirakenteet.
12 ke 31.5. Luokkien suunnittelu, tietorakenteet, UML, CRC-kortit
13 to 1.6. Oliosuunnitelma ja sen toteutus olio-ohjelmointikielellä
14 23 ke 7.6. Poikkeukset (exceptions), Paketit (packages), Moduulijako ja yksikkötestaus, "Ohjelman synty"
15 to 8.6. Javan taulukot, merkkijonot, dynaaminen muisti, dynaaminen taulukko
16 24 ti 13.6. Dynaamiset taulukot ja Javan valmiit tietorakenteet. "autoboxing"
17 ke 14.6. Täydennystä Javaan ja olio-ohjelmointiin: abstract, final, implements, instanceof; abstraktit ja konkreettiset luokat. + Tiedostojen käsittelyä.
18 25 ti 20.6. Tiedostojen käsittely [Java-moniste loppuu; edetään loppukurssi esimerkkilistausten varassa.]
19 ke 21.6. Lisää olioista ja dynaamisuudesta, linkitetty lista, Map.
20 to 22.6. Malliohjelman talletukset, Harrastukset. Iteraattorit.
21 26 ti 27.6. Olioiden välinen kommunikointi. Lisäksi: Versionhallinta. Refaktorointi. Suunnittelumallit.
22 ke 28.6. Funktio-oliot. Lisäksi ehkä vielä jotain liukuluvuista (+avainsanasta strictfp). Lisäksi ehkä jotain säikeistä (+avainsanoista synchronized, volatile). Lisäksi ehkä jotain Javan alustariippumattomuudesta (+avainsanasta native sekä siitä miten Java-ohjelmaan saa aikaan alustariippuvuuden).
23 to 29.6. Päätesyöttö
24 27 ti 4.7. Oikeellisuustarkistukset, ohjelman testausvaihe. Ehkä jotakin avainsanasta assert. JUnit.
25 ke 5.7. Etsiminen ja lajittelu Jos aikaa jää, avainsana enum sekä "serialization" ja transient. ClassLoader, Java virtuaalikoneen sielunelämää.
26 to 6.7. Ohjelmointi on nyt opittu (?). Mihin suuntaan eteenpäin?
  • Tekstipohjainen käyttöliittymä graafiseksi.
  • Isommat ohjelmat, miksi ja mistä
  • "Public domain" -ratkaisut; milloin on OK copy-pastettaa koodia netistä.
  • Ohjelmoija, tiimi, kommunikointi
  • Yhteenveto: Mitä on käsitelty luennoilla ja miksi.

------- Tässä kohtaa mennään: -------

Luennot on nyt pidetty, ja jäljellä on kolme viikkoa heinäkuuta. Demot, pääteohjaukset ja varattavat harkkaohjausajat jatkuvat. Harjoitustyöstä pitäisi saada aikaan järkevä ohjelma ja legendaarinen "Vaihe 7" siten hyväksytyksi. Lisäksi ajalle sijoittuu välikoe sekä uusinta niille, jotka tupeksivat ensimmäisen yrityksen liian pahasti. Kun uusien eteen tulevien asioiden virta lopulta päättyy, yritetään ne saada vieläpä jollain tavoin jäsentymään kokonaisuudeksi. Eli senpä takia viimeinen kolme viikkoa ovat kurssin tärkeimmät! Yritän tsempata opettajana, ja toivottavasti porukka tsemppaa oppijoina. Lopussa toivottavasti on tapahtunut oppimista enemmän oikeaan kuin väärään suuntaan. Näyttöjen perusteella joudun miettimään arvosanat niille, jotka pyristelevät loppuun saakka.

Demot 1-6

Demokerta Linkki vastauksiin aiheet + Harjoitustyövaihe
demo1 (poistettu) johdanto, algoritmien ideaa HT vaihe 1: Esisuunnitelma
demo2 (poistettu) algoritmeja, taulukoita, aliohjelmiin perustuvaa ohjelmointia
demo3 (poistettu) Java-aliohjelmia (=staattisia luokkametodeja) HT vaihe 2: Käyttöliittymä ja -ohje, tallennusformaatti, ei Java-koodia
demo4 (poistettu) Syntaksi, lähdekoodi, Java-oliot HT vaihe 3: Käyttöliittymäluokka: Päämenu ja alamenut Javalla
demo5 (poistettu) oliot, perintä, kapselointi HT vaihe 4: Tietorakennesuunnitelma, oliokaaviot
demo6 (poistettu) oliot, rajapinta HT vaihe 5: Tietorakenteet toteutettu Javalla, moduulijako

Demot 7-11

Demokerta Linkki vastauksiin aiheet + Harjoitustyövaihe
demo7 (poistettu) merkkijonoja, matriiseja HT vaihe 6: Tiedostonkäsittely, luokkien välinen yhteistyö
demo8 (poistettu) kertausta, tietorakenteita (dynaamisuus, geneerisyys, valmiit algoritmit) (toteutetaan ja testataan uusia toimintoja, ohjausta annetaan tarvittaessa jatkuvasti)
demo9 (poistettu) välikoetehtävän tyyppisiä tehtäviä (sama jatkuu)
demo10 (poistettu) funktio-olioita, oikeellisuustarkistuksia, kokonaisuuden hahmottamista HT vaihe 7: Toimiva sovellus, kaunis koodi
demo11 (poistettu) kokonaisuuden hahmottamista, suorituskyvyn huomioimista, rekursion hyödyntäminen algoritmeissa HT viimeistely ja (toivottavasti) hyväksyntä.

Pääteohjaukset

nro Ajankohta Aiheet/tehtävät
1 pe 5.5. Ohjaus1
2 pe 12.5. Ohjaus2
3 pe 19.5. Ohjaus3
4 pe 2.6. (Demoja, harkkatyötä)
5 pe 9.6. (Demoja, harkkatyötä)
6 pe 16.6. (Demoja, harkkatyötä)
7 pe 30.6. (Demoja, harkkatyötä)
8 pe 7.7. (Demoja, harkkatyötä)
9 pe 14.7. Delphi-työkalu, ikkunaliittymät, tapahtumapohjaisuus (+ Demoja, harkkatyötä)
11 pe 21.7. Yleisesti väärin/heikosti ymmärrettyjen pointtien paikkailua/varmistelua (+harkkatyötä, jos kellä vielä on)

Käytäntöjä, ohjeita

Tarkista, että olet saanut minulta postia välikokeeseen liittyen. Vaihtoehtoja on:

Jos en ole lähettänyt mitään postia, olen tulkinnut, että olet jättänyt kurssin kesken. Jos tämä ei mielestäsi ole tilanne, ota yhteyttä välittömästi.

Jos N-asema ei toimi automaattisesti, joutuu kirjoittamaan Command Promptiin tuollaiset rivit:

net use N: /delete
net use N: \\eppi.ad.jyu.fi\mnt "" /u:""

Lisätietoa: http://www.ad.jyu.fi/

Linkkejä materiaaliin

Aiemmilta kurssikerroilta

Muilta kursseilta ("esitietoa")

Java-speksejä Sunin supporttisivuilta

Liitännäistietämystä...

Linkkejä joihinkin dokumentteihin, jotka liittyvät kurssilla hipaistaviin ohjelmoinnin tai ohjelmistotekniikan piirteisiin. Ovat kuitenkin olennaisesti muiden kurssien tai (myöhemmän) itseopiskelun aiheita:

Työkaluja

Tässä on listattu joitakin mikroluokissa käytössä olevia työkaluja, joilla kurssiin liittyviä demoja ja harjoitustyötä esimerkiksi voi tehdä.

Tekstieditoreja

Ohjelmakehitysympäristöjä

[--LINKKI SIVUN ALKUUN--]


(Validoi sivu WDG:n validaattorilla)