Ohjelmointi on kivaa.
Etusivu Materiaalia -- Luennot -- Demot Opettajat  

ITKP102 Ohjelmointi 1 --- syksy 2007 --- Luentosuunnitelma

Korpissa on tarkka tieto luentojen ajoista ja paikoista. P��s��nt�n� maanantaisin klo 12-14, tiistaisin klo 10-12. Videotaltioinnit julkaistaan saman p�iv�n aikana.

Luentosuunnitelma

T�llaisiksi kurssin 20 luentoa lopulta muodostuivat. Otsikot eiv�t ihan aina vastanneet toteutunutta sis�lt��, mutta j�tin ne ennalleen, jotta kalvosarjat yhdistyv�t siihen mit� nettisivulla n�kyy. Luentovideot piti ik�v� kyll� poistaa, koska nettisivulla tarvittiin lis�� tilaa. Jos joku haluaa ne arkistojen k�tk�ist� kaivaa, ne l�ytyv�t kyll� pyydett�ess�.

# vko  pv Otsikko Aiheet
1 37 ti Suoritus alkakoon! Yleiskuva kurssista ja ohjelmoinnista. Harjoitusteht�viksi (1/10): tietokoneen k�ytt�� ja ennakoivia pohdintap�hkin�it�.
2 38 ma Mieleni minun tekevi, aivoni ajattelevi Ty�kalujen ohjeet. Tavoiteasettelua, esimerkkiohjelmia. L�hdekoodi, k��nt�minen ja suorittaminen esimerkin kautta. Syntaksi, ohjelman k��nn�syksik�n merkitys. Ohjelman toimintaymp�rist�: argumentit sek� sy�tt�- ja tulostusvirrat yleisesti (ei viel� juurikaan Javaan sidottuna)
3 38 ti Algoritmirakenteita I Oikeampi nimi: Ensimm�iset ohjelmat; lauseet, lausekkeet ja muuttujat. Syntaksin mukaisen ohjelman kirjoittaminen. Koodausk�yt�nteet. Kommentit. Tulostaminen. Per�kk�issuoritus, ensimm�isi� lauseita ja lausekkeita. Ohjelman toimintaymp�rist�n ilmeneminen Javassa. Muuttujat, tyyppij�rjestelm�, literaalit, kokonaislukuliteraalien esitysmuodot. Sijoituslause. Operaattori, presedenssi. Aliohjelmat alustavasti. Harjoitusteht�viksi (2/10): lauseita ja lausekkeita (lukeminen ja ymm�rt�minen, kirjoittaminen; per�kk�isohjelmien tekemist� aliohjelmia hy�dynt�en)
4 39 ma Algoritmirakenteita II Oikeampi nimi: Aliohjelmat, oliot, rajapinta, API. T�ydennyst� edelliseen: lis�� tyypeist� ja literaaleista. Aliohjelman kutsuminen, parametrinv�litys ja paluuarvon sijoittaminen. Muistimallista alustavasti: pinomuisti ja aktivaatio mainittu. Olio ja luokka filosofisesti, mallinnusmieless� ja ohjelmointimieless�. Rajapinta, viestit ja piilotettu sis�inen tila. API ja dokumentaation lukeminen; esim. Javan API. System.out, System.err, System.in ovat olioita; out ja err samanlaisia (samaan luokkaan kuuluvia), in taas erilainen. Scanner- ja InputStream -luokkien yhteistoiminta.
5 39 ti Algoritmirakenteita III Loogiset lausekkeet ja totuusarvot. Ehtorakenne "if-else" ja ehdollinen suoritus. Toistorakenteet "for", "while", "do-while" ja toistuva suoritus. Muunnelmat suoritusj�rjestyksess�: "return", "break", "continue". Valintarakenne "switch" ja valinnainen suoritus. Poikkeusten k�sittely "try-catch-finally" Edell�mainittuja vastaavat lauseet Javan syntaksissa. Harjoitusteht�viksi (3/10): algoritmien tekemist� ja muuntamista Java-koodiksi.
6 40 ma Tietorakenteita Aluksi "Se t�rkein ohje", eli mist� l�ytyv�t mukavuustaso, onnistumisen el�mykset ja etenkin t�sm�lliset kysymykset, jotka ohjaavat kohti seuraavan asian oppimista. Avain on tehd� pienenpieni muutos kerrallaan, ja todeta seuraavan asian toimivuus. Sitten kohti laajempia tietorakenteita: taulukko, merkkijono (merkkijonot tarkemmin huomenna). Taulukon ilmeneminen Javassa: taulukko-oliot; perusidea ja syntaksit esittelyyn, alustukseen ja k�ytt��n.
7 40 ti Paketti kasassa ensimm�ist� kertaa Taulukkoja sis�lt�v�t taulukot, esim. matriisi. Merkkijonot Javassa: String ja StringBuilder -luokkien oliot. Mit� se on kun on oliot: rajapinnan lukeminen ja k�ytt�. Yhteenvetoa: syntaksi, kontrolli- ja tietorakenteet, suhde algoritmeihin. Teht�v�kuvauksesta toimivaksi ohjelmaksi k�ytt�en asteittaista tarkentamista, ohjelmoinnillisia rakenteita ja lopulta ohjelmointikielt�. Harjoitusteht�viksi (4/10): Helpompia, lyhyempi� teht�vi� ja v�hemm�n kuin aiemmin; algoritmien tekemist� ja muuntamista Java-koodiksi.
8 41 ma Luokat, oliot ja APIt Koodausk�yt�nteiden merkitys; esimerkkej� selkeist� ja ep�selkeist� koodeista. Hierarkkinen ja rekursiivinen ajattelumalli: esim. ohjelman suunnittelu, syntaksi, tiedon j�rjest�minen (tietorakenteet, tiedostoj�rjestelm�). Tarkennusta aliohjelmiin: kuormittaminen, ''method signature''. Tarkennusta olioiden k�ytt�miseen: luominen, konstruktori, rajapinta.
9 41 ti Puhu mun stdinille API-dokumentaation lukeminen: esim. String, StringBuilder/StringBuffer -APIt. Interaktiivisen ohjelman tekeminen. Scanner -luokka. K�ytt�j�n sy�tteen lukeminen, tarkistaminen ja muuntaminen tarvittuun esitysmuotoon. Integer, Double, Character ym. luokat. Poikkeukset ja niiden k�sittely (pikaisesti; n�ihin siis palataan my�hemmin). Harjoitusteht�viksi (5/10): Interaktiivisten ohjelmien tekemist�
10 42 ma IDE IDEn k�ytt�minen, esim. Eclipse. Harjoitusty�n vaatimusten ja ty�tapojen esittely. Varsinaiset aiheet jaetaan henkil�kohtaisesti s�hk�postilla noin viikon kuluessa.
11 42 ti Konepelti auki Debuggerin k�ytt�minen. Suorituskohta, kontrollin siirtyminen, kutsupino. Muistimalli: pino, keko. Viitteen k�site, roskienkeruu. Primitiivityypin ja olioviitteen eron kristallisointi. Muuttujan n�kyvyysalue. Harjoitusteht�viksi (6/10): Eclipsen k�ytt�� ja Javan APIn k�ytt�� opittujen luokkien osalta.
12 43 ma Bitit talteen Tiedostot, tiedostojen lukeminen ja tallentaminen. Poikkeukset ja niiden k�sittelyn perusteet. try-catch-finally -rakenne. Poikkeusk�sittelyn suoritus: hyppy catch-lohkoon. N�kyy hyvin debuggerissa.
13 43 ti Kierr�tys kannattaa koodaamisessakin Lis�ys poikkeusten k�sittelyyn: RunTimeException vs. Exception; ''throws Jotakin'' API-dokumentaatiossa. Viimeinen lis�ys tiedostoihin: tietovirran avaaminen ja k�ytt� tiedostoon kirjoittamista varten. T�ydennet��n eilist� esimerkkiohjelmaa.
Aliohjelmien ker��minen yleisk�ytt�iseksi moduuliksi. Oman APIn tekeminen ja dokumentoiminen; valaissee my�s muiden kirjoittamien APIen lukemista. Paketit ja niiden hakemistorakenne, import.
Harjoitusteht�viksi (7/10): Interaktiivisten, tiedostoja k�ytt�vien ohjelmien tekemist�. Aiempien vastausten (omien tai mallivastausten) muuntamista moduuleiksi ja k�ytt�� moduulin kautta. Algoritmien kehittely� ja toteuttamista Javalla.
14 44 ma Keittokirja I Yhteenvetoa ja kertausta: Mit� on ohjelmointi, mist� se koostuu? Syntaksin erilaiset esitystavat; semantiikka eli merkitys esitystapoineen. BNF-tyyppinen tekstimuotoinen syntaksiesitys. J�lleen katsottiin Javan k��nn�syksik�n j�sentyminen; laskenta tapahtuu lauseissa. Lauseet kuvaavat ohjelmoijan ajatusmaailmaa eli algoritmia (toimintasuunnitelmaa). Samoin aliohjelmat ym. laajemmat rakenteet kuvaavat hierarkkisesti jakautuvaa, osittavaa ongelmanratkaisua. Kieli vaan on suomen sijasta esim. Java, C, C++, C#, D, tai mik� vaan ohjelmointikieli. Harjoitusteht�viksi (8/10): Aiempaa kertaavia ja toisaalta yksityiskohtia syvent�vi� teht�vi�. (Tiistaina ei luentoa; auditoriot muussa k�yt�ss�.)
15 45 ma Keittokirja II Perusreseptej�: yksinkertaisten algoritmien suunnittelemista ja toteuttamista; aloitetaan aiemmista demoista tutuilla esimerkeill�.
16 45 ti Keittokirja III Aluksi palindromitarkistimen toteutus. Sitten jatketaan toteuttamalla alusta alkaen supistettuja versioita kurssin esimerkkiohjelmista siihen asti kuin ehdit��n: tempolaskuri, kirjoitusnopeustesti, Mandelbrotin joukon visualisointi. Javan valmiita tietorakenteita, mm. ArrayList. Dynaamisen tietorakenteen vaivattomuus. Harjoitusteht�viksi (9/10): Tenttikysymyksi� vastaava ennakkoteht�v�setti. ArrayList -luokkaa k�ytt�vien ohjelmien tekemist� (ehk�?).
17 46 ma Keittokirja IV Jatketaan aiemmista: Kirjoitusnopeustesti, Mandelbrotin visualisointi. Moneen kertaan n�hty peruskaava: Ohjelmoinnin tavoite on tehd� sovellus, jolla ratkaistaan sovellusongelma. T�ytyy ensin tarkentaa, mit� tavoite tarkoittaa k�ytt�j�lle ("domain analysis"). T�ytyy mietti� sovelluksen sy�tteet, tulosteet, k�ytt�liittym�. Sitten sovellukselle etsit��n algoritmit: mihin osiin kokonaisuus jakautuu, mihin osiin osat jakautuvat. Lopulta yksitt�inen osa toteutetaan, muistaen tehd� sopivan pieni� ja hallittavia muutoksia yhdell� kertaa. Esimerkiss� vilahti ArrayList -luokka. K�yt�nn�n taidot perusteluineen: Bin��ri-, oktaali- ja heksalukuj�rjestelm�t. Syntaksin idea ja erilaiset notaatiot.
18 46 ti Kun (hei) maailma ei riit� Tilannekatsaus: millaisia asioita on toivottavasti opittu, ja mit� taas ei viel�. Demovastauksissa olleiden yleisten virheiden oikaisemista tulevaisuutta ajatellen. Oppikirja-algoritmeja: J�rjestyksess� ensimm�isen alkion etsiminen taulukosta. Taulukon lajitteleminen suuruusj�rjestykseen yksinkertaisella tavalla. Harjoitusteht�viksi (10/10): Javan valmiita tietorakenteita hy�dynt�vi� interaktiivisia ohjelmia. Algoritmien tekemist� ja toteuttamista Javalla.
19 47 ma Ikkuna olio-ohjelmoinnin maailmaan Demovastauksissa olleiden yleisten virheiden oikaisemista tulevaisuutta ajatellen.
20 47 ti Suoritus p��ttyy? (Auditorio 2) Yhteenveto ja kertaus. Tenttit�rpit. Suuntaviivat tulevaan ohjelmoinnin opiskeluun: miten edet�, mist� aiheista etsitt�v� lis�� ymm�rryst� ja miksi. Ohjelmointiparadigmat. Mit� kursseja tiedekuntamme tarjoaa n�iden opiskeluun. Harjoitusteht�v�ksi: oman harjoitusty�n viimeistely ja hyv�ksytt�minen, tenttiin valmistautuminen.
NaN 48 null Ekstraa ja toiveuusintoja Pari tuntia istuttiin viel� niiden kanssa, jotka halusivat kuulla lis��. Oli kertausta, ja yritin v�h�n n�ytt�� ohjelmoinnin humoristista puolta. Ei se ole niin vakavaa.
Tenttimahdollisuudet:
       14.12.2007 (Ehdottoman suositeltava aika!!!), 
       19.12.2007 (Vain jos on toinen tentti 14.12.),
       22.2.2008 
       13.6.2008  (Ehdottomasti viimeinen 
                   suoritusmahdollisuus Niemisen 
                   kurssi-ilmentym�st�! Sen j�lkeen 
                   jonkun muun kurssille alusta alkaen,
                   jos viel� j�� roikkumaan!)

