Edward Sapir ja Benjamin Whorf esittivät viime vuosisadan alkupuolella kielitieteellisen

Koko: px
Aloita esitys sivulta:

Download "Edward Sapir ja Benjamin Whorf esittivät viime vuosisadan alkupuolella kielitieteellisen"

Transkriptio

1 Luku 1 Johdanto Edward Sapir ja Benjamin Whorf esittivät viime vuosisadan alkupuolella kielitieteellisen hypoteesin, joka tunnetaan nykyisin nimellä Sapirin Whorfin hypoteesi. Sen heikompi muoto, johon nykyisetkin kielitieteilijät enemmän tai vähemmän uskovat, kuuluu: Kieli vaikuttaa ajatteluun. Myös ohjelmoinnin yhteydessä tämä heikompi muoto on totta: se, mitä ohjelmointikieltä osaa, vaikuttaa siihen, miten ohjelmointiongelmia ryhtyy ratkaisemaan. Kaikki kielet eivät ole tässä suhteessa samanarvoisia: esimerkiksi Pascalin ja C:n tukema ajattelutapa on niin samanlainen, että kummastakin kielestä voi varsin vähällä vaivalla siirtyä toiseen. Vastaavanlainen samankaltaisuus pätee, tosin vähemmässä määrin, myös C++:aan ja Javaan. Jotkin kielet puolestaan suosivat niin erilaisia ajattelutapoja, että ne tuntuvat aluksi aivan eri maailmoilta, eikä toisen osaamisesta ole kovin suurta apua toisen osaamisessa. Ajatustavoiltaan läheisten kielten katsotaan yleensä kuuluvan samaan kieliparadigmaan, mutta niiden väliset rajapyykit eivät ole useinkaan kovin selvät. Kieliparadigmoille sukua ovat ohjelmointiparadigmat, tosin aika usein näiden välistä eroa ei nähdä (myös tämän kirjoittaja on ne monesti sekoittanut!). Kukin ohjelmointiparadigma on oikeastaan idealisoitu versio niistä ajattelutavoista, joita vastaava kieliparadigma suosii. Alan Perlis kirjoitti kaksi vuosikymmentä sitten: A language that doesn t affect the way you think about programming, is not worth knowing. 1 Minä kääntäisin tämän väitteen toisin päin: A language that affects the way you think about programming is worth knowing. Itse asiassa väittäisin, että jokaisen ohjelmointiin vakavissaan suhtautuvan tulisi tuntea ainakin pari-kolme eri kieliparadigmoihin kuuluvaa kieltä eli oikeastaan pari-kolme eli ohjelmointiparadigmaa. 1. Alan J. Perlis, Epigrams in Programming, ACM SIGPLAN Notices, vol 17 no 9 (September 1982). 1

2 2 LUKU 1. JOHDANTO Jyväskylän yliopiston informaatioteknologian tiedekunnassa pääasiassa opetetaan olioparadigman mukaista ajattelua. Tässä tässä monisteessa tutustutaan funktioparadigmaan. Muita suhteellisen tunnettuja ovat 1970-luvulla suosittu toimintoparadigma (procedural paradigm) sekä erityisesti tekoälyn yhteydessä tavattava logiikkaparadigma. Funktio-ohjelmointi tunnetaan maailmalla nimellä functional programming, ja meilläkin on käytössä tuosta suoraan väännetty suomennos funktionaalinen ohjelmointi. Ongelmana tuossa termissä on se, että functional on helppo käsittää tarkoittamaan toimivaa eikä funktioihin liittyvää. Termi funktioohjelmointi kertoo paremmin, mistä on kyse, on hyvä vastine tutulle käsitteelle olio-ohjelmointi ja lisäksi se on samaa sukua kuin Tietotekniikan liiton ATK-sanakirjan ehdotus funktiokieli functional language. Funktio-ohjelmoinnissa on monta koulukuntaa, joilla kullakin on oma näkemyksensä siitä, mitä funktio-ohjelmointi on. Tässä on joitakin (osin keskenään ristiriitaisia) luonnehdintoja: Funktio-ohjelmat ovat (matemaattisia) funktioita syötteeltä tulokselle. (formalistinen näkemys) Funktio-ohjelmointi on ohjelmointityyli, jossa funktioita (aliohjelmia) käsitellään rutiininomaisesti datana. (pragmaattinen näkemys) Funktio-ohjelmassa ei sovi käyttää sijoituslausetta eikä muuttujien arvoja sovi muuttaa sen jälkeen, kun ne on alustettu. Funktio-ohjelmilla ei ole tilaa. (puristinen näkemys, bondage & discipline) Funktio-ohjelma on ohjelma, joka on kirjoitettu funktiokielellä. (väistöliike) Yhteistä kaikille on funktioiden korostaminen ohjelmoinnissa. 1.1 Miksi opiskella? Yksi syy opiskella funktio-ohjelmointia tuli esille jo yllä: ohjelmoijan on hyvä tuntea mahdollisimman monta ohjelmointiparadigmaa, ja funktio-ohjelmointi on yksi niistä. Toinen syy seuraa siitä havainnosta, että funktio-ohjelmoinnissa kehitetyt tekniikat ovat hiljalleen soljuneet osaksi ohjelmoinnin valtavirtaa tosin osa niistä on toki valtavirtaohjelmoinnissa itsenäisesti uudelleen keksitty. Esimerkiksi GoF-suunnittelumalli 2 COMMAND on puhtaimmillaan oleellisesti täysi- 2. Erich Gamma, Richard Helm, Ralph Johnson ja John Vlissides: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.

