Oppimateriaalin copyright © 2011 Arto Wikla.
Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille
opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin,
kuten kaupallisilla tai muilla kursseilla, on kielletty.
581362 Ohjelmointikielten periaatteet keväällä 2011:
harjoitusohje
(Muutettu viimeksi 13.4.2011. Sivu perustettu 28.2.2011)
Huom: Muutokset vieläkin mahdollisia!
Harjoitukset ja harjoitustyö 21.3.-22.4.
Kurssin harjoitustyönä toteutetaan jonkin ohjelmointikielen
"kevytspesifikaatio" verkkosivuna tai -sivustona. Sivua kehitellään
viikoittain luennoilla käsitellyiltä näkökannoilta. Viikoittaisissa
harjoitustilaisuuksissa ryhmien jäsenet esittelevät ja vertailevat
valitun kielen piirteitä ja ominaisuuksia muihin kieliin.
Valitun kielen verkkosivua/-sivustoa on pidettävä viikoittain
ajan tasalla.
Molempien ryhmien viikoittainen deadline on tiistaisin klo 10!
Syy on se, että materiaalia käytetään luennoilla ja harjoituksissa.
Hyvissä ajoin ennen ensimmäistä harjoitusviikkoa
kurssin opiskelijoista muodostetaan 1-4 hengen
ryhmiä, jotka valitsevat oman nimikko-ohjelmointikielensä.
Ryhmän koko ei vaikuta harjoitustyön vaativuuteen tai laajuuteen.
Kurssin vastuuhenkilölle (AW) toimitetaan linkki ryhmän tuottamaan
viikoittain täydentyvään verkkomateriaaliin, jonka etusivu sijaitsee
ryhmän jonkun jäsenen kotihakemistossa.
Linkit liitetään kurssin sivulle
"esiteltäviksi
valitut kielet ja esittelijät".
Ryhmän lopullisesta verkkomateriaalista kukin ryhmäläinen voi saada
enimmillään 18 kurssipistettä. Kaikki ryhmän opiskelijat saavat saman
pistemäärän. Ryhmään lasketaan kuuluviksi ne kurssin alussa sovitut
opiskelijat, jotka on merkitty tekijöiksi ryhmän tuottamaan lopulliseen
materiaaliin.
Harjoituksista voi saada enimmillään 10 pistettä.
Säännöt löytyvät
kurssiesitteestä.
Ohjelmointikielen "kevytspesifikaatio"
Kurssin harjoitustyönä laaditaan valitusta ohjelmointikielestä
viikoittain täydentyvä verkkosivu tai -sivusto, joka esittelee ja
luonnehtii kieltä seuraavin periaattein:
- Kyseessä ei ole aloittelijan ohjelmointiopas.
- Kyseessä ei ole kielen toteuttajalle tarkoitettu
formaali spesifikaatio.
- Kyseessä on jotakin noiden väliltä – painopiste lähempänä
jälkimmäistä kuin edellistä.
- Dokumentin ajateltu lukija/käyttäjä voisi kuulua seuraaviin
ryhmiin:
- ohjelmoija tai projektipäällikkö, joka etsii parasta
välinettä johonkin erityiseen ohjelmointitehtävään
- suunnittelija, joka miettii, mikä kieli parhaiten soveltuisi
käytettäväksi jonkin erityisen ympäristön ohjelmointityökaluksi
(mukaan lukien kännykät, hipluttimet (="sormitietokone"),
"sosiaalinen media", ...)
- kielen toteuttaja, joka haluaa saada perusteellisen yleiskatsauksen
kielestä ennen kuin aloittaa varsinaiseen formaaliin spesifikaatioon
perustuvan toteutustyön
- oppilaitos, joka etsii omiin tarkoituksiinsa parhaiten
soveltuvaa ohjelmointivälinettä
- ...
- Kevytspesifikaatio täydentyy viikoittain ja tarkoitus on, että
luennoilla viikoittain käsitellyt näkökulmat ohjaavat ja
(soveltuvin osin) jäsentävät syntyvää verkkomateriaalia.
Deadline on tiistaisin klo 10.
Tältä sivulta alempaa löytyy alustavaa mallijäsentelyä.
- Viikoittaisessa harjoitusryhmän tapaamisessa ryhmät esittelevät
nimikkokielensä piirteitä ja ominaisuuksia edellisen
luentoviikon näkökannoilta. Ryhmä käyttää esittelyyn
ennalta laatimaansa verkkomateriaalia, jonka siis on jo oltava kaikkien
kurssilaisten luettavana ryhmän verkkosivuilla
viikoittain viimeistään tiistaisin klo 10.
- Harjoitustapaamisessa lyhyiden kieliesittelyiden lisäksi
ennen kaikkea keskustellaan kielten eroista, yhtäläisyyksistä
ja tyyleistä.
- Joku opiskelijaryhmän jäsen säilyttää ryhmän materiaalin
pääsivua omassa www-hakemistossaan. Muuten ryhmän jäsenet voivat
sijoittaa alisivuja myös omiin hakemistoihinsa, kunhan vain
pääsivulta löytyvät kaikki tarpeelliset linkit.
- Kurssin vastuuhenkilölle (AW) annetaan ryhmän nimikkokielen
pääsivun osoite julkaistavaksi kurssin sivuilla.
- Sivut saa sijoittaa myös laitoksen intranettiin, jos julkisuus vaivaa.
Julkinettiä silti suositellaan. Onhan meillä täällä yliopistossa
nimittäin myös kaiken kansan kasvatustehtävä...
- Materiaalin verkkoivuilla on lueteltava tekijät. Ja mielellään
todellisina ja rehellisesti. Jälleen kerran opiskelijoihin luotetaan.
- Huom: Tuotettavan materiaalin on (soveltuvin osin) noudatettava
samoja tyyli-, viittaus- ja laatuvaatimuksia, joita asetetaan
kandidaatintutkielmalle (tieteellisen kirjoittamisen kurssilla).
Asiasisällön lisäksi siis myös esitystavan laatu
vaikuttaa merkittävästi materiaalin arvosteluun.
Kandidaatintutkielman tyyli- ja laatuohjeistusta löytyy
opintojakson sivuilta.
Harjoitusten ohjaajat ottavat tarvittaessa kantaa siihen,
mitä "soveltuvin osin" tarkoittaa.
- -
Kevytspesifikaation jäsentelystä
Materiaalin jäsentelyä ohjaa luennolla käsiteltyjen sisältöjen
järjestys. Koska ohjelmointikielet poikkeavat merkittävästi
toisistaan, jäsentelyehdotus on vain suuntaa antava –
sitä saa ja itse asiassa pitää muuttaa ja soveltaa luovasti,
mikäli esiteltävät asiat sitä vaativat.
Luentosisällön esitysjärjestys ei myöskään välttämättä
istu kovin hyvin eräiden kielten vaatimaan asioiden esitysjärjestykseen.
Järkeä saa siis käyttää. Kurssin opettajat mielellään osallistuvat
järkevyyspohdintoihin.
Annetut otsikot ovat aiheiden luonnehdintoja – todellisten otsikoiden
on syytä olla osuvampia. Lukuja saa tarvittaessa
olla myös enemmän tai vähemmän.
********* 1. harjoitusviikko: *******
- Kielen taustaa ja miniesimerkki:
- kuka/ketkä-missä-milloin-miksi, mihin käyttöön, ...,
- tyypillinen toteutustapa: kääntäjä, tulkki, ...
- käyttökohteet
- ...
- lyhyt selostettu esimerkki ohjelmasta, joka lukee
yhden syöttöluvun, laskee ensimmäisen Fibonaccin luvun,
joka on syöttölukua suurempi ja lopuksi tulostaa
kyseisen Fibonaccin luvun
- Alkiorakenne – millaisista palikoista ohjelmat rakennetaan:
- tunnukset
- varatut sanat, avainsanat
- literaalivakiot
- erottimet, sisennykset, rivinvaihdot
- ...
- havainnollisia selostettuja pieniä esimerkkejä
- arvio kieleen valittujen ratkaisujen eduista ja haitoista
********* 2. harjoitusviikko: *******
- Tunnusten näkyvyysalueet – miten ja missä itse määritellyt
rakenteet ovat käytettävissä:
- lohkorakenne
- sidonta – staattinen ~ dynaaminen
- sulkeumat
- ensimmäisen, toisen ja kolmannen luokan arvot
- ...
- havainnollisia selostettuja pieniä ohjalmaesimerkkejä
- arvio kieleen valittujen ratkaisujen eduista ja haitoista
********* 3. harjoitusviikko: *******
- Kontrollin ja/tai laskennan ohjaus – miten perustoiminnallisuudet
ilmaistaan:
- valinta
- toisto eli iteraatio
- rekursio ja häntärekursio
- ...
- havainnollisia selostettuja pieniä ohjalmaesimerkkejä
- arvio kieleen valittujen ratkaisujen eduista ja haitoista
- Perustietotyypit – millaisilla arvoilla tai "datalla" pelataan:
- alkeis-/perustyypit
- arvoalueet, standardoidut vai implementaatiokohtaiset, ...
- vahva tyypitys ~ heikko tyypitys
- staattinen tyypitys ~ dynaaminen tyypitys
- ...
- havainnollisia selostettuja pieniä ohjalmaesimerkkejä
- arvio kieleen valittujen ratkaisujen eduista ja haitoista
********* 4. harjoitusviikko: *******
- Laskennan kapselointi – miten toiminnallisuuksia
abstrahoidaan ja niistä rakennetaan uusia toiminnallisuuksia:
- nimetyt aliohjelmat ja/tai alifunktiot
- parametrivälitys
- suoritusaikaisiin virheisiin varautumisen välineet – poikkeukset
(lisätty 7.4.)
- miten kieli tukee rinnakkaista laskentaa (lisätty 7.4.)
- tyypillisiä ohjelma-arkkitehtuureja
- ...
- havainnollisia selostettuja pieniä ohjalmaesimerkkejä
- arvio kieleen valittujen ratkaisujen eduista ja haitoista
********* 5. harjoitusviikko: *******
- Datan kapselointi – millaisiksi rakenteiksi
dataa voidaan koota:
- rakenteiset ja/tai kapseloidut tyypit
- oliot ja luokat
- arvo- ja viitesemantiikka
- ...
- havainnollisia selostettuja pieniä ohjalmaesimerkkejä
- arvio kieleen valittujen ratkaisujen eduista ja haitoista
********* 6. viikko, ei varsinaista harjoitusta *******
- Yhteenveto: kielen vahvuudet ja heikkoudet,
suositellut ja varottavat käyttökohteet
Kurssin viimeisen luennon sijaan järjestään
julkinen Grande Finale 28.4. 12-14 auditoriossa CK112.
Takaisin kurssin pääsivulle.