Alle tulee tarkemmat luentomateriaalit kurssin edetess�, ml. linkit videotaltiointeihin ja esimerkkiohjelmiin.

Luento 1: Suoritus alkakoon!

-- takaisin luentolistaan --
Videotaltioinnit luennosta
Kalvosarjat, linkit n�ytettyyn materiaaliin

HUOM: Paperikopioita on saatavilla p�yd�ll�, joka sijaitsee mikroluokkien k�yt�v�ll� keskiulko-oven kohdalla. Algoritmi jonka suorittamalla l�yd�t perille: Jos tulet Agoraan sis��n hotelli Alban parkkipaikan suunnalta ja kuljet vain suoraan viel� sis�ll�kin, et voi olla konkreettisesti t�rm��m�tt� kyseiseen p�yt��n.

Et�opiskelijat voivat tulostaa omat kopiot itselleen:

T�m� j�i (yll�tys, yll�tys!) kiireen ja liiallisen optimismin takia viel� vaiheeseen:

Yhteenveto luennolla puhutusta

Kurssi ja opettajat esiteltiin. Puhuttiin ohjelman tekemisprosessista, mallintamisesta ja ohjelmointikielen roolista. Luennoitsija yritti selvitt��, mik� on Ohjelmointi 1 -kurssin rooli kokonaiskuvassa.

