Kurssikuvauksia

Versio hetkellä 20. kesäkuuta 2010 kello 18.17 – tehnyt Malloc (keskustelu | muokkaukset) (siirsi sivun Älä hätäile: Kurssikuvauksia uudelle nimelle Älä hätäile: kurssikuvauksia)

Pakolliset kurssit

Johdatus tietojenkäsittelytieteeseen (4 op)

  • 1. ja 2. periodissa

Kurssi on luonteeltaan yleiskatsaus tietojenkäsittelytieteeseen, sisältäen paljon asiaa laidasta laitaan. Kurssilla esitellään myös laitoksen tutkimustoimintaa liittyen kuhunkin osa-alueeseen. Kurssin suoritustapa poikkeaa lähes kaikista muista tietojenkäsittelytieteen kursseista, sillä kurssi suoritetaan tekemällä esseitä ja oppimispäiväkirjoja pienryhmissä. Koska kurssilla ei ole koetta, näihin tehtäviin osallistuminen on välttämätlntä.

Kurssi sisältää kattavan yleiskatsauksen tietojenkäsittelytieteeseen ja sen olisi ainakin tarkoitus antaa jonkinlainen kokonaiskuva opiskeltavasta alasta. Teksteistä tosin opiskelija ei tässä vaiheessa ymmärtäne vielä puoliakaan.

Tietokone työvälineenä (4 op)

  • Tunnetaan myös nimellä Lapiokurssi tai pelkkä Lapio
  • Tiiviskurssi lukuvuoden alussa (pääaineopiskelijat) sekä normaali kurssi 3. periodissa (sivuaineopiskelijat)

Työvälinekurssi on peruskurssi, jolla opetellaan myöhemmillä kursseilla välttämättömiä käytännön taitoja. Kurssilla opetellaan käyttämään laitoksella käytössä olevia ohjelmistoja ja laitteistoja sekä valitsemaan tehtävään sopiva työkalu. Keskeisimmät Unix/Linux-komennot, HTML-perusteet, tekstieditorien ja tekstinkäsittelyohjelmien käyttö jne. kannattaa oppia, ettei sitten myöhemmin kulu pään raapimiseen enemmän aikaa kuin itse tekemiseen. Kokeneet tietokoneharrastajat voivat kyllä suorittaa kurssin tenttimällä, mutta kurssilla on pakollisia harjoitustöitä, jotka täytyy tehdä, vaikka menisi suoraan kokeeseen. Monelle kokeneellekin tietokoneenkäyttäjälle kurssilla todennäköisesti on uutta asiaa ainakin laitoksen järjestelmistä, joten kurssimateriaali ainakin kannattaa lukea läpi.

Ohjelmoinnin perusteet (5 op)

  • Tunnetaan myös nimellä OhPe
  • 1. periodissa sekä uudelleen 3. periodissa

Kurssilla opetetaan fukseille, mitä ovat algoritmit, muuttujat, lauseet, lausekkeet, ohjausrakenteet ja erityisesti oliot. Heti alusta alkaen tehdään omia ohjelmia koneella. Kurssi on tarkoitettu ensisijaisesti niille, joilla ei ole olio-ohjelmointitaustaa, mutta osaavienkin ohjelmoijien on syytä vilkaista kurssimateriaaliin yhteisen kielen omaksumiseksi ja mennä sitten heti tenttiin. Toisinaan kun käy niinkin, että moni aiemmin ohjelmoinut luulee osaavansa mutta saakin tentissä kuvannoillisesti lapiosta naamaan. Monelle tulee myös järkytyksenä, että ohjelmointikurssien kokeissa paperikoodataan. Tentissä kannattaa olla varuillaan, ettei aika tuhlaannu koodin kumittamiseen tai puhtaaksikirjoittamiseen. Tämän takia on tärkeää kehittää vahva rutiini yksinkertaisten ohjelmien kirjoittamiseen jo kurssin aikana. Kurssi on hyvin työpainotteinen ja laskuharjoitustehtävien tekeminen korreloi suoraan läpipääsyn kanssa. Opetuskielenä on Java.

Ohjelmoinnin jatkokurssi (4 op)

  • Tunnetaan myös nimellä OhJa
  • 2. periodissa sekä uudelleen 4. periodissa

Kun ohjelmoinnin perusteet ovat hallussa, syvennytään Javaan, luokkiin ja olioihin. Kurssilla on perinteisesti työläät laskarit, mutta opittavaa asiaakin on paljon ja harva fuksi sisäistää aivan kaiken kurssilla. Monet pitävät Ohjelmoinnin Jatkokurssia kuitenkin keveämpänä kuin peruskurssia. Jos ohjelmoinnin jatkokurssilla joutuu opettelemaan vielä ohjelmointirutiinia, niin on syytä ottaa itseään niskasta kiinni.

Kurssilla ei käsitellä Javan kirjastopakkauksia, vaan kielen välineiden (luokat, oliot, metodit, perintä, koosteisuus) hyödyntämistä harjoituksina tehtävissä ohjelmissa. Kuten Ohjelmoinnin perusteet, tämäkin kurssi on erittäin käytännönläheinen - koko ajan ohjelmoidaan. Suurimmat ongelmat tulevat mainittujen käsitteiden ymmärtämisestä, mutta toisin kuin matematiikassa, täällä asioille löytyy heti järkevä käyttötarkoitus.