3 1.2. MUUTA MATERIAALIA 3 valtaisen funktion simulointia. Javan tuleva geneerisyyslaajennus on tiettävästi perua Pizza-kielestä, jonka kehittäjien joukossa on tunnettuja funktioohjelmoinnin harjoittajia ja tutkijoita. Näin ollen funktio-ohjelmoinnin tuntemus näyttäisi antavan ohjelmoijalle etukäteisvilkaisun siitä, minkälaista tulevaisuuden valtavirtaohjelmointi saattaisi olla. Kolmas syy johtuu funktio-ohjelmoinnin pohjalla olevan ohjelmointikäsityksen selkeydestä ja yksinkertaisuudesta. Funktio-ohjelmointi tarjoaa selkeän näkymän modernin ohjelmoinnin tärkeisiin piirteisiin kuten abstraktioon, geneerisyyteen, polymorfismiin ja ylikuormitukseen. 1.2 Muuta materiaalia Kirjallisuus Funktio-ohjelmointi on ensisijaisesti taitolaji, ja siten sen voi oppia monien lähteiden kautta, kunhan muistaa harjoitella sitä myös käytännössä. Kuten ohjelmointikirjat yleensäkin, funktio-ohjelmoinninkin oppikirjat lähestyvät aihettaan yhden, tietyn kielen näkökulmasta unohtaen muut (ja epäilemättä tämä moniste on yhtä syyllinen kuin muutkin). Ainakin seuraavat ovat varteenotettavia oppikirjoja: Simon Thompsonin mainio Haskell: The Craft of Functional Programming (toinen laitos) opettaa funktio-ohjelmoinnin alkeet Haskellin näkökulmasta. Harold Abelsonin, Gerald Jay Sussmanin ja Julie Sussmanin Structure and Interpretation of Computer Programs (toinen laitos) on ohjelmoinnin alkeisoppikirja, joka lähestyy aihettaan Schemen kautta ja päätyy pidemmälle kuin useimmat muut saman lähtötason kirjat ja on hyvää luettavaa myös kokeneemmillekin ohjelmoijille. SICP on saavuttanut jo eräänlaisen legendan aseman alallaan. Paul Hudakin The Haskell School of Expression: Learning Functional Programming through Multimedia ottaa aiheeseensa erilaisen lähestymistavan kuin useimmat muut. Hudakin kirja painottaa siirräntää ja löytää esimerkkinsä grafiikkaohjelmoinnin piiristä. Kielenä sekin käyttää Haskellia. Richard Birdin Introduction to Functional Programming using Haskell (toinen laitos) on (tämän monisteen tapaan) matemaattisuutta korostava Haskell-koulukuntaan kuuluva esitys funktio-ohjelmoinnista. Chris Okasakin Purely Functional Data Structures esittää funktio-ohjelmointiin sopivia tietorakenneratkaisuja. Okasaki on tällä osa-alalla edelläkävijä. Esimerkit Okasaki kirjoittaa ML:llä ja Haskellilla.

4 4 LUKU 1. JOHDANTO Feth Rabhin ja Guy Lapalmen Algorithms: A Functional Programming Approach on funktio-ohjelmoinnin näkökulmasta kirjoitettu aineopintotasoisen tietorakenteet ja algoritmit -kurssin oppikirja. Lisäksi mainio kirja on Jeremy Gibbonsin ja Oege de Moorin toimittama The Fun of Programming, joka käsittelee funktio-ohjelmoinnin sovelluksia ja tekniikoita. Se kuitenkin olettaa lukijaltaan jo funktio-ohjelmoinnin perustaidot, joten tämän kurssin oppikirjaksi siitä ei ole Merkittäviä artikkeleita Funktio-ohjelmointi on aina ollut enemmän käytännöllinen kuin teoreettinen aihe, joten merkittävät uudistukset tapahtuvat usein akateemisten ympyröiden ulkopuolella. Nykyisin tosin myös akateeminen julkaisuperinne on saanut jalansijaa funktio-ohjelmoinnin alalla. Muutama akateeminen artikkeli on kuitenkin ansainnut merkittävän aseman: John Backus: Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Communications of the ACM, Volume 21, Issue 8 (August 1978). John Hughes: Why functional programming matters. chalmers.se/ rjmh/papers/whyfp.html, 1984/2002. Philip Wadler: How to declare an imperative. ACM Computing Surveys, Volume 29, Issue 3 (September 1997). Funktio-ohjelmointia käsittelevät ainakin seuraavat tieteelliset aikakauslehdet Journal of Functional Programming Higher-Order and Symbolic Computation 3 Journal of Functional and Logic Programming 4 -lehdet sekä International Conference on Functional Programming (ICFP) 5 -konferenssi Netti Internetissä on runsaasti funktio-ohjelmointiin liittyviä resursseja. Tämän kurssin kannalta hyödyllisiä ovat ainakin seuraavat: Nyysiryhmä comp.lang.functional Haskell-kielen sivusto, IRC-kanava #haskell Freenode-ircverkossa (lähin palvelin on orwell.freenode.net)