Lis�materiaalia

T�ll� luennolla ei juurikaan viitattu ulkopuoliseen tai "ylim��r�iseen" materiaaliin.

Luento 2: Mieleni minun tekevi, aivoni ajattelevi

-- takaisin luentolistaan --
Videotaltioinnit luennosta
Kalvosarjat, linkit n�ytettyyn materiaaliin
Yhteenveto luennolla puhutusta

Ensin n�ytin ty�kalut k�yt�nn�ss�. Unohtui n�ytt�� Unix-tunnuksen aktivointi, mutta se on kirjallisessa materiaalissa kyll�.

Sitten n�ytin esimerkkiohjelmia. K��nsin, suoritin ja vilauttelin l�hdekoodia. Kerroin, mit� t�ll� kurssilla opitaan ja ei opita kyseisen kaltaisten aikaansaannosten tekemiseksi.

Ohjelman toimintaymp�rist�� k�sittelin seuraavasti: Ohjelma saa k�ytt��ns� argumentit sek� joitakin tietokanavia eli "standardinsy�tekanavan" ja kaksi tulostuskanavaa, ts. yhden "standarditulosteelle" ja toisen virheilmoituksille ja vastaaville. Ohjelmat voivat kommunikoida my�s tiedostojen ja tietoliikenneyhteyksien kanssa. Rajailtiin Ohjelmointi 1:n laajuutta, mutta n�htiin my�s tavoitteita my�hemm�ss� ohjelmoinnissa.