Kummallakin kurssilla on käytössä suomenkielinen perusopetusteos Ohjelmoinnin perusteet Java-kielellä, jonka on kirjoittanut kurssia syksyisin luennoiva Arto Wikla. Hyvää materiaalia löytyy myös kurssin www-sivuilta ja ilman kirjaakin pärjää.

Kurssia seuraava erillinen harjoitustyö (4 op) on syytä suorittaa mahdollisimman pian näiden kurssien jälkeen. Huomaa kuitenkin, että harjoitustyön saa aloittaa vasta, kun nämä kurssit on suoritettu (eli siis niistä on suoritusmerkintä)! Ohjelmointityökaluihin liittyvät asiat kannattaa myös opetella jo ohjelmoinnin peruskursseilla, ettei harjoitustyössä mene sormi suuhun - siellä kun ei ole enää aikaa opetella ohjelmointiympäristöjä ja työkaluja.

Ohjelmistojen mallintaminen (4 op)

Kurssilla annetaan perustiedot ohjelmistojen mallintamisessa käytetyistä työkaluista. Kurssilla piirretään ja luetaan kaavioita jotka kuvaavat ohjelman korkean tason rakennetta. Lisäksi opetukseen sisältyy hitunen testausta ja versionhallintaa, jotka ovat tärkeitä ohjelmointityön apuvälineitä. Tämän kurssin asioista on hyötyä Ohjelmoinnin harjoitustyön dokumentoinnissa (ja myöhemmin Tietokantasovellus kurssin dokumentoinnissa). Kaavioiden piirtämiseen kannattaa suhtautua ehdottomalla vakavuudella: Niitä piirrellään kaikkialla missä ohjelmistoja toteutetaan.

Ohjelmoinnin harjoitustyö (4 op)

  • Tunnetaan myös nimellä Javalabra
  • Ryhmiä joka periodissa sekä kesäisin

"Javalabra" laajentaa Java-kurssin asioita. Javan loppupuolen laskarit ovat juuri sitä tärkeää ja olennaista kamaa, jonka joutuu viimeistään täällä opettelemaan, vaikka se kurssilla yleensä skipataankin nopeasti. Tätä tärkeää kamaa ovat mm. tiedostojen käsittely, poikkeukset, rajapintaluokat sekä pakkaukset. Kannattaa siis höristää korviaan jo Java-kurssilla näitä avainsanoja kuullessaan, vaikka mieli tekisikin jättää parit viimeiset laskarit väliin. Java-kurssin aikana hankittu API-kuvausten lukutaito on erittäin hyödyllinen esitieto.

Labrassa on myös ohjelmointikursseille uutta ja ihmeellistä asiaa: Javan valmiit työkalut, graafisen käyttöliittymän ohjelmointi (Swing-komponenteilla), ohjelman suunnittelu olioita käyttäen, koodin kommentointi ja testaus, projektin dokumentointi jne. Lisäksi pitää vielä oppia pysymään projektin aikataulussa ihan ilman äidin apua. Ajankäytön opettelu on jo itsessään aikamoinen työmaa.

Kurssilla tehdään oma, kokonainen, pienehkö mutta toimiva ohjelma. Ohjelmasta saa tehdä niin upean kuin osaa, mutta parasta olisi tässä vaiheessa pitää liika into pussissa. Palkkana on kuitenkin vain oppia ja 4 opintopistettä, eikä niitäkään saa, jos megamahtava Hekumometri joka-suuntaisella kutkulaattorilla ei toimi, leviää käsiin ja kaataa kääntäjän kotiovella. Lisäksi ruutia pitää jättää myös ohjelman dokumentin kirjoittamiseen. Ja tämä kaikki pitäisi saada valmiiksi 6 viikossa! Nopea laskutoimitus osoittaa, että jos otat löysästi labran alkupuoliskon, loppupuolella sinulle rapsahtaa jo lähes 30 viikkotuntia pelkkää labratyötä.

Labraopetus koostuu alun yhteisluennosta, parista ryhmätapaamesista ja viikoittaisista henkilökohtaisista ohjauspalavereista. Alkuluennoilla käydään läpi mm. graafisen käyttöliittymän laatimisen perusteita ja dokumentointia, ryhmätapaamisissa esitellään omaa työtä muille. Huomaa että alkuluennolle osallistuminen on labraan osallistumisen kannalta pakollista. Ohjauspalavereissa raportoidaan ohjaajalle työn edistymisestä ja ihmetellään ohjaajan kanssa vaikeita kohtia. Tapaamisten lisäksi ohjaajilla on päivystysajat, jolloin päivystävältä ohjaajalta saa käydä kysymässä apua. Labraneuvonta toimii yleensä kakkoskerroksen aulassa (tarkat neuvonta-ajankohdat ilmoitetaan kurssilla).

