Ero sivun ”Kurssikuvauksia” versioiden välillä

Fuksiwikistä
(Ak: Uusi sivu: == Pakollisia kursseja == Tietojenkäsittelytieteen laitoksen tutkintouudistus astuu voimaan lukukaudelle 08-09, monista asioista on vielä epäselvyyttä eikä uusista kursseista ol...)
 
Ei muokkausyhteenvetoa
Rivi 3: Rivi 3:
Tietojenkäsittelytieteen laitoksen tutkintouudistus astuu voimaan lukukaudelle 08-09, monista asioista on vielä epäselvyyttä eikä uusista kursseista ole voitu vielä kirjoittaa kuvauksia. Lisäksi opetuskieli on mahdollisesti vaihtumassa Javasta Scalaksi.
Tietojenkäsittelytieteen laitoksen tutkintouudistus astuu voimaan lukukaudelle 08-09, monista asioista on vielä epäselvyyttä eikä uusista kursseista ole voitu vielä kirjoittaa kuvauksia. Lisäksi opetuskieli on mahdollisesti vaihtumassa Javasta Scalaksi.


=== Tietokone työvälineenä (2 ov, 4 op) ===
=== Tietokone työvälineenä (4 op) ===


* Tunnetaan myös nimellä Lapiokurssi tai pelkkä Lapio
* Tunnetaan myös nimellä Lapiokurssi tai pelkkä Lapio
* Tiiviskurssi lukuvuoden alussa (pääaineopiskelijat) sekä normaali kurssi 3. periodissa (sivuaineopiskelijat)
* 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ä
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
käytännön taitoja. Kurssilla opetellaan käyttämään laitoksella käytössä olevia
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.
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 osata, 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.  Kurssi on esitietovaatimuksena muille peruskursseille.


Kurssi on tutkinnonuudistuksen jälkeen pakollinen osa tietojenkäsittelytieteen kieli- ja viestintäopintoja.
=== Johdatus tietojenkäsittelytieteeseen (4 op) ===
 
Anni Rytkönen <br />
Marja Huovinen
 
=== Johdatus tietojenkäsittelytieteeseen (2 ov, 4op) ===


* 1. ja 2. periodissa
* 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ä oppimispäiväkirjoja pienryhmissä. Koska kurssilla ei ole koetta, kurssilla on yleensä pakollinen läsnäolo, joka on suunnilleen 3/4 osaa kerroista.
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ä.  
 
Kaikkein hyödyllisin kurssi on juuri fuksisyksynä, sillä kurssi sisältää kattavan yleiskatsauksen tietojenkäsittelytieteeseen ja valmistaa opiskelijaa myöhempiin opintoihin antamalla raamit kokonaisuudelle, johon koota tutkintosa. Kurssi pyrkii antamaan yleiskäsityksen alasta.


Eeva Nevalainen
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.


=== Ohjelmoinnin perusteet (5 op) ===
=== Ohjelmoinnin perusteet (5 op) ===


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


Kurssilla opetetaan fukseille, mitä ovat algoritmit, muuttujat, lauseet, lausekkeet,
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.
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 olisi syytä lukea kurssimateriaali yhteisen kielen
omaksumiseksi ja mennä sitten heti tenttiin. Opetuskielenä on Java.


=== Ohjelmoinnin jatkokurssi (4 op) ===
=== Ohjelmoinnin jatkokurssi (4 op) ===


* Korvaa kurssin Java-ohjelmointi, joka tunnetaan myös nimellä Java
* Tunnetaan myös nimellä OhJa
* 2. periodissa sekä uudelleen 4. periodissa
* 2. periodissa sekä uudelleen 4. periodissa


Kurssin Java-ohjelmointi kuvaus:
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.


Kun ohjelmoinnin perusteet ovat hallussa, syvennytään Javaan, luokkiin ja olioihin.
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.
Kurssilla on perinteisesti työläät laskarit, mutta opittavaa asiaakin on paljon ja harva fuksi sisäistää aivan kaiken kurssilla.
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
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ää.
Java-kielellä, jonka on kirjoittanut kurssia syksyisin luennoiva Arto Wikla. Materiaali
löytyy myös verkosta laitoksen www-sivuilta.