Syntaksidiagrammit esittelin, ja syntaktisten elementtien rakentumisen korkealta tasolta alkaen ja lopulta yksitt�isiksi kirjaimiksi ja merkeiksi muuttuen. Ohjelman k��nn�syksikk� vastaa yht� l�hdekooditiedostoa. K��nt�j� on ohjelma, joka osaa lukea syntaksin mukaisen k��nn�syksik�n ja tehd� siit� suorituskelpoisen ohjelmatiedoston.

Lis�materiaalia erikoisen kiinnostuneelle porukalle

Luento 3 Algoritmirakenteita I

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista
Lis�materiaalia

Luento 4: Algoritmirakenteita II

-- takaisin luentolistaan --

(Oikeampi nimi: Aliohjelmat, oliot, rajapinta, API.)

Audiovisuaalista
Kirjallista
Lis�materiaalia

Pari linkki� "hardcore-materiaaliin" eli Java-kielen m��ritelm��n (sek� syntaksi ett� merkitys suorituksen kannalta). Alla viitatut 2 lukua sis�lt�v�t noin 160 painokirjasivua m��ritelmi� ja esimerkkej�; t�st� ehdit��n n�hd� yhdell� kurssilla aika pieni osa... Koko m��ritelm� on liitteineen 649 painokirjasivua. T�m� on takuuvarmasti liian tuhtia kamaa toistaiseksi, mutta laitetaan linkit huvikseen, jos kiinnostaa v�h�n selailla:

