Etusivu | Materiaali | Luennot | Miksi | -- Ajatuksia -- |
ITKA203 Käyttöjärjestelmät --- kesä 2007 --- Ajatuksia, mielipiteitä ja ideoita
Loppukeskustelu 21.6.2007
Viimeisellä luennolla päästiin käymään mielestäni oikein hyvä vajaan puolen tunnin keskustelu opiskelijoiden näkökulmasta Käyttöjärjestelmät -kurssiin. Alla on yhteenveto keskustelussa esitetyistä näkökohdista:
- Avauskommentin mukaan nykymuotoisen kurssin pakollisuus koko IT-tiedekunnan kaikille opiskelijoille on kyseenalainen
- Toisen mielipiteen mukaan kurssin pakollisuus hyvä asia, mutta se voi olla nykymuodossaan liian laaja (tai syvällinen) joillekin ryhmille, joille se on pakollinen
- Toisaalta todettiin, että yleisestikin eri aloilla ammattilaisen tulee tietää asioista syvällisemmin tai teknisemmin kuin käytännön työssä päivittäin tarvitsee
- Tuli esiin, että onkohan kurssin alkuperäisessä suunnittelussa otettu huomioon tietojenkäsittelytieteen laitoksen erityistarpeet: mikä on se tietokonearkkitehtuurin ja käyttöjärjestelmien osaamisen taso, joka siellä opetusjohdon käsityksen mukaan katsotaan ehdottomaksi ydintietämykseksi eli pakollisen kurssin arvoiseksi
- "Eikö kurssin turhuutta kuvaa se, että voi valmistua maisteriksi tarvitsematta kurssin asioita, esimerkiksi konekieliohjelmointia tai semaforeja, missään muualla kuin itse kurssilla?" (Tähän itse kommentoin, että sama voi yhtä hyvin kuvata kurssin tärkeyttä ja tutkintorakenteen hyvyyttä sen osalta: asioita ei käydä läpi muilla pääopintojaksoilla, eikä asioissa ole tältä osin päällekkäisyyttä)
Yleismielipiteeksi muodostui, että kurssin asiasisällöllinen laajuus on hyvähkö, mutta joidenkin asioiden tekninen syvyys puolestaan liiahko (joidenkin kohderyhmien motivoitumisen kannalta). Syvällisenä koettiin esim.
- prosessorin suorituksen yksityiskohdat (väylät, rekisterit, fetch-execute -sykli ja keskeytysten hoidon tekniset yksityiskohdat)
- pinon ja rekisterien käyttö aliohjelmakutsussa
- vuorontamisen yksityiskohdat "eiko riitä tieto siitä, että jossain on joku vuorontaja, jonka ansiosta voi tehdä tuota tai tätä; onko siitä pakko tietää tarkemmin"
- ja (ymmärtääkseni lukuisten kommenttien perusteella) vastaavat laitteistoarkkitehtuuri- ja konekielinäkökohdat muidenkin aiheiden käsittelyssä.
ITKA203 kesä 2007:n toimenpide-ehdotus: Olisi kenties parempi olla kaksi erilaista ITKA203:n aiheistoa käsittelevää kurssia:
- Ensimmäinen kurssi abstraktimpi ja vähemmän syvällinen, pakollinen kaikkiin IT-tutkintoihin, mukaanlukien tietotekniikan opettajat sekä tietojärjestelmätieteen KTM:t.
- Jälkimmäinen kurssi syvällisempi, kaikille vapaaehtoinen tai pakollinen ainoastaan tietotekniikan FM:lle.
Luennoitsijan käsityksiä ja mietteitä
Kurssin jälkeen sain kaksi spontaania palautetta kahdelta tietojärjestelmätieteen opiskelijalta:
Ensimmäinen sisälsi mm.: "ajatukseni on nyt, että ko. kurssi pitää säilyttää mutta tjt:n opiskelijoille voisi ottaa vieläkin enemmän rautalanka-mallista ohjausta esim. useampien demojen tms. muodossa joissa tehtäisiin enemmän näitä asioita. Itse sain paljon paljon uutta tietoa vaikka arvosana ei päätä huimaava olekaan =)".
Toinen: "voisin näin ohjelmointia kammoksuvana tietokoneen sisällöstä absoluuttisilla nollatiedoilla kurssille joutuneena tietojärjestelmätieteen opiskelijana todeta, että loppujen lopuksi hyvä kurssi, joka kannattaa (tällaisessa muodossa) pitää opetusohjelmassa jatkossakin. Loppupeleissä on hyvä ymmärtää edes jotain siitä mitä kone on syönyt ja miksi se toimii niin kuin toimii."
Itse tajusin vasta kurssin jälkeen, että vaikka laitteiston rooli käyttöjärjestelmien ymmärtämisessä on suuri ja laitenäkökohdat täytyy ottaa mukaan, käyttöjärjestelmiin voisi ottaa lähtökohtaisesti "järjestelmäsuunnittelullisen" näkökohdan. Uskoisin, että se voisi olla motivoivampi lähestymistapa TKTL:n opiskelijoille. Jotenkin tällä tavoin ajatuksenkulkuni kiteytyy:
- "Käyttöjärjestelmä" on jo nimensä perusteella selvästi ainakin "järjestelmä"; mikseipä siis miettisi sitä siltä pohjalta, että mihin tarpeisiin sen järjestelmänä täytyy vastata, missä ympäristössä se toimii ja miten nykyiset käyttöjärjestelmät on suunniteltu jotta ne toimivat halutulla tavalla.
- Se on esimerkkitapaus suhteellisen laajasta järjestelmästä, jossa on ohjelmisto- sekä laitteistokomponentteja, datansiirtoa ja synkronointia. Ja keskenään ristiriitaisia suorituskyky- ja ominaisuustarpeita. Sovellusohjelmien kautta käyttöjärjestelmällä on myös ihmiskäyttäjä tai useita. Tai mieltäisin asian itse asiassa niin, että "tietokonejärjestelmä" sisältää laitteiston, käyttöjärjestelmän, sovellusohjelmat sekä ihmiskäyttäjät. Ja tämän kokonaisuuden toimintaa pitäisi katsella kokonaisvaltaisesti. Mielestäni käyttöjärjestelmä täyttää kaikki tunnuspiirteet, joita "abstraktisti ajatellen" epätriviaalilla tietojärjestelmällä ylipäätään on. Käyttöjärjestelmän suunnittelua voisi uskoakseni katsoa yleisestä tietojärjestelmien suunnittelun näkökohdasta. Myös siitä perspektiivistä käsin törmätään laitteiston rajoituksiin ja teknologisiin perusteisiin kuten prosessorin ja konekielen toimintaan, mutta ehkä silloin laitteiston läpikäynti vaikuttaisi tietojärjestelmäopiskelijan silmään paremmin motivoidulta?
- Käyttöjärjestelmän tavoitteita ja toteutusta voisi avata saman käsitteistön kautta, jota muutkin järjestelmäkurssit käyttävät, eli käsittääkseni oliopohjaisen mallintamisen kautta.
Kurssin veivaaminen uuteen lähestymistapaan olisi mielestäni kokeilemisen arvoista, mutta uskoakseni aika työläs operaatio. Jonkun pitäisi kaivautua todella pintaa syvemmälle asiaan, ja tehdä jonkun verran läksyjä asian tiimoilta. Kieltämättä helpompaa on käsitellä asiaa nykyisellä tavoin, eli lähteä liikkeelle niistä artefakteista, joita on olemassa: Von Neumann -tietokone ja erään käyttöjärjestelmän lähdekoodi. Edelleen, tämä on vain oma ajatukseni, josta ei toistaiseksi ole yleisemmin keskusteltu.
Myös on niin, että toistaiseksi kurssilla on "piilossa" nimikkeensä takana myös fundamentaaleja ohjelmointiin liittyviä asioita, joita muissa kaikille pakollisissa ydinkursseissa ei käsittääkseni ole. Yksi on muistimalli: pinon käyttö aliohjelma-aktivaatiossa sekä osoittimen (viitteen) ja datan ("olion") suhde käytännössä. Toinen on rinnakkaisuus ja synkronointi: prosessien ja säikeiden yhteistoiminnan ymmärtäminen. Kolmas on imperatiivinen ohjelmointiparadigma: mitä se on, kun ei ole mahdollisuutta käyttää olioita ohjelmointikielessä. Neljäs on "virtuaalikonehierarkia" eli tapa, jolla monet ohjelmistot kannattaa toteuttaa alempia kerroksia käyttävien kerrosten avulla.
Toinen kehitysidea, mikä tulee mieleeni, olisi että voisi tutkia käyttöjärjestelmän toimintoja mielekkäiden käytännön tapausten kautta: Miten tietokannanhallintajärjestelmä käyttää tiedostojärjestelmää? Miten WWW-palvelin? Miten graafinen taitto-ohjelmisto? Käyttöjärjestelmät kännyköissä? Käyttöjärjestelmät digibokseissa? Miten eri ympäristöt ovat erilaisia, mikä niille kaikille taas on yhteistä...
Suoraan sanottuna mielestäni tarvittaisiin eri kurssi "Tietokoneen ja käyttöjärjestelmän toteutuksesta" ja erillinen kurssi muille tärkeille seikoille (rinnakkaisuus, muistimalli, ...), jotka nyt on liimattu samaan pakettiin artefaktin toteutuksen kanssa. Ymmärrän itse hyvin teknologisen lähestymistavan, ja minusta se on joillekin erinomaisen sopiva lähestyminen. Pelkään kuitenkin, että tiedekunnassa on opiskelijoita, joille sama lähestymistapa on motivaatiota laskeva tekijä.
IT-ydinopetuspaketti on mielenkiintoinen asia, josta täytyisi mielestäni käydä ajoittain keskustelua myös koko opiskelu- ja opettajakunnan kesken, eikä vain pienissä työryhmissä.
Viimeksi kajottu 2007-09-05.