Laskennan teoria (5 op/3 ov)

Ajankohtaista


Luennot 6.3.-10.5. 2007

ti 16-18 ja to 14-16 2D106
Luennoija: Wilhelmiina Hämäläinen (ilman skandeja etunimi.sukunimi@cs.joensuu.fi)

Välikokeet

ma 23.4. 14.00-17.00 ja pe 11.5. 12.00-15.00

Laskuharjoitukset 14.3.->

Mikko Vinni
Ryhmä 1 ke 14-16 B180
Ryhmä 2 to 12-14 B180


Kaikki tehtävät löytyvät sekä luentomonisteesta että ohesta pdf:inä:
Viikko Tehtävät
1 (14.-15.3.)Luku 2.8: teht. 2 ja 4; Luku 3.5: teht. 1 ja 3; Luku 4.9: teht. 1
(Viimeinen tehtävä ei edellyttä kotitöitä, vain aktiivista osallistumista itse session aikana.)
2 (21.-22.3.)Luku 4.9: tehtävät 2,3,4,7,9,11
3 (28.-29.3.)Luku 4.9: tehtävät 17,20,21,23,25,26
Teht. 20c) on hieman hankala, mutta onnistuu helposti, kun luet luvun 4.6 Säännöllisten kielten sulkeumaominaisuuksista.
4 (4.4. ja 12.4.)Luku 4.9: teht. 35, 38; Luku 5.13: teht. 1, 2, 3, 5
Extratehtävä Luku 4.9 teht. 27 tuottaa 2 extrapistettä! Palauta ohjelmakoodi ja esimerkkitulosteita 12.4. mennessä
5 (18.-19.4.)Luku 5.13: teht. 9, 11, 12, 15, 16, 20
6 (25.-26.4.)Luku 5.13: teht. 21, 22, 23, 25, 28
Lisätehtävä: Anna palautetta luentomonisteesta tähän mennessä.Kysymykset ohessa. 1 harjoituspiste vastaajille
7 (2.-3.5.)Luku 5.13: teht. 30, 31, 32; Luku "6.5": 4, 5, 14
8 (9.-10.5.)Luku 7.10: teht. 2, 7, 13, 15, 16, 19
Lisätehtäviä (kukin 1 harjoituspiste): Täytä kurssikyselypalaute!
Anna palautetta luentomonisteen loppuosasta. Huom! Piste edellyttää myös omaa esimerkkiä tms. Kysymykset ohessa.
Analysoi kurssilla vaadittavat esitiedot. Kysymykset ohessa.

Esitiedot

Kurssilla tarvitaan matematiikan ja ohjelmoinnin perustaitoja. Matematiikan taitojesi riittävyydestä saat hyvän käsityksen suorittamalla alkutestin. 2005 aloittaneille Diskreetit rakenteet on pakollinen kurssi ja sen tulee olla suoritettuna ennen osallistumista Laskennan teoriaan. Aiemmin aloittaneillekin DR on suositeltava, mutta ei pakollinen. Mikäli et ole suorittanut Diskreetit rakenteet -kurssia, sinun on syytä kerrata tarvittavaa matematiikkaa ennen Laskennan teorian alkua oheisesta materiaalista (sama ps:nä).
Myös ohjelmointitaitoja tarvitaan jonkin verran. Harjoituksissa on jonkin verran ohjelmointitehtäviä ja tietysti sinun tulee ymmärtää materiaalin esimerkkitoteutukset. Erityisesti rekursio-käsitteen ymmärtäminen on tarpeellista monissa tehtävissä. Jokaisella tulee olla pakolliset Ohjelmointi-kurssit suoritettuna ennen Laskennan teoriaan osallistumista.

Kuvaus

Laskennanteoria jaetaan perinteisesti kahteen osaan:
  1. Laskettavuuden teoria (Theory of computability), jossa tutkitaan ongelmien ratkeavuutta ja arvioidaan niiden vaikeutta ennen ratkaisualgoritmin laatimista.
  2. Laskennan vaativuusteoria (Theory of computational complexity), jossa arvioidaan ongelman laskennallista tila- ja aikavaativuutta.
Tällä kurssilla käsittelemme vain laskettavuuden teoriaa, mutta kurssin päätteeksi voit tehdä vapaaehtoisen harjoitustyön laskennan vaativuusteoriasta.



