Harjoitustyö
- Harjoitustyön aihe ja sisältö
- Komponentit
- Dokumentointi
- Arvostelu
- Julkisuus ja tekijänoikeus
- Työkalut
- Aikataulu ja suunnitelma
- Ohjaus
- Valmis/keskeneräinen työ
- Valmiin harjoitustyön palauttaminen
- Vanhoja harjoitustöitä
Kurssi suoritetaan tekemällä pakollisia demotehtäviä ja pakollinen harjoitustyö.
Kaikki valmiit harjoitustyöt julkaistaan kurssin Wiki-sivustolla kaikkien kiinnostuneiden katsottavaksi.
Harjoitustyöllä voi korottaa tai laskea (-10 prosenttiyksikköä - +15 prosenttiyksikköä) demotehtävien perusteella saamaansa kurssin arvosanaa. Erittäin ansiokas työ nostaa numeroa ja huono rimanalitus voi laskea arvosanan jopa alle ykkösen eli kurssia ei saakkaan läpi ellei parantele harjoitustyötään.
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 ja sisältö
Tärkeimpiä asioita tässä 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 ohjelman käyttöliittymän muuttaminen graafiseksi, jokin opetusohjelma, peli tai mikä tahansa mieleenjuolahtava (tarpeellinen) aihe.
Aiheen virikkeeksi voi käydä katsomassa vanhoja harjoitustöitä.
Esimerkkejä komentoriviohjelmista joihin voi rakentaa graafisen käyttöliittymän:
Lisäideoita voi selailla vaikka Free Software Directorysta.
Harjoitustyöksi sopivia peli-ideoita semmoisenaan tai yksinkertaistettuina:
- Erilaiset korttipelit esim. verkkoversio Canastasta, tupesta tai bridgestä.
- Artillery duel
- Space Invaders
- Sudoku
- Minesweeper
- Yksinkertainen roolipeli samaan tapaan kuin Angband tai Nethack
- Archon
- Laivanupotus
- Hirsipuu
Vaaditut ominaisuudet
Harjoitustyössä pitää olla tyypilliset Windows- ominaisuudet:
- Menut
- About-dialogi
- Avustus
- Painonappeja, pikanäppäimiä
Lisäominaisuudet
Lisäksi ohjelmasta on löydyttävä jotain seuraavista (jos aihe vain suo mahdollisuuden):
- Optioiden kysyminen käyttäjältä
- .config - tiedoston, .ini-tiedoston tai rekisterin käyttö optioiden tallettamiseen
- Leikekirjan käyttö
- Tietokanta
- Tulostaminen
- Käyttökielen vaihto (suomi/englanti)
Eli laivanupotuspeli, joka on aina 10x10 ruudussa on huono aihe, mutta jos käyttäjä voi itse valita pelilaudan koon jostakin dialogista ja menusta, niin aihe onkin jo parempi.
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 dokumentti 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ä osaa 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 syytä käyttää XML dokumentaatio kommentteja.
Arvostelu
Harjoitustyö vaikuttaa kurssin arvosanaan nostamalla tai laskemalla kurssin demotehtävistä saatua suoritusprosenttia. Työ voi laskea demoprosenttia enintään 10 prosenttiyksikköä ja nostaa 15 prosenttiyksikköä
Arvosteluun vaikuttavat mm. seuraavat seikat:
- Aiheen vaativuus: laaja ja monimutkainen ohjelma tuottaa vajaanakin toteutuksena plussaa. Liian helppo ja yksinkertainen pääsee enintään nollan (0) prosenttiyksikön tasolle
- Liian yksinkertainen tai ei-yleiskäyttöinen komponentti on miinusta. Autolaskurin tasoinen komponentti on minimitaso komponentille.
- Siisti ohjelmakoodi on plussaa
- Hyvä dokumentointi on plussaa
- Käyttäjäystävällinen käyttöliittymä on plussaa. Sekavasta ja vaikeasta saa miinusta.
- Ohjelma ei saa kaatua
- Kurssin postituslistalla tapahtunut hyvien vinkkien lähettäminen ja muiden kurssilaisten neuvominen ja ohjaaminen.
- Aikataulussa pysyminen
Mitä nollan (0) prosenttiyksikön harkkaan tarvitaan
Jos harjoitustyön aihe on selvästi yksinkertainen ja helppo niin nollan (0) prosenttiyksikön työssä pitää olla vähintään seuraavat asiat kunnossa:
- Ohjelma ei kaadu
- Ohjelmakoodi on siistiä eikä ohjelmassa esiinny purkkavirityksiä ilman hyviä perusteluja.
- 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.
- Ohjelmaan on toteutettu jotain lisäominaisuuksista tai perustellusti jotain näitä korvaavaa.
- Yleiskäyttöiselle komponentille löytyy oma www-sivu ja selkeä dokumentaatio
Lisäprosentteja voi saada mm. seuraavilla: laaja ja/tai monimutkainen aihe, hyvin yleiskäyttöinen ja hyödyllinen komponentti
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 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ä.
- 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 (esisuunnitelma ... 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 tai tekijän haluamaan paikkaan, joka linkitetään wiki-sivustoon. 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 2.11.2010.
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 etenemisestä kurssin keskustelupostituslistalla ja päivittämällä työn www-sivulle viimeisin versio/vaihe työstä.
Esim. Matti Meikäläisen suunnitelman mukaan työn ensimmäinen toimiva ja jotenkin käyttökelpoinen mutta viimeistelemätön versio valmistuu 1.12.2010. Matti sijoittaa käännetyn työn ja lähdekoodit työnsä www-sivulle 1.12.2010 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 tarpeen mukaan 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.
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). Myös kurssin keskustelupostituslistaa kannattaa käyttää erityisesti silloin, kun sama ongelma saattaa koskea useampaa.
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.
Valmis/keskeneräinen työ
Valmis työ sijoitetaan työn WWW-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