5 1.3. ESITIEDOT Esitiedot Tämä moniste on kirjoitettu Jyväskylän yliopiston tietotekniikan laitoksen kurssin TIE 328 Funktio-ohjelmointi käyttöön. Koska kyseessä on syventävä opintojakso (lue: laudatur-kurssi), oletan monistetta käyttävältä opiskelijalta jo kaikenlaista: Ensinnäkin oletan, että hän on opiskellut alaa jo useamman vuoden. Hänellä on syytä olla suuri osa tietotekniikan aineopinnoista (lue: cumusta) suoritettuna tai, totta kai, vastaavat tiedot. Oletan, että hän osaa ohjelmoida ja on ohjelmoinut mielellään muutakin kuin pakollisten kurssien harjoitustyöt. Toisekseen oletan, että hän on sinut matemaattisen ajattelutavan ja formaalin kaavanpyörittelyn kanssa. En vaadi tiettyjä matemaattisia tietoja tosin logiikan alkeet ja yliopistomatematiikassa käytetty funktiokäsite (joka muuten on erilainen kuin lukiosta tuttu!) on hyvä olla hallussa. Kolmanneksi oletan, että hän tietää, mikä on kontekstiton kielioppi ja osaa sitä soveltaa käytännössä. Jos hän ei osaa kirjoittaa kontekstitonta kielioppia, joka kuvaa yksinkertaisten laskentalausekkeiden kuten 4 (5+6) 9 3 rakenteen, on hänen syytä kerrata tämä esimerkiksi kurssin TIE 264 Automaatit ja kieliopit materiaaleista. Neljänneksi oletan, että hän tietää, mikä on Turingin kone (tai mahdollisesti RAM-kone) ja mitä tekemistä sillä on tietojenkäsittelyn kanssa. Mitenkään kovin formaalisti Turingin konetta (tai RAM-konetta) ei tarvitse hallita. Tarvittaessa tämänkin voi kerrata kurssin TIE 264 Automaatit ja kieliopit materiaaleista. Mitään näistä ei välttämättä tarvita funktio-ohjelmoinnin oppimiseen, mutta tällaiset lähtötasovaatimukset toivottavasti mahdollistavat hieman edistyneempienkin asioiden käsittelyn kurssilla. 1.4 Kielikysymys Ohjelmointikursseista puhuttaessa nousee aina esiin kysymys opetuskielestä. Vaikka ohjelmointikurssien varsinainen opetettava sisältö onkin kielestä riippumattomissa ohjelmointitekniikassa ja -taidossa, on jokin kieli kuitenkin valittava, jotta opetus olisi konkreettista. Ohjelmoinnin oppimisessa tärkeää on tekeminen, ja se ei onnistu ilman kieltä. Funktiokielet voidaan karkeasti jaotella kahdella kriteerillä: ovatko ne puhtaita funktiokieliä ja ovatko niillä kirjoitetut aliohjelmat oletusarvoisesti tiukkoja

6 6 LUKU 1. JOHDANTO (strict) vai väljiä (non-strict) näihin käsitteisiin palataan vielä, nyt niitä ei tarvitse ymmärtää. Joitakin tunnettuja funktiokieliä on kuvailtu tuolla jaottelulla ja muutenkin seuraavassa: Standard ML (SML) on 1970-luvulla kehitetyn ML:n (metalanguage) jälkeläinen. Standard ML on varsin suosittu epäpuhdas, tiukka funktiokieli. O Caml kuuluu myös ML-perheeseen. Kuten SML, myös O Caml on epäpuhdas ja tiukka, mutta se myös tukee olio-ohjelmointia. Scheme on Lisp-murre, joka aikoinaan toi Lisp-maailmaan (ja myös yleisemminkin) uusia, moderneja piirteitä ja on edelleenkin ohjelmoinninopetuksessa suosittu. Schemen erityispiirre on minimaalisuuden tavoittelu. Funktiokielenä Scheme on epäpuhdas ja tiukka. Erlang on Ericssonin ensisijaisesti omaan käyttöönsä kehittämä tiukka, epäpuhdas funktiokieli. Pizza on Javan laajennos, joka tukee funktio-ohjelmoinnista tuttuja ominaisuuksia. Funktiokielenä se on tiukka ja epäpuhdas. Haskell on yksi harvoista onnistuneista komiteatyönä suunnittelluista kielistä. Haskell suunniteltiin 1980-luvun loppupuolella yhdistämään väljien, puhtaiden funktiokielten käyttäjät ja tutkijat saman kielen taakse silloin sellaisia kieliä oli useita kymmeniä ilman, että millään niistä yksinään oli kovin vahvaa asemaa. Haskell standardoitiin 1990-luvun loppupuolella stabiiliksi Haskell 98 -kieleksi, mutta siihen kehitetään jatkuvasti uusia laajennoksia. Clean on Haskellin kaltainen puhdas ja väljä funktiokieli. Kielten huomattavin ero on tavassa, jolla ne käsittelevät siirräntää. Tällä kurssilla käytettäväksi olen valinnut Haskellin useasta syystä: Se on puhdas funktiokieli Siitä on olemassa työkaluntekijöiden tukema standardi Sille on olemassa useita laadukkaita kääntäjiä Se on löyhä funktiokieli (viimeisenä mutta ei vähäisimpänä:) Minä tunnen sen kohtuullisen hyvin.

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 Funktio-ohjelmointi 1, kevät 2008 TIEA341 Funktio-ohjelmointi 1, kevät 2008 Aloitusluento Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 7. tammikuuta 2008 Aikataulu Luennot salissa Ag C231.1: ma klo 10 12, to klo 14-16