Työn alkaessa pääsee yleensä itku. Joudut synkkään metsään vain voiveitsen kanssa. Työsi ohjaajalta, kavereilta ja verkosta saat kyllä apua. Ryhmätapaamisiin, ohjelman suunnitteluun ja dokumentointiin, Javan hienouksien opetteluun sekä varsinaiseen koodaukseen menee joka tapauksessa paljon aikaa. Kalenteriin onkin parasta merkitä jo kurssia aloittaessaan ne 80 tuntia, jotka käytät tämän kurssin suorittamiseen ennen deadlinea. Jos Ohjelmoinnin perusteet ja Ohjelmoinnin jatkokurssi on tullut suoritettua hieman horjuen (alle kolmosen arvosanalla), on syytä suosiolla lisätä parikymmentä tuntia aikatauluun. Joskushan ne esitiedot on hankittava ja viimeistään labratyön ohessa ne saa kantapään kautta, mutta ei ilmaiseksi, vaan hikisten lisätyötuntien hinnalla. Esitiedoista on hyötyä: Jos sinulla on jo ammattillista kokemusta koodauksesta tai dokumenttien kirjoittamisesta, voit ehkä hieman pienentää arviota tuntimäärästäsi.

Suurin haaste useimmalle opiskelijalle on suunnittelu- ja toteutusdokumentin kirjoittaminen (yleensä dokumenttien kirjoittaminen kurssista riippumatta). Toteutusdokumentin kirjoittamista ei missään nimessä tule jättää viimeiseen iltaan. Dokumentointi on taito, jota käpistelijä tarvii kaikkialla. Se on syytä opetella ajoissa ettei tulevissa harjoitustöissä tule itku, Ohjelmistotuotantoprojektissa parku ja työelämässä kenkää.

Tietokantojen perusteet (4 op)

  • Tunnetaan myös nimellä Tikape
  • 2. periodissa sekä uudelleen 4. periodissa

Tietokantojen perusteet -kurssi opettaa asioita relaatiokannoista ja SQL-kyselykielestä. Erikoista tässä kurssissa on se, että perinteisiä laskareita ei ole, vaan kaikki tehtävät tehdään koneella www-liittymän (SQLTrainer) kautta ja vain oikeat ratkaisut tuottavat harjoituspisteitä. Järjestelmä myös opastaa tarvittaessa. Tämän lisäksi kurssilla suunnitellaan ryhmätyönä tietokanta. Relaatioalgebran ja välillä hankalaltakin tuntuvan SQL-kielen opettelu on kurssin läpäisyn kannalta olennaisen tärkeää. Lohduttautua voit sillä, että SQLTrainerin harjoitustehtävissä vaadittavia kohtuullisen monimutkaisia SQL-kyselyitä harvemmin tarvitaan oikeasti (kokeesessa vaikeahkot liitokset pitää sen sijaan hallita). Relaatioalgebra tuntuu olevan monelle mysteeri, sitäkään eivät useimmat tarvitse yhtään missään.

Kummankin kurssin suoritus tapahtuu käymällä luennoilla ja kurssikokeissa ja suorittamalla lasku- ja mikroharjoituksia. Vain ahkera harjoittelu tekee mestarin, ja juuri siksi kurssin harjoitukset on suunniteltu mahdollisimman hyvin opetusta palvelevaksi. Pelkällä erilliskokeella kurssien läpäiseminen voi onnistua, mutta vaatii jonkun verran hyvää pohjatietoa aiheesta. Harjoituksia kannattaa tehdä huolella. Laiskottelu näillä kursseilla voi kostautua myöhemmin tehtävässä harjoitustyössä "Tietokantasovellus", jossa opiskelijoiden oletetaan osaavan käyttää oikeita apuvälineitä.

Tietoliikenteen perusteet (4 op)

  • Tunnetaan myös nimellä Tilpe
  • 3. periodissa

Kurssilla paneudutaan internetin peruskäsitteistöön ja -tekniikoihin. Kurssi etenee käymällä lävitse TCP/IP-pinoa taso tasolta. Tutuksi tulee siis pääpiirteittäin kaikki WWW-selaimen sielunelämästä aina verkkokortin bittitasolle asti. Kurssi antaa hyvät perustiedot tietoliikenteestä, jotka ovat tarpeen kaikkien eri linjojen opiskelijoille.

Kurssin sisältö on huomattavan laaja ja yksityiskohtainen opintopistemäärään nähden. Opiskelu perustuu paljolti TCP/IP-pinon kerrosten ja mekanismien toiminnan ulkoa opettelemiseen (esim. TCP-ruuhkanhallintamekanismien). Kokeessa ongelmaksi saattaa koitua hahmottaa, millä tasolla ja kuinka yleinen vastaus kysymykseen halutaan (kokeessa saatetaan esimerkiksi kysyä, mitä tapahtuu kun opiskelija klikkaa linkkiä selaimellaan). Mikäli kurssilla vastaantuleva lyhenteiden ja käsitteistön määrä alkaa hirvittää, kurssilla käytettävä kurssikirja on mitä mainion apu pelonlievitykseen. Asian ja detaljien suuresta määrästä johtuen kurssista on melko vaikea saada täyttä arvosanaa.

Tietoturvan perusteet (4 op)

  • 4. periodissa

Tietoturvan perusteet -kurssilla käsitellään tietoturvaan liittyvää lainsäädäntöä, yleisimpiä tietoturvan vaarantavia ohjelmointivirheitä sekä opetellaan sääntöjä, joita noudattaen järjestelmät tulisi toteuttaa hyökkäysten vaikutusten minimoimiseksi. Salausmenetelmät, todentaminen ja allekirjoitukset ovat myös keskeisessä osassa kurssin sisältöä. Ohimennen kurssilla käsitellään yleisimpiä hyökkäysmenetelmiä; kurssin suorittaminen hyväksytysti ei tosin takaa että opiskelija osaisi käyttää näitä. Luentomateriaalissa on yleisesti ollut sekä ohjelmointivirheistä että hyökkäyksistä hyviä esimerkkejä, jotka ovat asiasta kiinnostuneelle varmasti mielenkiintoista luettavaa.