Kurssia seuraava erillinen harjoitustyö (2 ov, 4 op) on syytä suorittaa mahdollisimman pian
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.
näiden kurssien jälkeen. Huomaa kuitenkin, että harjoitustyön saa aloittaa vasta, kun
nämä kurssit on suoritettu (eli siis niistä on suoritusmerkintä)! Ohjelmat kannattaa
molemmilla kursseilla heti kättelyssä alkaa tehdä koneilla, ettei sitten harjoitustyössä
mene sormi suuhun - siellä kun ei ole enää aikaa opetella UNIX-perusteita ja ohjelmien
kääntämistä.


=== Ohjelmoinnin harjoitustyö (4 op) ===
=== Ohjelmoinnin harjoitustyö (4 op) ===


* Tunnetaan myös nimellä Java-labra
* Tunnetaan myös nimellä Javalabra
* Ryhmiä joka periodissa sekä kesäisin
* Ryhmiä joka periodissa sekä kesäisin


"Java-labra" laajentaa Java-kurssin asioita. Javan loppupuolen laskarit ovat juuri sitä
"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
tärkeää ja olennaista kamaa, jonka joutuu viimeistään täällä opettelemaan, vaikka se
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.
kurssilla skipataankin nopeasti ja kiireellä. Tätä tärkeää kamaa ovat mm. tiedostojen
 
käsittely, poik-keukset, rajapintaluokat sekä pakkaukset. Kannattaa siis höristää
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
korviaan jo Java-kurssilla näitä avainsanoja kuullessaan, vaikka mieli tekisikin jättää
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.
parit viimeiset laskarit väliin. Myös Java-kurssin aikana mahdollisesti hankittu
API-kuvausten lukutaito on hyödyllinen esitieto.


Labrassa on myös runsaasti kokonaan ohi Ohjelmoinnin perusteiden ja Java-kurssin
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ä.
vaatimusten olevaa uutta ja ihmeellistä asiaa: kirjastopakkaukset eli Javan valmiit
työkalut, graafisen käyttöliittymän ohjelmointi (Swing-komponenteilla),
ohjelman suunnittelu olioita käyttäen, koodin kommentointi ja testaus, projektin
dokumentointi... 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ä
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
niin upean kuin osaa, mutta parasta olisi tässä vaiheessa pitää liika into pussissa.
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).
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ä, jos aiot saada ohjelman valmiiksi...


Labraopetus koostuu alun yhteisluennoista, ryhmätapaamisista ja viikoit-taisista
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
henkilökohtaisista ohjauspalavereista. Alkuluennoilla käydään läpi mm. graafisen
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.
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 yhdessä vaikeita kohtia. Tapaamisten lisäksi ohjaajilla on päivystysajat,
jolloin päivys-tävältä ohjaajalta saa käydä kysymässä apua. Labraneuvonta toimii
kakkoske-rroksen aulassa (tarkat neuvonta-ajankohdat ilmoitetaan kurssilla).


Työn alkaessa pääsee yleensä itku. Joudut synkkään metsään vain voiveitsen kanssa. Työ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ää.
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 Java-ohjelmointi on tullut suoritettua hieman
horjuen (alle kolmosen arvosanalla), on syytä suosiolla lisätä parikymmentä tuntia
aikatauluun. Joskushan ne esitiedot on hankittava - viimeistään labratyön ohessa ne saa
kantapään kautta, mutta ei ilmaiseksi, vaan useiden hikisten lisätyötuntien hinnalla.
Esitiedoista on hyötyä: jos sinulla on jo ammattillista kokemusta koodauk-sesta tai
tieteellisten raporttien kirjoittamisesta, voit ehkä hieman pienentää arviota
tuntimäärästäsi.


=== Ohjelmistojen mallintaminen (4 op) ===
=== Ohjelmistojen mallintaminen (4 op) ===


Korvaa kurssin Ohjelmistotekniikan menetelmät (4 op), jonka kuvaus seuraavassa:
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.
 
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 hitusen testausta ja versionhallintaa, jotka ovat tärkeitä ohjelmointityön apuvälineitä.
Tämän kurssin asioista huhutaan olevan hyötyä
Ohjelmoinnin harjoitustyön dokumentoinnissa ja erityisesti kurssista on hyötyä harjoitustyössä "Tietokantasovellus", jolle se on pakollinen esitietokurssi.