Lisätiedot

TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011

TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011 TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. helmikuuta 2011 Sisällys Sisällys Ohjelmointikieli? programming language n. a

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Johdanto Meta Kielten jaotteluja Historia. Aloitusluento. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho

Johdanto Meta Kielten jaotteluja Historia. Aloitusluento. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho Aloitusluento TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 8. tammikuuta 2007 Luennoija Antti-Juhani Kaijanaho

Lisätiedot

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1. Sisällys Ratkaisumallien historia Jaakko Vuolasto 25.1.2001! Ratkaisumalli! Christopher Alexander! Ohjelmistotuotannosta arkkitehtuuriin! Henkilöhistoriaa! Ensimmäisiä käyttökokemuksia! Yhteenveto 25.1.2001

Lisätiedot

Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg

Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg Matematiikan ja tilastotieteen laitos Tietojenkäsittelytieteen laitos Kisällioppiminen = oppipoikamestari

Lisätiedot

Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan CC1991:n ja CC2001:n vertailu Tutkintovaatimukset (degree requirements) Kahden ensimmäisen vuoden opinnot Ohjelmistotekniikan

Lisätiedot

Käyttöliittymät II. Käyttöliittymät I Kertaus peruskurssilta. Keskeisin kälikurssilla opittu asia?

Käyttöliittymät II. Käyttöliittymät I Kertaus peruskurssilta. Keskeisin kälikurssilla opittu asia? Käyttöliittymät II Sari A. Laakso Käyttöliittymät I Kertaus peruskurssilta Keskeisin kälikurssilla opittu asia? 1 Käyttöliittymät II Kurssin sisältö Käli I Käyttötilanteita Käli II Käyttötilanteet selvitetään

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015 TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia

Lisätiedot

Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006

Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006 Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet TIES341 Funktio-ohjelmointi 2 Kevät 2006 Alkuperäislähteitä Philip Wadler & Stephen Blott: How to make ad-hoc polymorphism less ad-hoc,

Lisätiedot

Tietoyhteiskunnan perustaidot. Kesäkuu 2014

Tietoyhteiskunnan perustaidot. Kesäkuu 2014 Tietoyhteiskunnan perustaidot Kesäkuu 2014 Kurssin järjestäjästä Ohjelmistotuotannon ja Tiedonhallinnan Laitos Tuotantotalouden Tiedekunta Lappeenrannan Teknillinen Yliopisto Tietotekniikan koulutusohjelmasta

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009

Tähtitieteen käytännön menetelmiä Kevät 2009 Tähtitieteen käytännön menetelmiä Kevät 2009 2009-01-12 Yleistä Luennot Luennoija hannu.p.parviainen@helsinki.fi Aikataulu Observatoriolla Maanantaisin 10.00-12.00 Ohjattua harjoittelua maanantaisin 9.00-10.00

Lisätiedot

Suunnittelumallit (design patterns)

Suunnittelumallit (design patterns) Suunnittelumallit (design patterns) Ohjelmoinnissa Rakennusarkkitehtuurissa Käyttöliittymäsuunnittelussa Sear ch Ohjelmointi Suunnittelumallit Usein toistuvia ohjelmointiongelmia ja niiden ratkaisuja:

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. maaliskuuta 2012 Sisällys Ongelma-analyysiä Sisällys Ongelma-analyysiä Hypoteettinen ongelma The Elite Bugbusters

Lisätiedot

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms. Kokeellinen algoritmiikka (3 ov) syventäviä opintoja edeltävät opinnot: ainakin Tietorakenteet hyödyllisiä opintoja: ASA, Algoritmiohjelmointi suoritus harjoitustyöllä (ei tenttiä) Kirjallisuutta: Johnson,

Lisätiedot

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. marraskuuta 2015 Sisällys Tunnistamis- ja jäsennysongelma Olkoon G = (N, Σ, P, S) kontekstiton kielioppi ja

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä

Lisätiedot

Koodi. Antti-Juhani Kaijanaho. 11. marraskuuta 2003. Sisältö

Koodi. Antti-Juhani Kaijanaho. 11. marraskuuta 2003. Sisältö Koodi Antti-Juhani Kaijanaho 11. marraskuuta 2003 Tiivistelmä Tämän luennon tarkoitus on käsitellä ohjelmistoprojektin toteutusvaiheeseen ja projektin tuloksena syntyvään ohjelmakoodiin liittyviä kysymyksiä.

Lisätiedot

Ohjelmistojen mallintaminen

