Harjoitustyö
- Harjoitustyön aihe
- Vaaditut ominaisuudet
- Komponentit
- Dokumentointi
- Arvostelu
- Julkisuus ja tekijänoikeus
- Työkalut
- Aikataulu ja suunnitelma
- Ohjaus
- Valmis työ
- Valmiin harjoitustyön palauttaminen
- Vanhoja harjoitustöitä
Kurssi suoritetaan tekemällä pakollisia viikkotehtäviä ja pakollinen harjoitustyö. Kurssin arvosana on viikkotehtävistä lasketun keskiarvon ja harjoitustyöstä saadun arvosanan keskiarvo.
Ts. jos viikkotehtävistä saa keskiarvoksi 2.3 (ei pyöristetä kokonaisluvuksi) ja harjoitustyöstä arvosanaksi 1 niin kurssin arvosana on 2 koska (2.3+1)/2.0 = 1.65 ja pyöristyy ylöspäin kakkoseksi
Harjoitustyön saa aloittaa tehtyään viikkotehtäviä vähintään ykkösen (1) arvosanaan edellyttämän määrän.
Kaikki valmiit harjoitustyöt ja keskeneräisten harjoitustöiden suunnitelmat julkaistaan kurssin Wiki-sivustolla kaikkien kiinnostuneiden katsottavaksi.
Harjoitustyön saa tehdä haluamallaan välineellä, vapaavalintaisella ohjelmointikielellä ja mihin tahansa ympäristöön kunhan työhön voidaan sisällyttää kaikki vaadittavat asiat (erityisesti komponentti) ja ohjaaja kykenee ohjelmaa testaamaan. Eksoottisimmissa tapauksissa varaudu toimittamaan tarkistajalle kone/laite jossa ohjelmasi toimii.
Harjoitustyön aihe
Tärkeimpiä asioita harjoitustyössä on käyttöliittymän komponenttien käyttö. Erityisesti omien komponenttien tuottaminen ja jakaminen muiden käyttöön. Algoritmiset seikat eivät ole niin suurella painolla.
Harjoitustyö pitää toteuttaa järkevällä ja hyvällä ohjelmointitavalla. Tarkistajalla on täydet valtuudet hylätä näennäisesti toimivat mutta purukumilla viritetyt tai muuten epäilyttävät tekeleet.
Aihe
Harjoitustyön aihe pitää keksiä itse. Se voi olla esimerkiksi jonkin aikaisemmin tehdyn komentoriviohjelman käyttöliittymän muuttaminen graafiseksi, jokin opetusohjelma, peli tai mikä tahansa mieleenjuolahtava (tarpeellinen) aihe.
Harjoitustyön toteuttamista XNA-frameworkin päälle EI suositella. XNA ei ole kunnolla tapahtumapohjainen kehitysympäristö ja puhdas peliohjelmointi eroaa muutenkin tavallisesta graafisten käyttöliittymien ohjelmoinnista. WPF- ja Windows Forms -pohjaiset peliharjoitustyöt ovat ok.
Omatta aihetta miettiessä voi käydä hakemassa ideoita vanhoista harjoitustöistä.
Vaaditut ominaisuudet
Harjoitustyön arvosana määräytyy harjoitustyöaiheen yleisen vaativuuden, työn toteutuksen ja työssä toteutettujen yleisten ominaisuuksien perusteella.
Harjoitustyö noudattaa UX guiden tärkeimpiä käytettävyysohjeita. Kts. ITKA112-kurssin luento 2-3 Mitä korkeamman arvosanan harjoitustyöllään haluaa saada niin sitä tarkemmin UXGuidea on noudatettava.
Seuraavaan on listattu eritasoisten harjoitustöiden perusvaatimuksia. Listausta tullaan vielä päivittämään ja tarkentamaan.
Taso 1
Arvosanan 1 saavuttaa, kun harjoitustyö sisältää vähintään seuraavat perusasiat ohjelman varsinaisen toiminnallisuuden lisäksi:
- Helppo ja yksinkertainen aihe
- Yksinkertainen komponentti
- Windows Forms- tai WPF-ohjelma
- Menut
- About-dialogi - Sisältää vähintään ohjelman nimen, tekijän nimen, versionumeron ja päiväyksen
- Avustus - Sisältää vähintään lyhyen selityksen kaikista ohjelman ominaisuuksista ja miten niitä käytetään
- Painikkeita ja muita peruskontrolleja
- Access keyt
- Käyttöliittymä on toimiva, järkevä ja looginen. Käyttöliittymä ei ole rakennettu vain huitaisemalla komponentit lomakkeelle miten sattuu ja mihin sattuu.
- Ohjelmassa on oleellisissa kohdissa osattu käyttää valmiita dialogeja (open, save, print ym.)
- Dokumentaatio on selkeä ja kattava
- Syöttökentissä on järkevät tarkistukset
- Ohjelma osaa antaa oleellisissa tilanteissa selkeää palautetta. Ts. Erilaisista ohjelmassa tapahtuvista toimenpiteistä pitää tulla käyttäjälle jokin vaste, että käyttäjä tietää toiminnon onnistuneen tai epäonnistuneen. Ohjelma jossa vain tyrkitään painikkeita ilman, että mitään näkyvää tapahtuu ei ole hyvä ohjelma.
- Ohjelmassa käytetään selvästi vain yhtä kieltä. Ei siis sekaisin suomea ja englantia tms.
- Jos ohjelmaikkunan kokoa voi muuttaa niin käyttöliittymä osaa mukautua uuteen ikkunan kokoon
Taso 3
Arvosanan 3 saavuttaa, kun ohjelma sisältää taso 1:en edellyttämät asiat ja näiden lisäksi ohjelma toteuttaa seuraavat asiat:
- Hieman vaativampi ja/tai laajempi aihe
- WPF-ohjelma. Windows Forms -ohjelma ei kelpaa.
- Hyödyllinen komponentti
Lisäksi ohjelman on toteutettava joitakin seuraavista:
- Käyttökielen vaihto (suomi/englanti)
- .config - tiedoston, .ini-tiedoston tai rekisterin käyttö optioiden tallettamiseen
- Yksinkertainen tietokanta
- Optioiden kysyminen käyttäjältä
- Yksinkertainen leikepöydän käyttäminen
- Tulostaminen
Taso 5
Arvosanan 5 saavuttaa, kun ohjelma sisältää taso 3:en edellyttämät asiat ja näiden lisäksi ohjelma toteuttaa seuraavat vaatimukset:
- Teknisesti vaativa tai hyvin laaja aihe
- WPF-pohjainen Windows-ohjelma tai jokin vapaavalintainen toteutusympäristö (ei Windows Forms) ja kieli esim. Windows Phone, Android, Qt, Java jne.
Tason 5 ohjelma voi sisältää mm. seuraavia asioita:
- Erittäin hyödyllinen tai laadukas komponentti
- Verkko-ohjelma
- Monimutkainen tietokanta
- Monipuolinen tuki leikepöydälle
Komponentit
Jokaisen harjoitustyössä pitää valmistua vähintään yksi yleiskäyttöinen komponentti (arpakuutio, pelikortti, korttipakka, pelilauta tms...), joka luovutetaan kaikkien kurssilaisten käyttöön dokumentoituna. Komponentin ei välttämättä tarvitse olla graafinen.
Komponenttia varten kirjoitetaan oma WWW-sivu, joka linkitetään varsinaisen harjoitustyön WWW-sivuun. Komponentin omalta sivulta löytyy komponentin dokumentaatio (vrt. Microsoftin dokut) ja itse komponentti kaikkine tykötarpeineen zip-paketissa.
Komponentit linkitetään kurssin Wiki-sivustolle vapaasti levitettäväksi ja tarkoitus on että kurssilaiset käyttäisivät mahdollisuuksien mukaan myös muiden tekemiä komponentteja.
Dokumentointi
Harjoitustyön tärkeä osa on dokumentoitu ohjelmalistaus. Osa dokumentointia on ongelman jakaminen selkeiksi ja hyvin nimetyiksi aliohjelmiksi/komponenteiksi/luokiksi. Samoin osa dokumentointia on epämääräisten vakioiden siirtäminen koodista tiedoston alussa oleviin vakiolausekkeisiin.
Dokumentoinnissa on käytettävä XML dokumentaatio kommentteja.
Ohjelmakoodin dokumentoinnin lisäksi on työn wiki-sivulle kirjoitettava selkeä kuvaus ohjelmasta, sen toiminnasta ja myös lyhyt käyttöohje.
Ohjelman ja komponentin www-dokumentaatio on helppo tuottaa suoraan ohjelmakoodin kommenteista Doxygen-ohjelman avulla.
Arvostelu
Työ arvostellaan työn tavoitetason perusteella. Jos työ ylittää selvästi siihen alunperin suunnitellut vaatimukset voi saada myös korkeamman arvosanan. Jos työ alittaa tavoitteensa niin arvosanaa vastaavasti lasketaan.
Arvosteluun vaikuttavat mm. seuraavat seikat:
- Aiheen vaativuus: laaja ja monimutkainen ohjelma tuottaa vajaanakin toteutuksena hyvän arvosanan.
- Liian yksinkertainen tai ei-yleiskäyttöinen komponentti laskee arvosanaa. Autolaskurin tasoinen komponentti on minimitaso komponentille.
- Siisti ohjelmakoodi
- Hyvä dokumentointi
- Ei purkkavirityksiä
- Ohjelma ei saa kaatua
- Kurssin postituslistalla tapahtunut hyvien vinkkien lähettäminen ja muiden kurssilaisten neuvominen ja ohjaaminen.
- Aikataulussa pysyminen
Julkisuus ja tekijänoikeus
Keskeneräiset ja valmiit harjoitustyöt ovat nähtävillä WWW:ssä. Ohjelman tekijä voi muotoilla lähdekoodiinsa haluamansa tekijänoikeudet (esim. GPL).
Työkalut
Käytettäväksi työkaluksi suositellaan Visual Studio 2010 ja C#-ohjelmointikieltä mutta työkalun ja kielen saa vapaasti valita kunhan lopputuloksena on ohjelma josta löytyy vaatimukset toteuttava graafinen käyttöliittymä.
Ohjausta ja neuvoja on tarjolla vain Visual Studiota ja C#-kieltä käyttäville. Muilla ohjelmilla ja kielillä tekevät ovat oman onnensa nojassa...
Aikataulu ja suunnitelma
Koska erityinen toivomus opiskelusta työelämään siirtyneiltä on se, että pitäisi opettaa myös suunnittelua ja aikataulussa pysymistä, niin jokainen laatii omasta harjoitustyöstään SIISTIN suunnitelman ja aikataulun, johon on kirjoitettu vähintään.
- Oma nimi ja sähköpostiosoite
- Lyhyt sanallinen kuvaus aiheesta. Mukaan voi lisätä myös mahdollisia screenshotteja ym. Kuvauksesta on selvästi käytävä ilmi mitä ohjelmalla on tarkoitus tehdä.
- Ohjelman tavoitetaso (1, 3 tai 5) ja korkeammilla tasoilla selkeät perustelut siitä miksi työ yltää korkeammalle vaatimustasolle.
- Kuvaus aiheessa toteutettavasti yleiskäyttöisestä komponentista: Mitä komponentti tekee, miten, onko kyseessä graafinen komponentti vai muullainen, jos komponentti on graafinen niin millainen sen ulkoasu on, miten komponenttia käytetään, aiheuttaako komponentti eventteja ja millaisia jne.
- Toteutusaikataulu päivämäärineen (suunnitelma ... käyttöliittymän runko ... komponentti on valmis.. toimiva karvalakkiversio ... avustuksen kirjoittaminen ... lopullinen versio).
Aikataulu ja suunnitelma kirjoitetaan siistiksi WWW-sivuksi ja sijoitetaan joko kurssin Wiki-sivustolle. Jokainen käy itse lisäämässä Wiki-sivustolle linkin työhönsä. Samalle sivulle listataan myös töissä toteutettavat komponentit.
Aikataulu voi olla suunniteltu jokaisen omiin tarpeisiin ja opintoihin sopivaksi, ja siinä pysyminen sekä harjoitustyö arvostellaan osana kurssia arvosanaa. Liian löysä ja epätäsmällinen aikataulu sinänsä on jo negatiivinen ilman erittäin hyviä perusteita.
Aikataulu ja suunnitelma on palautettava lomakkeella viimeistään 15.4.2012.
Harjoitustyösuunnitelman palauttaminen
Ohjaaja hyväksyy tai pyytää täydentämään suunnitelmaa. Hyväksynnän jälkeen voi varsinaisen työn tekemisen aloittaa. Ohjaaja kopioi hyväksytyn aikataulun talteen eikä siitä tämän jälkeen voi enää poiketa, kuin erittäin hyvästä syystä.
Aikataulun seuranta
Aikataulussa pysymistä seurataan raportoimalla työn aiheen hyväksymisestä ja työn aloittamisesta ja työn valmistumisesta keskustelupostituslistalla ja päivittämällä työn www-sivulle viimeisin versio/vaihe työstä. Myös muista työn kannalta olennaisista vaiheista voi raportoida keskusteluryhmässä.
Esim. Matti Meikäläisen suunnitelma saa ohjaajalta hyväksynnän 13.4.2012. Matti lähettää keskusteluryhmään viestin jossa kuvaa lyhyesti aiheensa ja antaa linkin harjoitustyösuunnitelmansa wiki-sivuun. Ensimmäinen toimiva ja jotenkin käyttökelpoinen mutta viimeistelemätön versio valmistuu 1.5.2012. Matti sijoittaa käännetyn työn ja lähdekoodit työnsä www-sivulle 1.5.2012 ja lähettää postituslistalle viestin jossa kertoo työnsä ensimmäisen version olevan kokeiltavissa ja tutkittavissa. Tarkistaja seuraa listan viestejä ja kirjaa ylös toiden etenemisen ja käy ehkä myös kokeilemassa ja katsomassa töitä. Kuka tahansa muukin kurssilainen voi käydä tutkimassa miltä Matti Meikäläisen työ tässä vaiheessa vaikuttaa ja voi ottaa myös työstä mallia tai antaa siihen vinkkejä ja palautetta. Matti saa työnsä valmiiksi 5.5.2012 ja ilmoittaa tästä keskusteluryhmään ja palauttaa työnsä ohjaajalle palautuslomakkeella.
Ohjaus
On aivan ilmeistä, että tämän kurssin harjoitustyössä tulee erinäisiä ongelmia, joita ratkoessaan vain hakkaa päätään seinään ja meinaa vielä viivästyä aikataulusta. Kohtuullisen ongelma ratkaisuyrityksen jälkeen voi ilman muuta kääntyä aina ohjaajan puoleen, on sitä itsekin oltu vaikeuksissa (ja tullaan olemaan). Kurssin keskustelupostituslistaa kannattaa käyttää kuitenkin käyttää mahdollisimman paljon koska samantyyppinen ongelma voi hyvin koskea muitakin. Neuvoja ja vinkkejä voi keskusteluryhmän kautta saada muiltakin kuin kurssin luennoijalta. Muiden neuvominen keskusteluryhmässä korottaa omaa arvosanaasi.
Yleisimmistä ongelmista pyritään keräämään kurssin oma FAQ-sivu jota kannattaakin aina ensimmäisenä tutkia. Toivottavaa olisi, että myös päivittäisitte listausta aina kun saatte selvitettyä jonkin ongelman, joka saattaa koskea muitakin.
Aluksi kysyn joka tapauksessa, että onko tilannetta tutkittu debuggerilla, joten tämä kannattaa tehdä jo etukäteen. Samoin ongelma kannattaa yrittää paimentaa hyvin pienelle alalle. Näin voimme vähän nopeuttaa ongelman käsittelyä.
Ohjausta saa sähköpostilla tai kurssin IRC-kanavalla (#appro) tai erikseen sovittavana ohjausaikana. Huhtikuussa järjestetään vielä torstaisin pääteohjauksia joissa voi käydä kyselemässä apua työnsä ongelmiin opettajalta tai muilta kurssilaisilta.
Valmis työ
Valmis työ sijoitetaan työn Wiki-sivustolle zip-pakettina. Paketin pitää sisältää kaiken ohjelman kääntämiseen vaadittavan eli koko projektin ja myös valmiin suoritettavan ohjelman.
Käyttäjien kommentit