Kurssin alkupuolella keskitytään aika paljon tietoturvaan liittyvään lainsäädäntöön ja viranomaisiin. Tätä ei kannata säikähtää ja seuraavalla viikolla käsitelläänkin jo erilaisia salausmenetelmiä. Kurssi on aika teoriapainotteinen ja opiskelu keskittynee melko pitkälti tiettyjen sääntöjen ja näihin liittyvien esimerkkien muistamiseen, joita pystyy päättelemään osaksi terveellä järjelläkin. Kokeessa saatetaan kysyä hyvinkin yksityiskohtaista tietoa esimerkiksi sertifikaatteihin liittyvistä ongelmista.

Tietorakenteet (8 op)

  • Tunnetaan myös nimellä Tira
  • 1. ja 2. periodissa sekä uudelleen 3. ja 4. periodissa

Tietorakenteet on mielenkiintoinen ja hyödyllinen kurssi sekä algoritmeistä että ohjelmointitouhusta kiinnostuineille (yleensä nämä leirit omaavat hyvin poikkeavat mielipiteet perus- ja aineopintojen kursseista). Käytännön ohjelmointiprojekteissa tulee jatkuvasti vastaan tilanteita, joissa pitäisi käsitellä suuria tietomääriä: lisätä, poistaa, etsiä ja järjestellä tietoalkiota. Tietorakenteet-kurssilla opetetaan lukuisia toinen toistaan näppärämpiä keinoja hallita tietoröykkiöitä. Oikeastaan vasta kurssin asiat hallittuaan voi sanoa oikeasti osaavansa koodata. Tietorakenteet on myös ensimmäisiä peruskursseja, joilla kurkistetaan tietojenkäsittelyn teoreettisempaan puoleen (algoritmit ja niiden analysointi).

Kuten kurssin nimestä voi aavistellakin, valtaosa opetuksesta keskittyy erilaisten tietorakenteiden käsittelyyn. Opiskelija voi olla varma, että kurssin suoritettuaan ainakin perustietorakenteet (taulukko, pino, lista) ovat syöpyneet lähtemättömästi tajuntaan. Hämäriä muistikuvia saattaa löytyä jopa hieman eksoottisemmistakin tietorakenteista kuten puista, hajautustauluista ja verkoista. Tietorakenteiden lisäksi kurssilla käydään läpi muutamia mielenkiintoisia haku- ja järjestysalgoritmeja ja raapaistaan kevyesti algoritmien tehokkuusanalyysiä.

Kurssin ehdottomasti pakollinen esitietovaatimus on "Johdatus diskreettiin matematiikkaan". Matemaattista esitietovaatimusta ei kuitenkaan ole syytä kavahtaa, sillä loppujen lopuksi itse käsiteltävät asiat ovat suhteellisen yksinkertaisia ja liittyvät lähinnä tietorakenteiden formaaliin esittämiseen. Jos esitietovaatimukset eivät ole kunnossa, kannattaa harjoitella ja osallistua esitietokokeeseen, ja päästä kurssille tätä kautta. Tietorakenteet -kurssin käymättä jättäminen ensimmäisenä keväänä lisää valmistumisaikaa vuodella, koska kurssi järjestetään vain kerran vuodessa.

Laskuharjoitusten tekeminen on tässä kurssissa en-si-si-jai-sen tärkeää! Suurin ongelma opiskelijoille kurssissa lienee, että kelkasta putoaa hyvin helposti, jos jättää kerran laskaritehtävät tekemättä. Jos jokin asia menee yli ymmärryksen, kannattaa heti vaatia luennoijaa tai laskarinpitäjää vääntämään asia rautalangasta ettei tajuntaan jää mustia aukkoja. Kurssi ei loppujen lopuksi ole vaikea, joskin monelle hyvin työläs. Toisaalta laitokselta on vaikea löytää henkilöä, joka ei pitäisi kurssia ehdottoman hyödyllisenä. Syksyllä hyvin menestyneelle opiskelijallekin koe saattaa tulla järkytyksenä - ei sen takia että se olisi vaikea, mutta kokeesta ei pääse läpi, jos ei osaa soveltaa. Tästä kertoo sekin että kokeeseen saa ottaa A4-muistilapun mukaan. Perinteisesti läpipääsyprosentti on kuitenkin ollut vähintään syksyn ohjelmointikurssien tasoa.

Tietorakenteet -kurssi on tietojenkäsittelytieteelle "sitä itseään" ja Helsingin yliopiston TKT-laitoksen erikoisuus ja ylpeys. Monien huippuyliopistojen (MIT) tietojenkäsittelytieteen opetukselle tyypillistä on, että tietorakenteita opetetaan kattavasti heti ensimmäisenä opiskeluvuonna. Muissa Suomen yliopistoissa käpistelijöiden ymmärrys tietorakenteista ja tehokkaista ratkaisuista on matalahkolla tasolla verrattuna laitoksen opiskelijaan. Kuulostaako hehkuttamiselta? Ota selvää ja varmistu.

Tietorakenteiden harjoitustyö (4 op)

  • Tunnetaan myös nimellä Tiralabra
  • Ryhmiä melkein joka periodissa ja kesäisin

