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
- Videotaltiointi 1. puoliaika (Windows Media Video, WMV). ( XVID-MP3 AVI-formaatissa) ��nenlaatu n�iss� ei p��t� huimaa! Kuvapuoli on yll�tt�v�nkin selke�, ja ehk� puheen sanoma selvi�� sielt� kohinan ja kolinan seasta... T�ss� elet��n teknisisten rajoitteiden, kuten kaistanleveyden ja mikrofonin ominaisuuksien mukaan.
- Videotaltiointi 2. puoliaika (WMV) ( XVID-MP3 AVI)
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:
- Luentokalvot (PDF)
- IT-slangin ensimm�iset letkautukset (PDF) - mist� se puhuu, kun se puhuu "softan koodaamisesta"?
- Code Conventions for the Java Programming Language (ulkop.) -- yksi t�rke� ulkopuolinen materiaali; merkitys selvi�� my�hemmin.
- Demo 1, teht�v�t
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
- Videotaltiointi: Ty�kalujen k�ytt� (WMV) ( XVID-MP3 AVI). Lue ensin kirjallinen materiaali: Selviytymisopas ty�kalujen k�ytt�misest�.
- Videotaltiointi: Demonpalautus (WMV) ( XVID-MP3 AVI). koskee yliopisto-opiskelijoita! Lukiolaisille toimitetaan omat, koulukohtaiset ohjeet!
- Videotaltiointi: Esimerkkiohjelmat, tavoiteet, ohjelma digitaalisena j�rjestelm�n� (WMV) ( XVID-MP3 AVI). Puhuinpa v�h�n mit� sattuu: Mik��n esimerkkiohjelmani ei toistaiseksi tulosta tiedostoon, vaan ne kaikki tulostavat standardiulostuloon!! Asiaan palataan my�hemmin, mutta tiedoksi vaan, ett� luennon puheosuudessa tuli ainakin tuo asiavirhe. Rajapinnan selitys oli my�s aika alustava! Sit� tarkennetaan my�hemmin.
- Videotaltiointi: Syntaksin perusidea ja rooli ohjelmoinnin osana (WMV) ( XVID-MP3 AVI). Sanoin "��rett�m�n pitki� merkkijonoja", mutta eih�n se niin mene. Syntaksin mukainen merkkijono on p��ttyv� merkkijono aina! Mutta mahdollisia erilaisia merkkijonoja voi olla numeroituvasti ��ret�n lukum��r� ... Sit� min� ajattelin, ja v��rin sitten menin sanomaan... Ne voivat olla mielivaltaisen pitki� - eiv�t ��rett�m�n.
Kalvosarjat, linkit n�ytettyyn materiaaliin
- Luentokalvot (PDF)
- Pieni� esimerkkiohjelmia, ensimm�inen versio -- n�it� katsottiin vasta hyvin alustavasti.
- Kurssin termiluettelo (1. versio), joka on luotu esimerkkiohjelmalla TermiLuettelo.java
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
- Sain idean syntaksin k�sittelyyn diagrammien kautta tuolta: BNF Index of JAVA language grammar , jonka etusivulta my�s p�llin omissa kalvoissani olleen "rautatie/oikotie" -l�hestymisen. Suoraan olisin nettisivua n�ytt�nyt, vaan eiv�t vastanneet Copyright-kysymyksiini. Kyseisell� nettisivulla on esimerkki my�s ohjelmointikielest�, jonka syntaksi mahtuu diagrammina helposti yhdelle A4-paperille, eli vanha kunnon LISP-syntaksi
- Javan nykyisemm�n syntaksin koetin koppia Sunin alkup. dokumentaatiosta The Java Language Specification, Third Edition -- tehden siihen varmasti uusia ennenn�kem�tt�mi� ominaisuuksia k�sikopioinnissa. Harmillisesti my�sk��n tuon kirjan liitteess� oleva yhteenvetokielioppi ei vastaa Javan oikeata toimintaa :-).
Luento 3 Algoritmirakenteita I
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi; syntaksia, suorittamista, Javan kanavat (WMV) ( XVID-MP3 AVI).
- Videotaltiointi; h�kker�inti� (WMV) ( XVID-MP3 AVI).
Kirjallista
Lis�materiaalia
- Code Conventions for the Java Programming Language (ulkop.) -- K�yt�nn�t k�ytt��n sit� mukaa kuin alkaa hahmottaa merkityst�.
Luento 4: Algoritmirakenteita II
-- takaisin luentolistaan --(Oikeampi nimi: Aliohjelmat, oliot, rajapinta, API.)
Audiovisuaalista
- Videotaltiointi; t�ydennys edelliseen ja aliohjelmat (WMV) ( XVID-MP3 AVI).
- Videotaltiointi; oliot ja sy�tteen lukeminen konsolista(WMV) ( XVID-MP3 AVI).
Kirjallista
Lis�materiaalia
- Unicode -merkist�st� (ks. literaaliesimerkki)
- Tanssiurheiluliiton sivut sis�lt�� mm. viralliset kilpailus��nn�t (todellisuudessa minulla ei ole aavistustakaan, onko kilpailuparketin koolla oikeasti alarajaa; luennolla esitetty 200 neli�metri� on kuitenkin j�rkev� koko, jossa pystyy jo ihan vauhdikkaita kuvioita v��nt�m��n.)
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
- Videotaltiointi; t�ydennyst� aiempaan, totuusarvot, loogiset lausekkeet (WMV) ( XVID-MP3 AVI).
- Videotaltiointi; Javan lauseet kontrollin siirtoihin (WMV) ( XVID-MP3 AVI).
Kirjallista
Luento 6: Tietorakenteita
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi; Se t�rkein ohje: miten kannattaa koodata. (WMV) ( XVID-MP3 AVI). (Eli k��nt�minen ja ajaminen aina pienen muutoksen j�lkeen)
- Videotaltiointi; Yhteenveto tilanteesta eli mit� on n�hty. Globaali Scanner ja selityst� muuttujien m��reist� (WMV) ( XVID-MP3 AVI).
- Videotaltiointi; Taulukon tarve ja k�ytt�minen Javassa (WMV) ( XVID-MP3 AVI). -- samalla esimerkki ohjelman luontiprosessista: asteittainen tarkentaminen, osateht�viin jakaminen.
Kirjallista
- Luentokalvot (PDF)
- Esimerkkiohjelmat
- Se t�rkein ohje (s�hk�postilistan arkistossa) Sori... se vaan unohtu kertoa aikaisemmin.
Luento 7: Paketti kasassa ensimm�ist� kertaa
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi; aiemmin aloitettua taulukko-ohjelmaa eteenp�in (WMV) ( XVID-MP3 AVI).
- Videotaltiointi; Merkit ja merkkijonot, oliot, viitteet, taulukko (WMV) ( XVID-MP3 AVI). -- My�s APIn lukemisen yleiskuva taas kerran. Esimerkkiohjelmana argumenttilistan k�sittely�
Kirjallista
Luento 8: Luokat, oliot ja APIt
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, 1. puoliaika (WMV) ( XVID-MP3 AVI) -- hierarkkinen ja rekursiivisesti osittava ajattelumalli ja soveltaminen; koodausk�yt�nteet
- Videotaltiointi, 2. puoliaika (WMV) ( XVID-MP3 AVI) -- metodin (aliohjelman) nimen kuormittaminen; luokka ja olio; olion luonti ja konstruktorin kutsuminen luonnin yhteydess�.
Kirjallista
Luento 9: Puhu mun stdinille)
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, 1. puoliaika (WMV) ( XVID-MP3 AVI) -- Merkkijonojen yhteenliitt�mist� Stringej� ja operaattoria k�ytt�m�ll�; toisaalta StringBuilderilla. Alustava havainto pinnan alla tapahtuvan toiminnallisuuden merkityksest� (merkitt�v� asia, josta tarkemmin jatkokursseilla). Poikkeuksen ilmeneminen Java-ohjelmassa.
- Videotaltiointi, 2. puoliaika (WMV) ( XVID-MP3 AVI) -- Tietovirrat ohjelmaan ja sielt� ulos; ilmeneminen Javassa luokkien InputStream ja PrintStream olioina. Matalan tason ohjelma, joka tulostaa sy�tetavut lukuina eli muodossa, jossa ne saapuvat ohjelmalle virtuaalikoneen v�litt�m�n�. Erilaisia koodauksia, mm. rivinvaihto auditorion Windowsissa vs. et�k�ytt�-Linuxissa, ��kk�sten koodaus. Mit� kannattaa olettaa tietoj�rjestelm�n k�ytt�j�st�? Poikkeusten k�sittely (edelleen alustavasti; edellytt�� my�hemp�� tarkennusta).
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:
- ASCII -merkist�st� (Wikipediassa) -- huomaa mm. kohta "Unicode fix".
- Unicode -merkist�st�
Luento 10: IDE
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, konsoli-interaktiosta (WMV) ( XVID-MP3 AVI) -- Jatkoa aiempaan: millaista outoa toiminnallisuutta voi synty� k�ytt�j�n innovatiivisuudesta. Miten koodissa esim. voi varautua siihen.
- Videotaltiointi, Johdanto Eclipse IDEen 1/2 (WMV) ( XVID-MP3 AVI) -- Eclipsen k�ynnistys ja n�kymi�: Workspace, projekti, k��nn�syksikk�, koodi-ikkuna, aiemmin tehtyjen koodien tuominen Workspaceen eri tavoin.
- Videotaltiointi, Johdanto Eclipse IDEen 2/2 (WMV) ( XVID-MP3 AVI) -- Koodin suorittaminen Eclipsell�, konsolin�kym�. Helppok�ytt�toimintoja koodin automaattiseen generointiin.
- Videotaltiointi, harjoitusty�n yleiset vaatimukset (WMV) ( XVID-MP3 AVI) -- Millainen harjoitusty� tulee olemaan yleisesti ottaen.
Kirjallista
Lis�materiaalia
Luento 11: Konepelti auki
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, 1. puoliaika (WMV) ( XVID-MP3 AVI) -- Debuggerin perusteet: mist� on kyse, mit� n�kymi� esim. Eclipsen debuggerissa on, miten debuggausta hallitaan eli rivien suoritus yksi kerrallaan, breakpointit. Yksinkertaisten suoritusten tutkimista: per�kk�issuoritus ja paikallisten muuttujien esittely sek� arvon asettaminen. Toistorakenteet. Esimerkki ei-toivotusta ikuisesta silmukasta ja havaitsemisesta debuggerin avulla. Muuttujan n�kyvyys ja elinaika.
- Videotaltiointi, 2. puoliaika (WMV) ( XVID-MP3 AVI) -- Aliohjelmakutsu, aktivaatio, kutsupino, Javan kaksijakoinen muistimalli: paikalliset muuttujat "pinossa" ja olioiden sis�lt� "keossa".
Kirjallista
- Luentokalvot (PDF)
- Esimerkkiohjelmat (eiv�t kovin hy�dyllisi� "kuolleena koodina"; aiheena oli debuggerin k�ytt� suorituksen tutkimiseen!)
- Demo 6, teht�v�t.
Luento 12: Bitit talteen
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, 1. puoliaika (WMV) ( XVID-MP3 AVI) -- Tiedostot, tiedostoj�rjestelm�, tietovirrat. Poikkeusten perusidea; esimerkkin� tiedostoa lukeva ohjelma.
-
Videotaltiointi, 2. puoliaika (WMV)
(
XVID-MP3 AVI)
-- Olioiden luominen Javassa,
new
ja konstruktori. Kaaviokuvan raapustelu "lyijykyn�ll� ruttuiselle paperille ", viitteet olioihin ja olioista toiseen. Huomaa, ett� kuvaa piti korjata viel� lopuksi! Try-catch-finally -rakenteen suorittaminen debuggerilla n�htyn�.
Kirjallista
Luento 13: Kierr�tys kannattaa koodaamisessakin
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, edellisen t�ydennyst� (WMV) ( XVID-MP3 AVI) -- APIa ja olioluokkien periytymishierarkiaa. Esimerkkin� poikkeusluokat. Tiedoston tallentaminen tietovirran ja kirjoittajan avulla. J�nnityksen huipentuma loppua kohti: Luennoitsija saa ohjelman toimimaan -- vai saako? Spoileri s�hk�postilistan arkistossa t�ss� viestiss�.
- Videotaltiointi, varsinainen aihe eli "kierr�tys kannattaa" (WMV) ( XVID-MP3 AVI) -- Ohjelman modulaarisuus; moduulien hierarkia, paketit. Aiemmin n�htyjen dialogialiohjelmien siirt�minen omaan luokkaansa, josta tehtiin yksinkertainen kirjasto. Kirjastolle muodostui API ja sille tehtiin javadocin avulla API-dokumentaatio.
Kirjallista
Luento 14: Keittokirja I (yhteenvetoa ja kertausta)
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, ensimm�inen puoliaika (WMV) ( XVID-MP3 AVI) -- Ohjelmointitiet�myksen nelj� osa-aluetta; miksi ja miten kukin niist� liittyy kokonaisuuteen.
- Videotaltiointi, toinen puoliaika(WMV) ( XVID-MP3 AVI) -- syntaksia oppikirjoissa ja manuaaleissa, rautatiekaaviot ja BNF.
Kirjallista
- Luentokalvot (PDF)
- Esimerkki syntaksista; ohjelmoinnillisen rakenteen kirjoittaminen on kiva ja helppo esitt�� abstraktina syntaksina, jonka merkitys selitet��n erikseen sanallisesti.
- Demo 8, teht�v�t.
Lis�materiaalia
- Jeliot -- Joensuussa kehitetty visualisointi ohjelman suorituksen ymm�rt�misen avuksi. T�ll� leikitt�neen ensi viikon luennoilla v�h�n aikaa. Teatterin�kym� on kiva ja konsolik�ytt�j�n karvainen k�si hauska. T�st� on varmasti apua alkuvaiheessa; todellinen ty�kalu ohjelman tutkimiseen on sitten kuitenkin oikea debuggeri, jonka k�ytt� pit�� osata.
Luento 15: Keittokirja II
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, ensimm�inen puoliaika (WMV) ( XVID-MP3 AVI) -- Fibonaccin lukujonot juurta jaksain ja vaiheittain.
- Videotaltiointi, toinen puoliaika(WMV) ( XVID-MP3 AVI) -- Kertotaulun tulostaminen ja merkkien korvaaminen toisilla merkeill�.
Kirjallista
Lis�materiaalia
- Jeliot -- T�t� k�ytettiin j�lleen.
Luento 16: Keittokirja III
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, ensimm�inen puoliaika (WMV) ( XVID-MP3 AVI) -- Palindromitarkastus toteutettuna er��ll� tavalla. T�ll� luennolla lis�ksi pari uutta syntaksia: for-silmukka, moniulotteinen taulukko alustuksineen.
- Videotaltiointi, toinen puoliaika(WMV) ( XVID-MP3 AVI) -- BPM-laskuri. Esimerkki suunnittelusta koodia muokkailemalla ja kehittelem�ll�.
Kirjallista
Luento 17: Keittokirja IV
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, ensimm�inen puoliaika (WMV) ( XVID-MP3 AVI) -- Kirjoitusnopeustestin suunnittelu ja kyh��minen; kurssin viimeinen uusi syntaksi: tietorakenneluokka, jossa on sis�ll�n tyyppi kulmasulkeissa, esimerkkin� ArrayList<String>. Mandelbrotin joukon visualisointi.
- Videotaltiointi, v�liaika(WMV) ( XVID-MP3 AVI) -- Pelasta Prinsessa -peli: m�rk�seikkailu Ohjelmointi 1:n esittelemill� rakenteilla toteutettuna.
- Videotaltiointi, toinen puoliaika(WMV) ( XVID-MP3 AVI) -- K�yt�nn�n taitoja: bin��ri-, oktaali- ja heksalukuj�rjestelm�t. syntaksin idea.
Kirjallista
Luento 18: Kun (hei) maailma ei riit�
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, ensimm�inen puoliaika (WMV) ( XVID-MP3 AVI) -- Yhteenveto kurssin sis�ll�st�. Asiakokonaisuuksien priorisointi. Demovastausten tutkiminen alkoi: Noudata k�yt�nteit� ja selkeytt� (tuota koodia, jonka rakenne ja merkitys selvi�� vilkaisemalla ja p��kohtia lukemalla); keskity olennaiseen (eli mieluummin keksi kertaalleen hyv�t testikeissit kuin ett� joudut sy�tt�m��n p��tteelt� jokaisella kerralla kun kokeilet algoritmin toimintaa); v�lt� kovakoodaamasta algoritmille mit��n maksimikokoja (esim. toimisi vain kolmen alkion taulukolle, jos yht� hyvin voisi toimia mille tahansa m��r�lle).
- Videotaltiointi, toinen puoliaika(WMV) ( XVID-MP3 AVI) -- Oppikirjaesimerkkej� ensimm�isist� algoritmeista: Pienimm�n alkion etsiminen. Lajittelu.
Kirjallista
Luento 19: Ikkuna olio-ohjelmoinnin maailmaan
-- takaisin luentolistaan --(Oikeampi nimi: Miten jatkossa ohjelmoit paremmin kuin ekalla kertaa.)
Audiovisuaalista
- Videotaltiointi, ensimm�inen puoliaika (WMV) ( XVID-MP3 AVI) -- Demovastausten tutkiminen jatkui: samoja juttuja kuin viimeksi, mutta lis�ksi k�yt�nn�n osoituksia siit�, miten helppoa on kuvitella algoritmia valmiiksi (jopa jonkun pienen testin perusteella) kun se on viel� kaukana siit�. Eli ei toimikaan kaikille mahdollisille sy�tteille halutulla tavoin! Avain onneen on perusteellinen ja huolellinen testaus loppuun asti: idea testille on juuri varmistaa ett� se paluuarvo tai tuloste, joka saadaan, vastaa sit� mit� odotetaankin!
- Videotaltiointi, toinen puoliaika(WMV) ( XVID-MP3 AVI) -- Demojen debuggausta lis��.
Kirjallista
Luento 20: Suoritus p��tty?
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, ensimm�inen puoliaika (WMV) ( XVID-MP3 AVI) -- Miniyhteenveto kurssin asioista. Toivottuja uusintoja, mm. olioiden ja viitteiden olemuksesta sek� piirt�misest�, erilaisista toistorakenteista ja niiden k�ytt�tarkoituksista.
- Videotaltiointi, toinen puoliaika(WMV) ( XVID-MP3 AVI) -- Tenttit�rpit ja kurssin t�rkeimm�n oppisis�ll�n l�pik�ynti tenttikysymysten ja mallivastausten kautta.
Kirjallista
Ekstraa ja toiveuusintoja
-- takaisin luentolistaan --Audiovisuaalista
- Videotaltiointi, eka setti (WMV) ( XVID-MP3 AVI) -- olioita ja viitteit�
- Videotaltiointi, toka setti (WMV) ( XVID-MP3 AVI) -- Mit� pit�isi opiskella Javasta seuraavaksi (oppikirjan lukujen 9 ja 10 otsikoita ja suhteuttamista ykk�skurssin sis�lt��n).
- Videotaltiointi, kolmas setti(WMV) ( XVID-MP3 AVI) -- RegExp yleiskuva ja pari alkeellista esimerkki�.
- Nelj�nnest� setist� ei ole taltiointia, kun n�ytin niin paljon matskua netist�. Ei passaa pahemmin taltioida toisten tekemi� juttuja. Linkit materiaaliin ovat tuossa alla.
Kirjallista
Lis�materiaalia
- Code Snippet of the Day from The daily WTF (ei oo helppoo eik� oo helpoks v�itettyk��n)
- Historiaa: Jonkinlainen kartta ohjelmointikielist� 1950-luvulta saakka
- 2500 muuta ohjelmointikielt�
- Huumorilla ja mielenkiinnosta ohjelmoinnin perusteisiin: Muiden muassa Brainfuck, Befunge ja Whitespace... (Ei Java kuitenkaan mik��n hullumpi kieli ole koodata).
- Muistakaa t�m� ohjelmointi-invariantti, koska k�ytetyst� kielest� riippuu mit� ovat sudenkuopat milloinkin.
- The International Obfuscated C Code Contest -- huonon ohjelmoinnin kilpailu (Huumorilla ja mielenkiinnosta ohjelmointikielten mahdollisuuksiin)
- Eclipsen l�hdekoodi -- esimerkiksi tuo on melko iso ja melko hy�dyllinen ohjelmisto; sellaisen suunnittelu edellytt�� v�h�n lis�� opintoja, mutta ei varmasti haittaa katsella ja ihmetell� sellaisenkin l�hdekoodia... Koodia hallitaan versionhallintaj�rjestelm�n avulla, joten jokainen muutos kirjautuu tiedostokohtaisesti, ja eri versioiden v�lisi� eroja voi tutkia. Lis�ksi bugien ja ominaisuuksien hallintaan k�ytt�v�t n�k�j��n bugzillaa. Alleviivaan, ett� ykk�s- tai kakkoskurssinkaan pohjalta kukaan ei oleta kykyj� tehd� n�in isoja juttuja. Siihen kasvaa pikkuhiljaa. Mukaan tulee tiimity�skentely- ja projektitaidot ym.. Tarvitaan nousujohteista tekemist� paljon, ja yksinkertaisesti vaan kalenteriaikaakin asioiden sis�ist�miseen.
Viimeksi kajottu 2011-05-31.