Ohjelmistojen mallintaminen Ohjelmistojen mallintaminen - Mallit - Ohjelmiston kuvaaminen malleilla 31.10.2008 Harri Laine 1 Malli: abstraktio jostain kohteesta Abstrahointi: asian ilmaiseminen tavalla, joka tuo esiin tietystä näkökulmasta

Lisätiedot

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 1 TIE-20100 Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 2 Lähteet Luentomoniste pohjautuu vahvasti prof. Antti Valmarin vanhaan luentomonisteeseen

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Staattinen metaohjelmointi

Staattinen metaohjelmointi Staattinen metaohjelmointi Karri Kulmala karriku@iki.fi Markus Silván mape@st.jyu.fi Juho Yli-Honkola juylihon@cc.jyu.fi 1 Johdanto Sanakirjassa sana metakieli (metalanguage) määritellään seuraavasti[]:

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

Uuden äärellä ohjelmoitava vai oppiva kone?

Uuden äärellä ohjelmoitava vai oppiva kone? 01110111010110 11110101010101 00101011010011 01010111010101 01001010101010 10101010101010 Uuden äärellä ohjelmoitava vai oppiva kone? Petteri Kaski Tietotekniikan laitos Aalto-yliopisto CS-A1120 Ohjelmointi

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. lokakuuta 2016 Sisällys n tunnistin Jay : An Efficient Context-Free Parsing Algorithm. Communications of the

Lisätiedot

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 I Johdanto Sisältö 1. Ohjelmointikielen määritelmä 2. Syitä tutkia ohjelmointikieliä 3. Ohjelmointiparadigmat 4. Suunnittelu- ja arviointikriteerit 5. Suunnitteluun

Lisätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Omia koneita ei saa käyttää. Sähköisessä tentissä on paperitentin tapaan osaamisen

Lisätiedot

Common Lisp Object System

Common Lisp Object System Common Lisp Object System Seminaarityö Tomi Vihtari Ohjelmointikielten periaatteet kevät 2004 Helsingin Yliopisto Tietojenkäsittelytieteen laitos Järvenpää 5. huhtikuuta 2004 Sisältö 1 Johdanto... 1 2

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton 2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.

Lisätiedot

T Ohjelmistotekniikan seminaari

T Ohjelmistotekniikan seminaari T-106.5800 Ohjelmistotekniikan seminaari Scala-lukupiiri, kevät 2013 Teemu Sirkiä teemu.sirkia@aalto.fi 31.1.2013 Kenelle tämä lukupiiri on suunnattu? Scalasta kiinnostuneille Erityisesti heille, joita

Lisätiedot

Ohjelmointi 1 / syksy /20: IDE

Ohjelmointi 1 / syksy /20: IDE Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015 ja ja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho NFA:ksi TIETOTEKNIIKAN LAITOS 16. marraskuuta 2015 Sisällys ja NFA:ksi NFA:ksi Kohti säännöllisiä lausekkeita ja Nämä tiedetään:

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Keskeneräinen luento 3: Listat (mm. SICP 22.2.3) Riku Saikkonen 31. 10. 2011 Sisältö 1 Linkitetyt listat 2 Linkitetyt listat (SICP 2.1.1, 2.2.1) funktionaalinen

Lisätiedot

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Omia koneita ei saa käyttää. Sähköisessä tentissä on paperitentin tapaan osaamisen

Lisätiedot

Luku 5. Monadit. 5.1 Siirrännän ongelma

Luku 5. Monadit. 5.1 Siirrännän ongelma Luku 5 Monadit There are lots of books about functional programming in Haskell. They tend to concentrate on the beautiful core of functional programming: higher order functions, algebraic data types, polymorphic

Lisätiedot

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013 TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. toukokuuta 2013 Sisällys Chomskyn hierarkia (ja muutakin) kieli LL(k) LR(1) kontekstiton kontekstinen rekursiivisesti

Lisätiedot

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. kesäkuuta 2013 Sisällys Aikataulumuutos Tämänpäiväinen demotilaisuus on siirretty maanantaille klo 14:15 (Ag Delta).

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit. Syksy 2010 Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin

Lisätiedot

Rajoittamattomat kieliopit (Unrestricted Grammars)

Rajoittamattomat kieliopit (Unrestricted Grammars) Rajoittamattomat kieliopit (Unrestricted Grammars) Laura Pesola Laskennanteorian opintopiiri 13.2.2013 Formaalit kieliopit Sisältävät aina Säännöt (esim. A -> B C abc) Muuttujat (A, B, C, S) Aloitussymboli

Lisätiedot

8/20: Luokat, oliot ja APIt

8/20: Luokat, oliot ja APIt Ohjelmointi 1 / syksy 2007 8/20: Luokat, oliot ja APIt Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Kohti

Lisätiedot

19/20: Ikkuna olio-ohjelmoinnin maailmaan

19/20: Ikkuna olio-ohjelmoinnin maailmaan Ohjelmointi 1 / syksy 2007 19/20: Ikkuna olio-ohjelmoinnin maailmaan Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Z-skeemojen animointi Haskellilla

Z-skeemojen animointi Haskellilla Z-skeemojen animointi Haskellilla Antti-Juhani Kaijanaho 6. toukokuuta 2001 Sisältö 1 Johdanto 2 2 Joitakin funktionaalisen ohjelmoinnin käsitteitä 3 2.1 Imperatiivinen funktionaalinen ohjelmointi 3 2.2