Tietorakenteiden harjoitustyö eli Tiralabra on käytännön jatkoa Tietorakenteet-kurssille. Kurssilla pääsee leikkimään tietorakenteilla ihan oikeasti, eli tekemään kokonaisen ohjelman, jossa hyödynnetään joitain tietorakenteita ja algoritmeja. Ohjelma tulee tietenkin myös testata ja dokumentoida, mutta dokumentointivaatimukset ovat minimaaliset aiempiin harjoitustöihin verrattuna. Sallitut ohjelmointikielet riippuvat pitkälti harjoitustyön ohjaajasta, mutta yleensä laitoksella opetuskielinä olevat ohjelmointikielet ovat käytössä.

Harjoitustyö on vaativampi kuin Ohjelmoinnin harjoitustyö, joten kurssille ei kannata ilmoittautua, ellei ole varannut riittävästi aikaa työn tekemiseen. Keskimäärin työhön menee n. 80 työtuntia, mutta tehtävän aiheesta ja omista taidoista riippuen työtuntimäärä saattaa vaihdella huomattavastikin suuntaan tai toiseen. Jos työn aloittaa, sitä ei kannata lopettaa kesken, vaikka vähän vastustaisikin: harjoitustyön keskeyttäneet ovat muita heikommassa asemassa, kun valitaan labraryhmään pääseviä.

Kurssilta kannattaa ottaa kaikki hyöty irti, koska seuraava paikka, jossa ohjelmointitaitoja koetellaan, on yleensä Ohjelmistotuotantoprojekti ja siellä ohjelmoinnin oletetaan jo sujuvan rutiinilla.

Johdatus tekoälyyn (4 op)

  • 1. periodissa

Johdatus tekoälyyn -kurssin järjestely muuttuu syksylle 2010, eikä tarkempaa tietoa toistaiseksi ole. Aiemmin kurssi on koostunut pakollisista luennoista ja niiden pohjalta laadittavista oppimispäiväkirjoista. Luennoitsijat ovat olleet vierailevia. Kurssin sisältönä on nimensä mukaisesti tekoälyyn liittyviin ongelmien pintaraapaisu.

Laskennan mallit (6 op)

  • Tunnetaan myös nimellä Lama
  • Syksyisin

Kurssi luennoidaan koko lukukauden mittaisena niin, että viikossa on kaksi luento- ja kaksi laskarituntia.

Laskennan mallit on teoreettinen kurssi, jolla opetellaan varsin käytännöllisiä työvälineitä. Kurssilla käsitellään mm. laskennallisia ongelmia, äärellisiä automaatteja, säännöllisiä lausekkeita, kontekstittomia kielioppeja ja Turingin koneita. Kurssi saattaa tuntua hankalalta alun pallo-nuoli-automaattipiirtelyiden jälkeen, mutta kun tottuu lukemaan täsmällistä formaalia esitystapaa, itse asia ei olekaan niin kovin kummallista. Loppujen lopuksi kysymys on vain menetelmistä, joilla voidaan jäsentää ja käsitellä erilaisia määrämuotoisia merkkijonoja, kuten aritmeettisia lausekkeita, päivämääriä ja muuta vastaavaa.

Tutuiksi tulevat myös Turingin koneet, jotka ovat äärimmäisen kömpelö tietokoneen teoreettinen malli, mutta samalla myös yksinkertaisin mahdollinen mekaanisen laskentakoneen malli. Loppuhuipennuksena törmätään surullisenkuuluisaan pysähtymisongelmaan. Kun sen merkityksen onnistuu ymmärtämään (spoileri: tietokoneohjelma ei voi yleisessä tapauksessa selvittää, mitä toinen ohjelma tekee), ymmärtää jo paljon siitä, mitä ohjelmallisesti on mahdollista tehdä. Epäselvää on, mitä tämä kertoo ihmisen ajattelun rajoista. Vallitseva uskomus on, ettei ihminenkään voi yleisessä tapauksessa selvittää, mitä jokin tietokoneohjelma tekee.

Älä turhaan masennu, jos pumppauslemma ja kumppanit menevät aluksi kertakaikkiaan yli hilseen, monella muulla on sama tilanne. Eräs vitsi laitoksella onkin, että laitokselta on vaikea löytää opiskelijaa, joka osaisi pumppauslemman selittää ("meni kokeessa oikein, en tiedä mitä tein"). Kurssia käydessä ei välttämättä ole minkäänlaista mielikuvaa, mihin kurssilla käsiteltäviä asioita voisi tarvita, mutta myöhemmin opinnoissa asioihin voi törmätä esim. ohjelmointikielten kääntäjien tai rakenteisten dokumenttien käsittelyn yhteydessä, joista voitaneen mainita esimerkiksi XML-dokumenttien muuttaminen esimerkiksi HTML-esitysmuotoon. Kurssi kannattaa kuitenkin käydä läpi ajatuksen kanssa, koska mekaaninen ulkoapänttääminen ei juuri auta. Tietorakenteet -kurssin tapaan asiat pitää oikeasti tajuta, jotta kurssista suoriutuu.

Tietokantasovellus (4 op)

  • Ryhmiä melkein joka periodissa sekä kesäisin