Kurssilla saat hyvät eväät arvioida mitä tahansa ongelmia:
  1. Onko ongelma luonteeltaan laskennallinen? Ts. voisiko sen edes periaatteessa ratkaista tietokoneella?
  2. Jos ongelma on laskennallinen, niin onko se ratkeava? Ts. voiko sille laatia ratkaisuohjelman, joka pysähtyy aina kaikilla syötteillä?
  3. Jos ongelma on ratkeava, niin kuinka vaikea se on? Ennen ratkaisualgoritmin laatimista voimme jo erottaa helpot ja nopeasti ratkaistavat ongelmat työläämmistä. Tällä kurssilla jaamme ongelmat Chomskyn hierakian mukaan kolmeen vaikeusluokkaan, joita vastaavat säännölliset kielet, kontekstittomat kielet ja rajoittamattomat kielet.
  4. Jos ongelma on ratkeava ja sen vaikeus tunnetaan, niin miten se kannattaa ratkaista? Tämä kysymys menee osittain kurssin aihepiirin ulkopuolelle, mutta tulet oppimaan näppäriä ja tehokkaita menetelmiä tietyn tyyppisiin ongelmiin.
Ekskursioina kurssi esittelee myös joukon kiinnostavia käytännön sovelluksia formaaleille työkaluille, joihin tutustutaan (esim. hahmontunnistus, kääntäjät, kasvikieliopit). Laskennan teoria antaa myös hyvät eväät filosofisille pohdinnoille tietokoneiden luomasta maailmasta sekä ihmisen ja koneen kilpajuoksusta.

Kurssin suoritus

Opiskelijoiden toiveesta kurssi pidetään tänä vuonna perinteiseen tapaan! Kurssin suoritus koostuu laskuharjoituksista saatavista pisteistä ja välikoeiden pisteistä. Laskuharjoituksista voi saada maksimissaan 25% kokonaispisteistä.

Arvioitu työmäärä:
Viikottain 6 h kontaktiopetusta, yht. 48h
Harjoitustehtävien ratkaisu 6 h/vk, yht. 48 h
Teorian opiskelu 2h/vk, yht. 16 h
Kokeet + niihin valmistautuminen 10-20h
Yht. 122-132h
(5 op kurssin keskimääräisen työmäärän tulisi olla 5*26=130 h.)

Alustava ohjelma

Kerta Pvm Aihe
1to 8.3. Kurssin esittely. Mitä on laskennan teoria?
2ti 13.3. Äärelliset automaatit. Automaatin ohjelmatoteutus.
3to 15.3. Automaatin minimointi. Epädeterministiset automaatit.
4ti 20.3. Säännölliset lausekkeet, epsilon-automaatti.
5to 22.3. Automaatit <-> säännölliset lausekkeet.
6ti 27.3. Säännöllisten kielten rajoitukset, Pumppauslemma
7to 29.3. Kontekstittomat kielet ja kieliopit
8ti 3.4. Pinoautomaatit
-to 5.4. ja ti 10.4. PÄÄSIÄISLOMA
9to 12.4. Jäsennys
10ti 17.4. Rekursiiviset jäsentäjät
11to 19.4. Kertausluento
-ma 23.4. 1. VÄLIKOE
12ti 24.4. Chomskyn normaalimuoto. CYK-algoritmi.
13to 26.4. Turingin koneet
-ti 1.5. VAPPULOMA
14to 3.5. Ratkeavuus; Universaalikieli ja -koneet
15ti 8.5. Ratkeamattomuus
16to 10.5. Kertausluento
-pe 11.5. 2. VÄLIKOE


Kurssin lopuksi voit suorittaa vapaaehtoisen projektityön laskennan vaativuusteoriasta (2 op).

Kirjallisuus

Luentomoniste Hämäläinen, W.: Hauskaa ja havainnollista laskennanteoriaa. Rekursiosta. Tai Orponen, Pekka: Automaatit ja kieliopit. Tilauslista täytetään 1. luennolla!

Kurssilla ei ole yhtä virallista kurssikirjaa, mutta sen sijaan joukko suositeltavaa kirjallisuutta (ks. alla). Luentomoniste kattaa koko kurssin sisällön, mutta saattaa olla paikoin tiivis, joten kannattaa ehdottomasti käyttää tukena kirjoja. Luentomoniste sopii hyvin myös omien kattavien muistiinpanojesi rungoksi.

Muuta materiaalia