=== Tietokantojen perusteet (4 op) ===
=== Tietokantojen perusteet (4 op) ===
Rivi 133: Rivi 69:
* 2. periodissa sekä uudelleen 4. periodissa
* 2. periodissa sekä uudelleen 4. periodissa


Tietokantojen perusteet -kurssi opettaa relaatiokannat ja SQL:n. Nämä kannattaa painaa
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.
alusta alkaen hyvin päähän, sillä niitä tullaan tarvitsemaan lähes joka välissä. Erikoista tässä kurssissa on
se, että perinteisiä laskareita ei ole, vaan kaikki tehtävät tehdään koneella
www-liittymän 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 joskus hankalaltakin tuntuvan
SQL-kielen opettelu on kurssin suorituksen kannalta olennaisen tärkeää.  


Kummankin kurssin suoritus tapahtuu käymällä luennoilla ja kurssikokeissa ja
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
suorittamalla lasku- ja mikroharjoituksia. Vain ahkera harjoittelu tekee mestarin, ja
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ä.
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ä.


=== Tietokantasovellus (4 op) ===
=== Tietokantasovellus (4 op) ===


* Aikaisemmin Tietokantasovellusten harjoitustyö eli Tsoha, vanhusten kesken Infolabra tai Infon labra
* Ryhmiä melkein joka periodissa sekä kesäisin
* Ryhmiä joka periodissa sekä kesäisin


Ohjelmistotekniikan menetelmät ja Tietokantojen perusteet ovat esitietovaatimuksena
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ä.
Tietokantasovellus-harjoitustyölle. Se on pääasiassa pienen WWW-sovelluksen
laatimista SQL-kantaa hyväksi käyttäen.
Tämän harjoitustyön keskeinen teema on tietokantojen hallintaan liittyvät asiat sekä
myös huolelliseen suunnitteluun keskittyminen.  


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.
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
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.
tehty. WWW-sivustolle tulevan rakennelmansa saa toteuttaa varsin monella tavalla tietokantamoottoreissakin on valinnan varaa. Suurin osa kurssin toteutuksista tehdään joko PHP:llä tai Javalla, mutta jos intoa löytyy jonkin eksoottisemman ympäristön opettelemiseen niin sekin onnistuu.
 
Jani Kielenniva <br />
Niki Eskola <br />
Eeva Nevalainen


=== Tietokoneen toiminta (4 op) ===
=== Tietokoneen toiminta (4 op) ===


* Tunnetaan myös nimellä Tito
* Tunnetaan myös nimellä TiTo
* 2. periodissa sekä uudelleen 4. periodissa
* 2. periodissa


Kurssilla opitaan perusteet siitä, mitä tietokoneen sisällä oikeasti tapahtuu, eli
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
tutustutaan mm. prosessorin toimintoihin, yhden ohjelman suoritukseen koneessa ja
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.
opetellaan hiukan symbolista konekieltä. Tällä konekielellä tosin ei ole kovinkaan
paljon tekemistä assemblerin kanssa vaan kurssilla käytetään laitoksen omaan
opetuskäyttöön väsättyä 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. Oppimisessa auttaa Häkkisen hyvä kurssimoniste, jossa monet
monimutkaisetkin asiat on selitetty varsin helppotajuisesti. Laskuharjoituksiin tulee
varata kohtuullisesti aikaa, sillä vastaukset harvemmin löytyvät suoraan
lähdekirjallisuudesta - ne on itse löydettävä soveltamalla opittua asiaa.


Anni Rytkönen <br />
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.
Jenny Sandgren <br />
Niki Eskola


=== Tietorakenteet (8 op) ===
=== Tietorakenteet (8 op) ===

Versio 20. kesäkuuta 2010 kello 02.03

Pakollisia kursseja

Tietojenkäsittelytieteen laitoksen tutkintouudistus astuu voimaan lukukaudelle 08-09, monista asioista on vielä epäselvyyttä eikä uusista kursseista ole voitu vielä kirjoittaa kuvauksia. Lisäksi opetuskieli on mahdollisesti vaihtumassa Javasta Scalaksi.

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.

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.

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.

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ää.

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.

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ä.

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.

Tietorakenteet (8 op)

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

