2 625
muokkausta
Ei muokkausyhteenvetoa |
Ei muokkausyhteenvetoa |
||
Rivi 99: | Rivi 99: | ||
* 1. ja 2. periodissa sekä uudelleen 3. ja 4. periodissa | * 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). | |||
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 | |||
sanoa oikeasti osaavansa koodata. | |||
kurkistetaan tietojenkäsittelyn teoreettisempaan puoleen (algoritmit ja niiden | |||
analysointi). | |||
Kuten kurssin nimestä voi | 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 | ||
erilaisten tietorakenteiden käsittelyyn. | 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ä. | |||
lähtemättömästi | |||
eksoottisemmistakin tietorakenteista kuten puista, | |||
Tietorakenteiden lisäksi kurssilla käydään läpi muutamia mielenkiintoisia haku- ja | |||
järjestysalgoritmeja ja raapaistaan kevyesti | |||
Kurssin | 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. | |||
laskaritehtävät | |||
laskarinpitäjää vääntämään | |||
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) === | === Tietorakenteiden harjoitustyö (4 op) === | ||
* Tunnetaan myös nimellä Tiralabra | * Tunnetaan myös nimellä Tiralabra | ||
* Ryhmiä joka periodissa | * Ryhmiä melkein joka periodissa ja kesäisin | ||
Tietorakenteiden harjoitustyö eli | 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ä. | ||
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 | |||
Sallitut ohjelmointikielet riippuvat pitkälti harjoitustyön ohjaajasta, mutta yleensä | |||
laitoksella opetuskielinä olevat ohjelmointikielet ovat käytössä. | |||
Harjoitustyö on | 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 | ||
kurssille ei kannata ilmoittautua, ellei ole varannut riittävästi aikaa työn tekemiseen. | 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ä. | ||
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. | |||
paikka, jossa ohjelmointitaitoja koetellaan, on yleensä Ohjelmistotuotantoprojekti ja | |||
siellä ohjelmoinnin oletetaan jo sujuvan rutiinilla. | |||
=== Laskennan mallit (6 op) === | === Laskennan mallit (6 op) === | ||
Rivi 166: | Rivi 130: | ||
Kurssi luennoidaan koko lukukauden mittaisena niin, että viikossa on kaksi luento- ja kaksi laskarituntia. | 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 | 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. | |||
=== Tietoliikenteen perusteet (4 op) === | === Tietoliikenteen perusteet (4 op) === | ||
* Tunnetaan myös nimellä Tilpe | * 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. | 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. | Mikäli kurssilla vastaantuleva lyhenteiden ja käsitteistön määrä alkaa hirvittää, kurssilla käytettävä kurssikirja on mitä mainion apu pelonlievitykseen. | ||
=== Tietoturvan perusteet (4 op) === | === Tietoturvan perusteet (4 op) === | ||
Rivi 208: | Rivi 164: | ||
* 3. periodissa | * 3. periodissa | ||
C on aineopintojen valinnainen kurssi, joka on tarkoitettu ohjelmoinnin perusasiat | 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 | ||
osaaville ja perustietorakenteet tunteville. Ensin kannattaa siis suorittaa suosiolla | |||
ensimmäisen vuoden ohjelmointikurssit harjoitustöineen sekä | |||
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ä. | nopeus ei ole kriittisin tekijä. | ||
Muistiosoittimien ja muistinhallinnan kanssa pelaaminen, joka Javassa on automaattista, | 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. | ||
voi osoittautua hankalaksi omaksua. Myöskään linkitettyjen listojen ohjelmointi, johon | |||
perehdytään varsin tarkkaan, ei tule vastaan | |||
opetetaan nykyään myös puiden ja verkkojen (siis tietorakenteita nämäkin) käsittelyä, | |||
tosin | |||
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 | 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 | ||
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". | "viimeinen yö ennen palautusta". | ||
Kurssin taitoja voi hioa vielä pidemmälle kurssilla "Unix-sovellusohjelmointi". | Kurssin taitoja voi hioa vielä pidemmälle kurssilla "Unix-sovellusohjelmointi". | ||