Lisätiedot

1. Universaaleja laskennan malleja

1. Universaaleja laskennan malleja 1. Universaaleja laskennan malleja Laskenta datan käsittely annettuja sääntöjä täsmällisesti seuraamalla kahden kokonaisluvun kertolasku tietokoneella, tai kynällä ja paperilla: selvästi laskentaa entä

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Ohjelmistoarkkitehtuurit Syksy 2009 Kai Koskimies Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto (Kajaani), Tampereen yliopisto, Turun yliopisto,

Lisätiedot

Tietotekniikan laitoksen uusi linja

Tietotekniikan laitoksen uusi linja Tietotekniikan laitoksen uusi linja Tietotekniikan laitos 2011- Yhteisen rungon ympärille liittyvät oksina Tietotekniikan laitoksen perinteiset ja uudet linjat Haluatko harrastuksiisi liittyvän ammatin?

Lisätiedot

Myös opettajaksi aikova voi suorittaa LuK-tutkinnon, mutta sillä ei saa opettajan kelpoisuutta.

Myös opettajaksi aikova voi suorittaa LuK-tutkinnon, mutta sillä ei saa opettajan kelpoisuutta. Tietojenkäsittelytiede Tutkintovaatimukset Perustutkinnot LUONNONTIETEIDEN KANDIDAATIN TUTKINTO (VÄHINTÄÄN 120 OV) 1. Tietojenkäsittelytieteen cum laude approbatur -oppimäärä (vähintään 55 ov) ja kypsyysnäyte

Lisätiedot

O P I N T O S U O R I T U S O T E

O P I N T O S U O R I T U S O T E Jyväskylän yliopisto 19.02.2013 O P I N T O S U O R I T U S O T E Sukunimi : Soranto Etunimet : Annemari Kristiina Syntymäaika : 01.05.1977 Opinto-oikeus : Varsinainen Tutkintotavoite : Kauppatieteiden

Lisätiedot

Ohjelmointikielten periaatteiden taustaa

Ohjelmointikielten periaatteiden taustaa Ohjelmointikielten periaatteiden taustaa Antti-Juhani Kaijanaho 8. tammikuuta 2007 How many times do I have to tell you? The right tool for the right job! Scotty elokuvassa Star Trek V Ohjelmointi on ongelmien

Lisätiedot

Kurssin oppimistavoitteet. Heikki Lokki Kurssin suorituksen jälkeen osaat

Kurssin oppimistavoitteet. Heikki Lokki Kurssin suorituksen jälkeen osaat Johdatus tietojenkäsittelytieteeseen - TVT-ajokortti (3 op) - Tietokone työvälineenä (1 op) - Opiskelutekniikka (2 op) - Johdatus tietojenkäsittelytieteeseen (4 op) Heikki Lokki 24.9.2008 Matemaattis-luonnontieteellinen

Lisätiedot

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op) 581361 Ohjelmistoprosessit ja ohjelmistojen laatu (4op) Ohjelmistojärjestelmien syventävien opintojen kurssi Myös ohjelmistotekniikan profiilin pakollinen kurssi eli ohjelmistotekniikka-aiheisen gradun

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015 TIEA24 Automaatit ja kieliopit, syksy 205 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 5. marraskuuta 205 Sisällys Käsiteanalyysiä Tarkastellaan koodilukkoa äärellisenä automaattina. Deterministinen äärellinen

Lisätiedot

Kieli- ja kansainvälisyyspolku Schildtin lukiossa

Kieli- ja kansainvälisyyspolku Schildtin lukiossa Kieli- ja kansainvälisyyspolku Schildtin lukiossa Schildtin lukion kansainvälisyystoiminta on hyvin laajaa, ja tavoitteenamme on tarjota jokaiselle opiskelijalle mahdollisuus kansainvälistyä joko kotikoulussa

Lisätiedot

812341A Olio-ohjelmointi, I Johdanto

812341A Olio-ohjelmointi, I Johdanto 812341A Olio-ohjelmointi, 2016 I Johdanto Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden kertausta 812341A Olio-ohjelmointi, Johdanto 2 1 Abstraktiosta

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State 2015 syksy 2. vsk VIII Suunnittelumallit Observer ja State Sisältö 1. Johdanto käyttäytymismalleihin 2. Observer 3. State Suunnittelumallit Observer ja State 2 VIII.1 Johdanto käyttäytymismalleihin Päätarkoitus

Lisätiedot

Johdanto. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Johdanto. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos. TIE303 Formaalit menetelmät, kevät 2005 Johdanto Antti-Juhani Kaijanaho antkaij@mit.jyu.fi Jyväskylän yliopisto Tietotekniikan laitos TIE303 Formaalit mentetelmät, 2005-01-17 p. 1/17 TIE303 Formaalit menetelmät

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. syyskuuta 2016 Sisällys a https://tim.jyu.fi/view/kurssit/tie/ tiea241/2016/videoiden%20hakemisto Matemaattisen

Lisätiedot

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit. Kevät Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto 2 Kurssin tavoitteet