Kas tässäpä vasta mielenkiintoinen ja hyödyllinen kurssi, varsinkin ohjelmointitouhuista innostuneille. 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 tietoalkioröykkiöitä. Oikeastaan vasta kurssin asiat hallittuaan voi sanoa oikeasti osaavansa koodata. Tirakurssi on myös ensimmäisiä peruskursseja, joilla kurkistetaan tietojenkäsittelyn teoreettisempaan puoleen (algoritmit ja niiden analysointi).

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

Kurssin sisällön luonteesta johtuen opiskelijan on hyvä verestää matematiikan taitojaan ennen kurssia ja kurssin pakollinen esitietovaatimus onkin "Johdatus diskreettiin matematiikkaan". Matemaattista esitietovaatimusta ei kuitenkaan ole syytä kavahtaa, sillä loppujen lopuksi itse käsiteltävät asiat ovat suhteellisen yksinkertaisia.

Lajitovereideni keskuudesta on kuulunut hieman jupinaa, että TIRA:n kurssi olisi aika vaikea ja työläs - itse en tällaista havainnut, koska kaikki oli mielestäni niin kiinnostavaa, että asioita oli suorastaan ilo opiskella (olenko perverssi?). Myönnettäköön, että kurssille on tungettu runsaasti tavaraa ja osa laskaritehtävistä vaatii kohtuuttoman paljon aikaa, paperia ja hermoja, mutta ahkeralla ja huolellisella työskentelyllä niistäkin selviää. Parhaiten asiat oppii, kun tekee kiltisti laskaritehtävät (ainakin edes yrittää) ja osallistuu aktiivisesti luennoille ja laskareihin. Jos jokin asia menee yli ymmärryksen, kannattaa heti vaatia luennoijaa tai laskarinpitäjää vääntämään sama rautalangasta, ettei tajuntaan jää mustia aukkoja.

Pauli Misikangas
Marja Huovinen

Tietorakenteiden harjoitustyö (4 op)

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

Tietorakenteiden harjoitustyö eli TIRA:n labra on suoraa 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 varsin 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 huomattavasti 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ä.

Monet ovat kokeneet TIRA:n labran varsin antoisaksi kurssiksi: työtä tehdessä saa rutkasti käytännön kokemusta mm. UNIX-käyttöjärjestelmästä, ohjelmointityökaluista ja tekstinkäsittelyohjelmista. Kurssilta kannattaa ottaa kaikki hyöty irti, koska seuraava paikka, jossa ohjelmointitaitoja koetellaan, on yleensä Ohjelmistotuotantoprojekti ja siellä ohjelmoinnin oletetaan jo sujuvan rutiinilla.

Pauli Misikangas

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 (matemaattista) 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 Ricen lauseeseen (Kaikki Turingin koneiden epätriviaalit semanttiset ominaisuudet ovat ratkeamattomia.), jonka todistus vääntää ensinäkemältä aivot umpisolmuun. Jos lauseen 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. 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 XML-dokumenttien muuttaminen esimerkiksi HTML-esitysmuotoon. Kurssi kannattaa kuitenkin käydä läpi ajatuksen kanssa, koska mekaaninen ulkoapänttääminen ei juuri auta. Asiat pitää oikeasti tajuta, jotta kurssista suoriutuu.


Maria Huovinen
Jouni Siren
Tommi Tuura 71660185027256859176578

Tietoliikenteen perusteet (4 op)

  • Tunnetaan myös nimellä Tilpe
  • 4. 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.

Mikäli kurssilla vastaantuleva lyhenteiden ja käsitteistön määrä alkaa hirvittää, kurssilla käytettävä kurssikirja on mitä mainion apu pelonlievitykseen.

Harri Hämäläinen

Tietoturvan perusteet (4 op)

Johdatus tekoälyyn (4 op)

Rinnakkaisohjelmointi (4 op)

Ohjelmistotuotanto (4 op)

Ohjelmistotuotantoprojekti (9 op)

Tieteellisen kirjoittamisen kurssi (x op)

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ä Tira. Java-kurssin käyneille 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 perusteissa. Kurssilla opetetaan nykyään myös puiden ja verkkojen (siis tietorakenteita nämäkin) käsittelyä, tosin hieman 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".

Anni Rytkönen
Niki Eskola