Ohjelmistotekniikan menetelmät ja Tietokantojen perusteet ovat esitietovaatimuksena Tietokantasovellus-harjoitustyölle. Kurssi on käytännössä pienen SQL-relaatiotietokanntaa käyttävän WWW-sovelluksen laatimista (esim. yksinkertainen verkkokauppa). Tämän harjoitustyön keskeinen teema on tietokantojen hallintaan liittyvät asiat sekä myös huolelliseen suunnitteluun keskittyminen. Kurssi on monen webbikoodariksi aikovan mielestä erittäin hyödyllinen ja palkitseva. Jos tunnistit itsesi, kannattaa varoa ettei innostu liikaa ja tee vahingossa muutaman tuhannen rivin harjoitustyötä.

Opiskelijasta voi kurssilla kirjoitettavan dokumentaation määrä turhauttavalta ja suuri houkutus onkin tehdä dokumentit vasta viimeisenä iltana. Dokumenttien tarkoitus on kuitenkin opastaa opiskelijaa oikeaan suuntaan suunnittelessaan omaa sovellustaan. Harjoitustyön ohjaajaa saa käyttää surutta apuna sekä ohjelmiston suunnittelun ongelmien että dokumenttien laatimisen kanssa.

Itse toteutuksen tekeminen onkin sitten vähemmän työlästä, jos suunnittelu on kunnolla tehty. WWW-sivustolle tulevan rakennelmansa saa toteuttaa varsin monella tavalla ja tietokannoissakin on valinnan varaa. Suurin osa tekee harjoitustyönsä joko PHP:llä, Javalla tai Ruby on Railssillä, mutta jos intoa löytyy jonkin eksoottisemman ympäristön opettelemiseen niin sekin onnistuu.

Tietokoneen toiminta (4 op)

  • Tunnetaan myös nimellä TiTo
  • 2. periodissa

Kurssilla opitaan perusteet siitä, mitä tietokoneen sisällä oikeasti tapahtuu, eli tutustutaan mm. prosessorin toimintoihin, yhden ohjelman suoritukseen koneessa ja opetellaan hiukan symbolista konekieltä. Tällä konekielellä tosin ei ole kovinkaan paljon tekemistä oikeiden assemblerien (Masm, Nasm, Fasm) kanssa vaan kurssilla käytetään laitoksen omaan opetuskäyttöön väsättyä TTK91-assemblyä ja Titokone-simulaattoria. Pääpaino on kuitenkin enemmän teorian ymmärtämisessä. Monet väittävät kurssin olevan työläimpiä ensimmäisen vuoden peruskursseista. Kurssin sisältö jakaa opiskelijoita ehkä selvimmin kahteen leiriin: niihin jotka hehkuttavat ja niihin jotka vihaavat yli kaiken.

Laskuharjoituksiin tulee varata kohtuullisesti aikaa, sillä vastaukset harvemmin löytyvät suoraan lähdekirjallisuudesta. Ne on itse löydettävä soveltamalla opittua asiaa. TTK91-symbolinen konekieli vaikuttanee hieman kankealta mutta ajaa tehtävänsä. Moni on ihmetellyt, miksei opetuskielenä käytetä jotain oikeaa assemblyä. Vastaus on melko yksinkertainen: Kurssilla on tarkoitus oppia tietokoneen toimintaa eikä nykyisten assemblerien ominaisuuksia makroineen ja muine asioineen, joilla tietokoneen toimintaan liittyvät yksityiskohdat voisi välttää. Tietokoneen toimintaankin kurssi on loppujen lopuksi melko pintaraapaisu.

Rinnakkaisohjelmointi (6 op)

  • Tunnetaan myös nimellä Rio
  • Keväisin

Kurssin sisältö muuttuu keväälle 2011 eikä tarkempaa tietoa sisällöstä vielä ole. Aikaisempina vuosina kurssilla on käsitelty niin rinnakkaisuuteen liittyviä ongelmia (operaatioiden atomisuus), mekanismeja (semaforit, monitorit) kuin algoritmisia ratkaisujakin. Opetuskielenä on toiminut Java ja rinnakkaisuuden sisältävä C-toteutus. Kurssin painopistettä ollaan ilmeisesti jossain määrin suuntaamassa ohjelmointikielten rinnakkaisuudesta laitteistotasolle, esim. moniytimisiin arkkitehtuureihin.

Viikoittaisten laskuharjoitusten ohessa kurssilla toteutetaan Javan säikeitä hyödyntävä ohjelma ryhmätyönä. Vaikka kurssin nimi antaa olettaa, että kurssilla ohjelmoitaisiin enemmänkin, kurssi on perinteisesti ollut hyvin teoriapainoitteinen ja raskas. Formaalia (matemaattista) esitystapaakaan ei kurssilla kaihdeta ja välillä huomaa ihmettelevänsä, miksi asioita ei voitaisi vain esittää ihmisten kielillä. Kurssin valvottuna esitietovaatimuksena on Tietokoneen toiminta, mille ei tosin ole mitään järkiperusteita. Käytännön esitietovaatimuksena on ohjelmointitaito ja avoin suhtautuminen opetettavaan asiaan.