Luento 5: Algoritmirakenteita III

-- takaisin luentolistaan --

(Oikeampi nimi: Algoritmit: Kontrollin ohjaus.)

Audiovisuaalista
Kirjallista

Luento 6: Tietorakenteita

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Luento 7: Paketti kasassa ensimm�ist� kertaa

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Luento 8: Luokat, oliot ja APIt

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Luento 9: Puhu mun stdinille)

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista
Lis�materiaalia

Merkist�asioista tulee tiet�� t�m�n kurssin puitteissa yleiskuva: merkit ja merkkijonot koodautuvat tietokoneessa bittijonoiksi, kuten kaikki muukin. Lis�tietoa halajavat voivat vapaa-aikanaan tutustua esim. seuraaviin l�hteisiin ja niist� l�ytyviin linkkeihin:

Luento 10: IDE

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista
Lis�materiaalia

Luento 11: Konepelti auki

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Luento 12: Bitit talteen

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Luento 13: Kierr�tys kannattaa koodaamisessakin

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Luento 14: Keittokirja I (yhteenvetoa ja kertausta)

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista
Lis�materiaalia

Luento 15: Keittokirja II

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista
Lis�materiaalia

Luento 16: Keittokirja III

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Luento 17: Keittokirja IV

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Luento 18: Kun (hei) maailma ei riit�

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Luento 19: Ikkuna olio-ohjelmoinnin maailmaan

-- takaisin luentolistaan --

(Oikeampi nimi: Miten jatkossa ohjelmoit paremmin kuin ekalla kertaa.)

Audiovisuaalista
Kirjallista

Luento 20: Suoritus p��tty?

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista

Ekstraa ja toiveuusintoja

-- takaisin luentolistaan --
Audiovisuaalista
Kirjallista
Lis�materiaalia

Viimeksi kajottu 2011-05-31.

(Validoi sivu WDG:n validaattorilla)