Tietojenkäsittelytieteen teoreettiset perusteet (3 ov)
Theoretical Foundations of Computer Science
Luennot 26.1.- 5.4. ma 12-14 ja to 10-12 TD106 Wilhelmiina Hämäläinen
(ilman skandeja etunimi.sukunimi@cs.joensuu.fi)
Laskuharjoitukset (2.2. - 21.4.)
ma 14-16 B179 Wilhelmiina Hämäläinen
ke 16-18 B180 Yevgeny Yusha (englanninkielinen ryhmä)
ke 16-18 B179 Anssi Kautonen
Ajankohtaista
- Kaikki päiväkirjat on nyt arvioitu!
Lopputulokset. Palautetilaisuus ti 15.6. klo 14-15 B179.
Luvassa mainetta ja kunniaa sekä kaikille yksityiskohtaista palautetta
(saat oman kopion arviointilomakkeesta
täytettynä)! Hyvää kesää!
- 2. välikoe
to 22.4. on nyt arvioitu.
Pisteet
kokeista ja harjoituksista sekä lopulliset pisteet perinteisellä
menetelmällä.
Arviointikriteerit. Palautetilaisuudesta ilmoitetaan pian! Jo sitä ennen voit poiketa tutustumaan kokeesi arvosteluun.
-
Kurssin loppupalaute
-
Kurssin arviointikriteerit. Oppimispäiväkirjan (kaikki tähän
mennessä kirjoitetut + loppuyhteenveto) palautuspäivä on ke 21.4. Jos
haluat korjailla vanhoja päiväkirjoja/käsitekarttaa, voit hakea
kommentoidut päiväkirjat katsottaviksi. Ohessa ongelmista
ja niiden (suunnitelluista) oppimistavoitteista. Voit käyttää sitä
apuna, kun arvioit omaa oppimistasi ja antaa palautetta ongelmista. Kerro
toki, jos opit jotain muuta ongelmien kautta!
- 1. välikokeen to 18.3.
tulokset. Yleiset piesteytyskriteerit löytyvät
täältä. Jokainen koetta yrittänyt sai 6 extrapistettä
aikapulasta. Tämän jälkeen tulokset olivatkin oikein hyvät, joukossa
mm. yhdet täydet pisteet ja yksi likitäydellisen suoritus! Voitte
tutustua koepapereihinne luennolla tai harjoituksissa. Jos et ole
vielä saanut mallivastauksia, voit käydä hakemassa ne Wilhelmiinalta.
- Haluatko extrapisteen laatimalla jonkin esimerkin kaikkien iloksi?
Ohessa joitain
tehtäviä, joihin voisi laatia esimerkin. Muutkin ovat
tervetulleita, myös hyvät tehtäväideat listaan! Mieti erityisesti,
mihin itse olisit kaivannut lisäesimerkkiä!
-
Kurssin puolivälipalaute
- FIRST- ja FOLLOW-joukkojen arvoitus
- Taidenäyttely ma 15.3. klo 12-14
- Runokirja
Lähetäthän Anssille automaattisi generoimia runoja?
- Ehdotus
oppimispäiväkirjojen arviointikriteereiksi
- Ongelmasta 1
- Yhteenveto
alkutestin tuloksista Jos testi oli kovin hankala, niin kannattaa
nyt asettaa itselle oppimistavoitteita, ja panostaa
1. harjoituksiin. Asioita harjoitellaan kyllä lisää kurssin aikana.
- Kurssille on luotu postituslista, jolla saat aina
akuuteinta informaatiota ja jonne voit vapaasti laittaa kysymyksiä,
kommentteja, ja osallistua keskusteluun. Listalle voit liittyä
lähettämällä sähköpostin osoitteeseen majordomo@joensuu.fi, jätä
otsikko tyhjäksi, ja tekstiosaan vain rivi "subscribe tfcs04". Lisää
ohjeita (Huom! Tänä vuonna listan nimi on tfcs04!)
- Muistathan aloittaa oppimispäiväkirjan!
Ensivaikutelmat ja odotukset ovat tärkeitä. Viikon opintopäiväkirja
palautetaan aina yhdessä ongelmaraportin kanssa maanantaisin.
- Teethän lähtötasotestin! Se antaa sekä itsellesi
että luennoijallesi hyvää palautetta, mitä kannattaa erityisesti
kerrata. Jotta testistä olisi hyötyä, se tulee tehdä
itsenäisesti. Tuloksella ei ole mitään vaikutusta arvosanaasi. Sen
sijaan jokainen testin omalla nimellään tehnyt saa 2
laskuharjoituspistettä! Palauta testi viimeistään ke 28.1. klo 20
mennessä.
Kuvaus
Kurssin keskeisenä sisältönä on ongelmien formaali
mallintaminen ja ratkaiseminen. Formaali mallintaminen voi kuulostaa
tylsältä, mutta se kätkee taakseen hyvin tärkeitä ja kiinnostavia
löytöjä. Ennen kuin ongelmaan voi alkaa suunnitella parasta
mahdollista ratkaisualgoritmia, täytyy tietää, kuinka vaikeasta
ongelmasta on kyse tai onko ongelma ylipäätänsä
ratkaistavissa. Toisaalta itse ratkaisu - sen olemassaolo tai
tehokkuus - on riippumaton käytettävästä ohjelmointikielestä tai
muusta laskennallisesta välineestä ja siksi puhtaan abstrakti ratkaisu
on useimmiten helpommin analysoitavissa. Ekskursioina kurssi esittelee
myös joukon kiinnostavia käytännön sovelluksia formaaleille
työkaluille, joihin tutustutaan (mm. hahmontunnistus, kääntäjät,
kasvikieliopit). Tietojenkäsittelytieteen teoria antaa myös hyvät
eväät filosofisille pohdinnoille tietokoneiden luomasta maailmasta
sekä ihmisen ja koneen kilpajuoksusta.
Esitiedot
Esitietoina edellytetään Johdatus tietojenkäsittelytieteeseen ja
matematiikan perusopintojakso tai vastaavat valmiudet. Kurssin alussa
kerrataan tarvittavat matemaattiset peruskäsitteet.
Kurssin suoritus
Kurssin voi periaatteessa suorittaa kolmella vaihtoehtoisella tavalla:
- Ongelmalähtöisesti (4 ov), jolloin suoritus koostuu ongelmaraporteista,
opimispäiväkirjasta sekä laskuharjoituksista. Välikokeet ovat
pakolliset, mutta voivat vain korottaa arvosanaa! Ongelmalähtöisestä
menetelmästä tarkemmin alla.
- Itseopiskellen, jolloin suoritus koostuu kahdesta välikokeesta ja
laskuharjoituksista. Luentoja pidetään n. puolet normaalista.
Välikokeet to 18.3. ja to 22.4.
- Loppukokeella.
Ongelmalähtöinen vaihtoehto on suositeltavin ja tutkimusten mukaan
myös oppimistulokset ovat sillä tavalla parhaimpia. Mikäli haluat
valita tämän luovan syväoppimismenetelmän, ole valmis
osallistumaan aktiivisesti "luentoihin" ja harjoituksiin sekä
panostamaan opiskeluun myös kotona. Vastineeksi ongelmalähtöiseen
oppimiseen osallistuvat saavat yhden ylimääräisen opintoviikon!
Ongelmalähtöinen oppiminen
Ongelmat
Ongelmalähtöinen oppiminen merkitsee sitä, että
perinteisten luentojen sijasta asioita opitaan ongelmia
ratkomalla. Aina välillä luennoija pitää pieniä opetustuokioita
tarpeen mukaan. Kuten lienet huomannutkin, ei tietoa voi "kaataa
päähän", vaan se on itse opittava. Ongelmalähtöisessä oppimisessa se
kuitenkin tapahtuu melkeinpä varkain ongelmia ratkoessa. Ainoana
ehtona on, että olet ennakkoluuloton ja valmis heittäytymään uusien
ongelmien kimppuun sekä tarpeeksi sinnikäs selättämään ne. Sinun ei
kuitenkaan tarvitse selviytyä yksin vaikeista asioista, vaan ongelmia
pohjustetaan ryhmissä ja itseopiskelun jälkeen tulokset puretaan
samassa ryhmässä. Tämän jälkeen luennoija voi vielä syventää opittua
ja paneutua juuri niihin asioihin, jotka olivat vaikeimpia.
Ongelmalähtöinen oppimisprosessi koostuu seuraavista vaiheista:
- Epäselvien käsitteiden selventäminen
- Ongelman määrittely
- Aivoriihi
- Ilmiötä kuvaavan selitysmallin rakentaminen
- Oppimistavoitteiden määrittely
- Itsenäinen opiskelu
- Opiskelutulosten purkusessio
Ongelmalähtöiseen metodiin tutustutaan ensimmäisellä
luentokerralla. Siksi on tärkeää, että olet paikalla heti
ensimmäisellä luennolla! Toimiva ongelmalähtöinen oppiminen
edellyttää myös aktiivista osallistumista luentoihin (=ongelmien
pohjustus- ja purkutilaisuuksiin). Jokainen ongelmanratkaisija
palauttaa viikottain ongelmaraportin sekä palan luentopäiväkirjaa,
joka sisältää ongelmaraportin sekä pohdintoja niin opitusta kuin oman
oppimisen edistymisestä.
Yksityiskohtainen aikataulu
- Johdanto
- Kurssin sekä ongelmalähtöisen oppimismetodin esittely,
ryhmäjako (ma 26.1.)
pdf
ps
- Matemaattiset matkaeväät (to 29.1.)
pdf
ps
- Ongelmien mallintaminen ja ratkeavuus, formaalit kielet ja
niiden hierarkia (ma 2.2., 1. tunti ongelmia, 2. tunti luento))
pdf
ps
- Äärelliset automaatit ja säännölliset kielet
- Kieliopit ja jäsentäminen
Kaikki materiaali tähän saakka
VIIKKO 8:
TAIDENÄYTTELY luennolla 15.3.
Välikoe luennolla 18.3.
- Turingin koneet ja rajoittamattomat kielet
pdf
- Turingin koneet: perusidea (viikko 9)
- Laajennoksia: moniuraiset ja moninauhaiset koneet (viikko 9)
- epädeterministiset <-> deterministiset koneet (viikko 9)
- Rajoittamattomat ja kontekstiset kieliopit (viikko 10)
- Ratkeavuus ja ratkeamattomuus
- Laskennan vaativuusteoriaa
Vapaaehtoinen
projektityö 1 ov
- Turingin koneiden aika- ja tilavaativuus
- NP-täydellisyys
Kirjallisuus
Kurssilla ei ole yhtä virallista kurssikirjaa, mutta sen sijaan joukko
suositeltavaa kirjallisuutta (ks. alla). Kannattaa silti tutustua
omatoimisesti muuhunkin kirjallisuuteen! Lisäksi pistän verkkoon
luentomateriaalia, joka kattaa koko kurssin sisällön (ja joista
luennoidaan tarpeen mukaan) pdf:nä - niitä voi käyttää runkona, joista
itse täydentää mieleisensä muistiinpanot. Paras tapa oppia on laatia
oma oppimateriaali!
-
Sipser, M. Introduction to the Theory of Computation.
(Hauskalukuinen, mielenkiintoisia esimerkkejä ja tehtäviä, mutta paikoin
liian suppea.)
-
Hopcroft, J.E., Motwani, R., Ulman, J.D. Introduction to Automata
Theory, Languages, and Computation. Addison-Wesley, 2001. (Varsin
perusteellinen, mutta asioita selitetty turhankin pitkästi. Hopcroftin ja
Ullmanin vanha painos on tiiviimpi, tosin hieman matemaattisempi.)
-
Kinber, E. & Smith, C. Theory of Computing. A Gentle Introduction.
Prentice Hall, 2001. (Hyvin havainnollinen, kiltti johdatus aiheeseen
:)
-
Lewis, H.R. & Papadimitriou, C.H. Elements of the Theory of
Computation, Second Edition, Prentice-Hall, 1998. (Klassikko, pätevä
ja perusteellinen, mutta ainakin 1. painos aika matemaattinen.)
-
Wood, D. Theory of Computation, Harper & Row, 1987.
-
Sudkamp, T.A. Languages and Machines. An Introduction to the Theory of
Computer Science. (Hyvä käsikirja jos haluat tietää enemmän etkä pelkää
matematiikkaa. Varsinkin rekursiiviset ja rekursiivisesti numeroituvat
kielet selitetty hyvin, vaatimattomammat kielet löytyvät kauniimmin muista
lähteistä.)
Muuta materiaalia