Lisätiedot

Täydentäviä muistiinpanoja laskennan rajoista

Täydentäviä muistiinpanoja laskennan rajoista Täydentäviä muistiinpanoja laskennan rajoista Antti-Juhani Kaijanaho 10. joulukuuta 2015 1 Diagonaalikieli Diagonaalikieli on D = { k {0, 1} k L(M k ) }. Lause 1. Päätösongelma Onko k {0, 1} sellaisen

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 20. lokakuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 20. lokakuuta 2016 .. TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 20. lokakuuta 2016 Sisällys. Turingin koneiden pysähtymisongelma. Lause Päätösongelma Pysähtyykö standardimallinen

Lisätiedot

Ratkaisumallien historia

Ratkaisumallien historia Ratkaisumallien historia Jaakko Vuolasto Helsinki 25.1.2001 Seminaariesitelmä HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisällys 1 Johdanto... 1 2 Ratkaisumallin käsite ohjelmistotuotannossa...

Lisätiedot

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT KOULUTUKSEN KOHDERYHMÄ SISÄLTÖ Koulutuksen tavoitteena on antaa opiskelijalle valmiudet uusien tietoteknisten menetelmien ja välineiden hyödyntämiseen.

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. tammikuuta 2012 Sisällys Sisällys Äärellisiä automaatteja PUSH ON PUSH OFF Q T Q J C C H S C,Q C,Q 0 50s 1e

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016 TIEA24 Automaatit ja kieliopit, syksy 206 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 206 Sisällys Kolme laskennan mallia kuvitteellisia (abstrakteja) koneita eli automaatteja lukevat syötteen

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 2: SICP kohdat 22.2.3 Riku Saikkonen 2. 11. 2010 Sisältö 1 Linkitetyt listat 2 Listaoperaatioita 3 Listarakenteet 4 Gambit-C:n Scheme-debuggeri Linkitetyt

Lisätiedot

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

Opiskelijat valtaan! TOPIC MASTER menetelmä lukion englannin opetuksessa. Tuija Kae, englannin kielen lehtori Sotungin lukio ja etälukio

Opiskelijat valtaan! TOPIC MASTER menetelmä lukion englannin opetuksessa. Tuija Kae, englannin kielen lehtori Sotungin lukio ja etälukio Opiskelijat valtaan! TOPIC MASTER menetelmä lukion englannin opetuksessa Tuija Kae, englannin kielen lehtori Sotungin lukio ja etälukio Päättääkö opettaja ohjelmasta? Vai voisivatko opiskelijat itse suunnitella

Lisätiedot

Perusopetuksen matematiikan pitkittäisarviointi 2005-2012

Perusopetuksen matematiikan pitkittäisarviointi 2005-2012 5.10.2015 MAOL RAUMA / JoJo 1 Perusopetuksen matematiikan pitkittäisarviointi 2005-2012 5.10.2015 MAOL RAUMA / JoJo 2 Opetushallitus Koulutuksen seurantaraportti 2013:4 5.10.2015 MAOL RAUMA / JoJo 3 1

Lisätiedot

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. syyskuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 29.9.2016 klo 8:41 (lähes kaikki kommentoitu) passed

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 31. maaliskuuta 2011 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

Matematiikka ja tilastotiede. Orientoivat opinnot / 25.8.2015

Matematiikka ja tilastotiede. Orientoivat opinnot / 25.8.2015 Matematiikka ja tilastotiede Orientoivat opinnot / 25.8.2015 Tutkinnot Kaksi erillistä ja peräkkäistä tutkintoa: LuK + FM Laajuudet 180 op + 120 op = 300 op Ohjeellinen suoritusaika 3 v + 2 v = 5 v Tutkinnot

Lisätiedot

Tarvitseeko informaatioteknologia matematiikkaa?

Tarvitseeko informaatioteknologia matematiikkaa? Tarvitseeko informaatioteknologia matematiikkaa? Oulun yliopisto Matemaattisten tieteiden laitos 1 Kyllä kai IT matematiikkaa tarvitsee!? IT ja muu korkea teknologia on nimenomaan matemaattista teknologiaa.

Lisätiedot

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen. historia Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,

Lisätiedot

Imperatiivisten ohjelmien organisointiparadigmojen historia

Imperatiivisten ohjelmien organisointiparadigmojen historia Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,

Lisätiedot

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010 kielenä 9. joulukuuta 2010 Historia kielenä Historia Sovelluksia kehitettiin vuonna 1972 Kehittäjinä ranskalaiset Pääkehittäjä Alain Colmerauer Philippe Roussel programmation en logique Robert Kowalski

Lisätiedot

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013 TIEA241 Automaatit ja kieliopit, kesä 2013 etenevä Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 10. kesäkuuta 2013 Sisällys etenevä etenevä Chomskyn hierarkia (ja muutakin) kieli säännöllinen LL(k) LR(1)

Lisätiedot

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet Koka Ryhmä 11 Juuso Tapaninen, Akseli Karvinen 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet 1 1. Taustoja Koka on Daan Leijenin ja Microsoft:n kehittämä

Lisätiedot

17/20: Keittokirja IV