Kurssi on monen mielestä perus- ja aineopintojen vaikein. Kurssin hylkäämisprosentti on toisinaan huidellut jopa kuudessakymmenessä. Toisaalta kurssista täyden arvosanan saaneita on yllättävänkin paljon, jotka korostavat erityisesti ryhmätyön merkitystä oppimisen kannalta. Varsinaista hopealuotia kurssin läpäisyyn ei ole - kannattaa kokeilla tehdä kaikki tehtävät parhaansa mukaan ja ryhmässä. Monet tuskastuvat kurssiin ja tyytyvät vain opettelemaan asiat ulkoa. Silläkin tosin todetusti pääsee kurssista läpi.

Ohjelmistotuotanto (4 op)

  • Tunnetaan myös nimellä Ohtu
  • 4. periodissa

Kurssilla perehdytään ohjelmistotuotantoon, sen ongelmiin ja ketterään prosessimalliin. Ohjelmistotuotanto -kurssia voidaan pitää kurssin "Ohjelmistojen mallintaminen" moraalisena jatkeena. Kurssissa on viikottaisia laskaritehtäviä, jotka toteutetaan ryhmässä. Ryhmä pysyy vakiona koko kurssin ajan. Kurssiin sisältyy myös omassa ryhmässä toteutettava pieni projekti. Tähän projektiin hyödynnetään laadunvarmistustekniikoita kuten parikoodausta ja Code Coveragea. Kurssista on ajettu viime vuosina mahdollisimman käytönnönläheistä aiemman teoriapainoitteisuuden sijaan. Myös vesiputousmallista ollaan pyrkimässä ilmeisesti kokonaan eroon. On huhuttu, että kurssista ei ole erityisen helppo saada täyttä arvosanaa.

Kurssin hyväksytty suorittaminen on vaatimus Ohjelmistotuotantoprojekti -kurssille.

Ohjelmistotuotantoprojekti (9+1 op)

  • Tunnetaan myös nimellä OhtuProjekti
  • Syksyisin ja keväisin

Ohjelmistotuotantoprojektissa harjoitellaan projektin toteuttamista jotakuinkin reaalimaailmaa vastaavin menetelmin. Projekti toteutetaan 5-6 hengen ryhmässä. Projektilla on siis ihkaoikea asiakas (yleensä laitokselta, yliopistolta tai jostain yrityksestä), joka asettaa vaatimukset tuotteelle. Näihin vaatimuksiin ryhmän pitäisi sitten pystyä ohjelmistollaan vastaamaan mahdollisimman hyvin. Projektin aiheeseen ei voi vaikuttaa mutta haluamastaan ryhmästä voi esittää toivomuksen. Aihe voi olla periaatteessa mikä tahansa. Ei ole ollenkaan tavatonta, että ensitöikseen joutuu opettelemaan uuden ohjelmointikielen.

Kurssin päätyttyä tuotteeseen ei sisälly ylläpitovastuuta. Useat projektit menevät keskeneräisenä tuleville osanottajille jatkokehitykseen, mutta osa on päätynyt jopa oikeaan tuotantoonkin. Kurssin perimmäinen tarkoitus on kuitenkin harjoitella varsinaista prosessia enemmän kuin itse projektin toteuttamista. Ei kannata liikaa stressata että tuotteen tulisi olla valmis kurssin päättyessä. Ohjelmoimaankin pääsee varmasti tarpeeksi ja ohessa mahdolliset uudet työkalutkin tulevat väkipakostakin tutuksi.

Projekti toteutetaan käyttäen laitoksen omaa ketterää ohjelmistokehitysmenetelmää (Scrum-variaatio). Varsinaista projektipäällikköä ei ryhmässä ketterien menetelmien tapaan ole, ellei ryhmä sellaista välttämättä halua valita keskuudestaan. Kurssi on hyvin opettavainen ja ryhmä saa käytännössä lähes vapaat kädet itsensä toteuttamiseen. Ryhmätyön merkitys ja asiakkaan kanssa vaatimuksista vääntäminen ovat kurssin keskeisessä osassa. Ongelmilta (tai oikeastaan haasteilta) ei voi projektin edetessä välttyä ja moiset kannattaa ottaa oppimiskokemuksena. Kurssin arvostelu perustuu hyvin paljolta ryhmän vertaisarviointiin. Asiakkaan antamalla arvosanalla ei juuri käytännön merkitystä ei ole.

Kurssista saa eniten irti, jos sopii ryhmän kanssa erilaisten työtapojen ja menetelmien (esim. eri pituiset sprintit) kokeilemisesta, oikeilla työpaikoilla tällaisiä kokeiluja harvemmin pääsee enää toteuttamaan. Kurssin tärkein opetus lienee, että asiakkaan kaikkiin vaatimuksiin ei missään nimessä ole pakko suostua ja että tekniset hankaluudet pystytään todennäköisesti ohittamaan onnistuneilla neuvottelulla.

Kurssista saa kokonaisuudessaan 10 opintopistettä: Itse projektista saa 9 op ja yksi "lisäopintopiste" tulee "työelämään orientoivista opinnoista".

Tieteellisen kirjoittamisen kurssi (10 op)

  • Tunnetaan myös nimellä Tiki
  • Sisältää kandidaatin tutkielman
  • Syksyisin ja keväisin

