Helsingin yliopisto
/
Tietojenkäsittelytieteen
laitos
/
Ohjelmoinnin jatkokurssi
Copyright © 2009 Arto Wikla.
Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille
opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin,
kuten kaupallisilla tai muilla kursseilla, on kielletty.
Ohjelmoinnin jatkokurssi: koevihjeitä syksyllä 2009
(Muutettu viimeksi 8.12.2009)
Koealue:
- Kirjassa:
luvut 2-5, ei kuitenkaan kappaletta 4.3.4 linkitetyistä listoista
(s. 174-179), luvun 5.3 sarjallistetuista olioista ei kysytä,
luvun 5 tiedostojenkäsittelytavat ovat "vanhentuneita".
Aika monessa muussakin asiassa www-materiaali on kehittynyt
kirjan sisältöä monipuolisemmaksi ja uudenaikaisemmaksi.
- Www-sivuilla:
luvut 2-5, ei kuitenkaan luvun 4.3. kohtaa "Linkitetyt rakenteet"
eikä luvun 4.6 kohtaa "Pakkaukset Unixissa/Linuxissa (bash-shell)".
Luvun 5.1. kaikenlaisia eri poikkeusluokkia ei tarvitse opetella
ulkoa:
jos poikkeuksia kokeessa kysellään, riittää osata käyttää
pelkästään poikkeusta Exception.
Luvun 5.1. kohdasta "Virheiden käsittelyä" ei tule koekysymyksiä.
Luvun 5.2 kohta "Sarjallistaminen - binääritiedostoja"
ei kuulu koealueeseen.
Luvusta 5.3 riittää osata käyttää geneerisiä tietorakenneluokkia
ArrayList<E> ja HashMap<K,V>.
Luku 6 ei kuulu koealueeseen.
- Harjoitustehtävät
ovat tärkeitä, erityisesti "vaikeat" tehtävät.
Tärkeitä asioita, vihjeitä, ...
- Luvut 1 ja 2 ovat taustatietoja. Koska kurssi Ohjelmoinnin perusteet
on kurssin esitietovaatimus, noiden lukujen asiat on osattava, vaikkei
niitä erityisesti testatakaan.
- Luku 3:
- Tiivis kertaus ja täydennys algoritmien laadintavälineistä
- "Varattuja sanoja ei tarvitse osata luetella!"
- Alkeistyypit - viitaustyypit: tärkeä käsitepari.
- Numeeristen tyyppien lukualueita yms. ei kysytä. Myöskään
ylivuotoasiat eivät tällä kurssilla ole keskeisiä.
- Eksplisiittistä tyyppimuunnosta (cast) ei pyydetä tekemään,
on järkevää silti ymmärtää, mistä on kyse ja milloin
implisiittinen on luvallinen.
- Matemaattisia perusfunktioita ei tarvitse osata ulkoa.
- Laskentajärjestystä ja operaatioiden sitovuutta ei kysytä, mutta
ne on tietenkin käytännössä osattava - tai ainakin on ymmärrettävä
käyttää sulkumerkkejä.
- Keskeytyslauseita break ja continue ei pyydetä käyttämään
ohjelmoinnissa.
Toki niitä saa käyttää, jos osaa tehdä sen hyvin.
- Mitään tehtävää ei pyydetä ratkaisemaan rekursiolla. Saa toki
käyttää, jos on aivan varma että osaa... Tuskin kuitenkaan tulee
tehtäviä, joissa rekursio edes olisi järkevä tekniikka.
- Luku 4:
- Kurssin keskeisin luku, koko jutun ns. "pihvi":
- Javan olio-ohjelmointikalusto: idea ja kayttötavat
- kapseloinnin ja abstraktin tietotyypin idea, "API-kuvauksien"
ymmärtäminen ja lukutaito: kokeissa on usein annettu
tuollaisia sekä pyydetty toteuttamaan ja/tai käyttämään niitä
- ilmentymämuuttujat ja luokkamuuttujat
- ilmentymämetodit ja luokkametodit
- mutta luokkamuuttujan käyttöä Jonotuskoneen tapaan
"juoksevan numeron generointiin" ei enää kysytä kokeessa
- luokan lataaminen ja olion luonti
- luokkamäärittelyn rakenne ja mahdollisuudet
- luokan käyttötavat
- periytyminen, yli- ja aliluokat, konstruktorit periytymisessä,
polymorfismi
- abstrakti luokka ja rajapintaluokka; esseiden lisäksi näitä
voidaan tarvita myös ohjelmointitehtävissä
- pakkausten käyttö Java-tasolla on ymmärrettävä, mutta kokeessa
ei kysytä pakkauksien toteuttamisesta erityisissä
käyttöjärjestelmissä, esim. Linuxissa, Windowsissa tms.
- näkyvyyden säätely on ymmärrettävä sekä teoriassa että käytännössä.
- Luku 5:
- Poikkeusten käsittelystä on ymmärrettävä perusperiaatteet.
Oppimateriaalin esittelemä taso riittää.
- Jos try-catch- lausetta tai throws-ilmausta tarvitaan,
riittää osata käyttää poikkeusten yliluokkaa Exception.
Nykyään kokeissa yleensä on tarvittu try-catch-taitoa...
- On hyvä osata tekstitiedostojen lukemista ja kirjoittamista.
Luokkien File, PrintWriter ja Scanner
yksinkertainen käyttötaito on siis syytä osata.
Näiden API-määrittelyä ei anneta kysymyspaperissa.
- ArrayList<E>- ja HashMap<K,V>-luokkien
yksinkertainen käyttö on hyvä osata.
Jos niitä pyydetään käyttämään, tarpeellinen osa API-määrittelyä
annetaan kysymyspaperissa.
Muita neuvoja:
- Kannattaa muistaa, mistä kokeessa oikeastaan on kysymys ja mistä ei:
Koevastaus on teksti, jolla tarkastaja saadaan
uskomaan - tai edes luulemaan - että vastaaja osaa asiat.
Ajattele koetilanteessa tarkastajan psykologiaa,
älä omaa intoasi tai ahdistustasi!
Koe on kuin esitys, jonka vastaanottaja on tarkastaja.
- On järkevää vastata ensin niihin kysymyksiin, jotka osaa.
Sitten voi yrittää sitten niitä toisia ...
- On järkevää käyttää kuvaavia tunnuksia ja kirjoittaa hyvin selkeätä
ohjelmatekstiä! Silloin tarkastaja saattaa ymmärtää, mitä hivenen
virheelliselläkin ratkaisulla on tarkoitettu.
- Tarkastajalle on annettu ohje "jos lausekkeen ymmärtämiseen kuluisi enemmän
aikaa kuin 15 sekuntia, lauseketta ei tarvitse yrittääkään ymmärtää".
On siis syytä kirjoittaa selkeitä lausekkeita.
- System.out.println-lauseen saa lyhentää muotoon "S.o.p".
- Harjoitustehtävät ovat tärkeitä!
- Vanhat kokeet saattavat olla kiinnostavia. Linkkipolkujen alkuja löytyy
kurssin
luennointikertojeni luettelosta.
On syytä kuitenkin huomata, että kurssin sisältö on vuosien varrella
muuttunut melkoisesti!
Vanhoihin malliratkaisuihin on muutenkin syytä suhtautua terveellä
kritiikikillä, koska kehitys kehittyy...
Takaisin koetulos- ja koeselityssivulle.