17/20: Keittokirja IV Ohjelmointi 1 / syksy 2007 17/20: Keittokirja IV Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/10 Tavoitteita

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 5: Sijoituslause, SICP-oliot, tietorakenteen muuttaminen (mm. SICP 33.1.3, 3.33.3.2) Riku Saikkonen 6. 11. 2012 Sisältö 1 Muuttujan arvon muuttaminen:

Lisätiedot

Sinustako tulevaisuuden opettaja?

Sinustako tulevaisuuden opettaja? Sinustako tulevaisuuden opettaja? Esityksen sisältö Sinustako tulevaisuuden opettaja? Aineenopettajaksi Kielten aineenopettajaksi Opettajankoulutuksessa Sinulla on mahdollisuus vaikuttaa siihen, millaisessa

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015

TIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015 TIEA241 Automaatit ja, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015 Sisällys Formaalisti Määritelmä Nelikko G = (V, Σ, P, S) on kontekstiton kielioppi (engl. context-free

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Seuraavaksi tarjolla: Otekn-asiaa vähän pintaa syvemmältä Virtuaalifunktiot ja erikoistaminen, olioiden kopiointi ja elinaika

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

VERSIONHALLINTA. PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D

VERSIONHALLINTA. PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D VERSIONHALLINTA PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D Versio Päivä Tekijä Kuvaus 0.1 26.10.2005 Kaarlo Lahtela Ensimmäinen versio 0.2 10.12.2006 Lauri Kiiski Suomennettu 3 (8 ) SISÄLLYS

Lisätiedot

T SEPA - päiväkirja: Design Patterns. ETL työkalu

T SEPA - päiväkirja: Design Patterns. ETL työkalu T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty

Lisätiedot

Osataanko ja voidaanko tvt:tä hyödyntää vieraiden kielten opetuksessa? Valtakunnalliset virtuaaliopetuksen päivät 2009

Osataanko ja voidaanko tvt:tä hyödyntää vieraiden kielten opetuksessa? Valtakunnalliset virtuaaliopetuksen päivät 2009 Osataanko ja voidaanko tvt:tä hyödyntää vieraiden kielten opetuksessa? Valtakunnalliset virtuaaliopetuksen päivät 2009 Peppi Taalas Jyväskylän yliopisto peppi.taalas@jyu.fi hdp://users.jyu.fi/~peppi hdp://kielikeskus.jyu.fi

Lisätiedot

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut www.helsinki.fi

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut www.helsinki.fi Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut Ohjelmointikurssin järjestäminen Helsingin yliopiston Ohjelmoinnin MOOC-kurssimateriaalin avulla 15.4.2016 1 Linkki Tietojenkäsittelytieteen

Lisätiedot

NPH ja NPJ kurssien tiedonhaun koulutukset informaatikkonäkökulmasta

NPH ja NPJ kurssien tiedonhaun koulutukset informaatikkonäkökulmasta KYSin tieteellinen kirjasto 1/8 NPH ja NPJ kurssien tiedonhaun koulutukset informaatikkonäkökulmasta Tuulevi Ovaska, Kirsi Salmi Näyttöön perustuva hoitotyö edellyttää tiedonhakutaitoja ja niiden oppimiseen,

Lisätiedot

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 13. lokakuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 13.10.2016 klo 9:42 passed waiting redo submitters

Lisätiedot

TIETOJENKÄSITTELYTIEDE

TIETOJENKÄSITTELYTIEDE TIETOJENKÄSITTELYTIEDE Tietojenkäsittelytieteen laitos Exactum (Kumpulan kampus) PL 68 (Gustaf Hällströmin katu 2b) 00014 Helsingin yliopisto Puhelinnumero 02941 911 (vaihde), ohivalinta 02941... http://www.cs.helsinki.fi/

Lisätiedot

Lisää pysähtymisaiheisia ongelmia

Lisää pysähtymisaiheisia ongelmia Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti

Lisätiedot

Attribuuttikieliopit

Attribuuttikieliopit TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. toukokuuta 2011 Sisällys t Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

Lisätiedot

Aloitus. TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 14. maaliskuuta 2011 TIETOTEKNIIKAN LAITOS. Aloitus.

Aloitus. TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 14. maaliskuuta 2011 TIETOTEKNIIKAN LAITOS. Aloitus. TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 14. maaliskuuta 2011 Sisällys Sisällys Kurssin käytännöt Kurssin sivuilla http://users.jyu.fi/~antkaij/opetus/auki/2011/

Lisätiedot

Kandidaatintutkielma 6 op (+Äidinkielinen viestintä 3 op) (+Tutkimustiedonhaku 1 op) (+Kypsyysnäyte 0 op) Syksy 2014 Jaakko Kurhila

Kandidaatintutkielma 6 op (+Äidinkielinen viestintä 3 op) (+Tutkimustiedonhaku 1 op) (+Kypsyysnäyte 0 op) Syksy 2014 Jaakko Kurhila Kandidaatintutkielma 6 op (+Äidinkielinen viestintä 3 op) (+Tutkimustiedonhaku 1 op) (+Kypsyysnäyte 0 op) Syksy 2014 Jaakko Kurhila Päivän ohjelma Tavoitteena tutkielma, ei tutkimus Ryhmäjako Tärkeimmät

Lisätiedot