Tieteellisen kirjoittamisen kurssi koostuu neljästä kirjallisesta työstä: referaatti, aine, kypsyysnäyte ja varsinainen kandidaatin tutkielma. Kaikki näistä neljästä työstä liittyvät samaan aihepiiriin. Alkujaan oli kaunis ajatus, että referaatin (2-4 sivua) ja aineen (10 sivua) saisi suoraan osaksi tutkielmaa (20 sivua), mutta tämä toteutuu nykyään harvoin. Samasta aihepiiristä huolimatta niiden sisältö ei välttämättä liity suoranaisesti toisiinsa. Tekstiä kurssilla tulee yhteensä tuotettua yhteensä siis lähemmäs 40 sivua. Käpistelijälle on tunnetusti tekstin tuottaminen ongelma, tieteellisestä kirjoittamisesta nyt puhumattakaan. Kurssissa ei välttämättä pärjää tosin hyväkään kirjoittaja, koska tieteellisten artikkelien kirjoittaminen ottaa hieman eri lähtökohdan kuin esseen, raporttien tai dokumentaation kirjoittaminen. Hermot menevät takuuvarmasti jossain vaiheessa mitättömiltä tuntuvien pikkuasioiden viilaamiseen, joita ohjaaja jaksaa ja jaksaa kaivaa esiin joka kerralla.

Ryhmät jaetaan sen perusteella, minkä olet ilmoittautumisessa ilmaissut mahdolliseski maisterilinjaksesi. Ryhmässä on 5-6 henkilöä, ohjaaja sekä valvoja. Valvojalla ei ole juuri muuta virkaa kuin varsinaisen tutkielman tarkastaminen. Ohjaajan kanssa sovitaan viikoittainen tapaamisaika. Ohjauksen taso vaihtelee, eikä suoria neuvoja välttämättä saa ohjaajalta missään vaiheessa. Tutkielman aihepiiriin kuuluvasta aiheesta pidetään myös esitelmä muulle ryhmälle. Ryhmällä ei sinällään ole omien laadittavien töiden kannalta muuta merkitystä kuin se, että referaatti, aine ja esitelmä todennäköisesti vertaisarvioidaan, tai ainakin kysytään kommentteja. Kurssin arvosanan määrää käytännössä vain tutkielman arvosana. Kurssi sisältää ohessa ns. kypsyysnäytteen, jossa pitää laatia onnistuneesti kirjallinen parin sivun mittainen kielellisesti huoliteltu teksti jostain tutkielman aihepiiristä.

Aiheenvalintakäytäntö vaihtelee ohjaajittain. Tutkielman aihepiirin aihe valitaan useimmiten valmiista listasta, mutta joissakin ryhmissä aihetta saa itsekin ehdottaa. Moni on ampunut myös itseään jalkaan ehdottamalla omaa aihepiiriä, ja on huomannutkin jälkeenpäin, että tutkimustietoa aihealueesta ei joko löydy ymmärrettävässä mudossa tai sitten löytyy aivan liikaa. Ennen oman aiheen ehdottamista kannattaa varmistaa, että aiheesta löytyy ainakin riittävästi geneeristä tutkimustietoa. Aihepiiri valitaan tosin jo ensimmäisessä tapaamisessa. Kurssiin sisältyy alkupuolella myös kymmenisen luentoa, joilla opetetaan tieteellisen kirjoittamisen tyyliä ja tiedonhaun perusteita.

Valinnaisia kursseja

C-Ohjelmointi (4 op)

  • Tunnetaan myös nimellä C
  • 3. periodissa

C on aineopintojen valinnainen kurssi, joka on tarkoitettu ohjelmoinnin perusasiat osaaville ja perustietorakenteet tunteville. Ensin kannattaa siis suorittaa suosiolla ensimmäisen vuoden ohjelmointikurssit harjoitustöineen sekä Tietorakenteet. Javalla ohjelmoineille kielen syntaksin omaksuminen on helppoa, mutta pelkän ulkoisen samannäköisyyden ei kannata antaa pettää itseään. C on käsitemaa-ilmaltaan ja rakenteiltaan varsin erilainen kieli kuin Java ja sitä myös käytetään hieman erilaisiin tarkoituksiin. C:llä tehdään mm. koneenläheisiä, suurta tehoa vaativia, usein tekstipohjaisia työkaluohjelmia. Javalla taas on mukavampi rakennella sekä ohjelmoijan että käyttäjän kannalta turvallisia sovelluksia, usein graafisia sellaisia - mikäli nopeus ei ole kriittisin tekijä.

Muistiosoittimien ja muistinhallinnan kanssa pelaaminen, joka Javassa on automaattista, voi osoittautua hankalaksi omaksua. Myöskään linkitettyjen listojen ohjelmointi, johon perehdytään varsin tarkkaan, ei tule vastaan ohjelmoinnin peruskursseilla. Kurssilla opetetaan nykyään myös puiden ja verkkojen (siis tietorakenteita nämäkin) käsittelyä, tosin vähemmällä tarkastelulla kuin esim. Tietorakenteet-kurssilla. Tämä kurssi tuo varsin mukavaa vaihtelua ensimmäisen syksyn Java-annostukseen varsinkin, jos olet ohjelmoinut C:llä aikaisemmin.

Kurssiin kuuluu pakollinen harjoitustyö, jota ilman kurssia ei siis läpäise. Vaikka harjoitustyö ei vaikuta suurelta, se on yllättävän työläs ja on useimmiten syy kurssin keskeyttämiselle. Sille kannattaa siis varata aikaa huomattavasti enemmän kuin se "viimeinen yö ennen palautusta".

Kurssin taitoja voi hioa vielä pidemmälle kurssilla "Unix-sovellusohjelmointi".