Aikataulu

HUOM

Vaikka et olisi tehnyt mitään jollakin tietyllä viikolla, kannattaa viikkoraportti kuitenkin kirjoittaa niin että repositoriossa on muutoksia viikon ajalta. Voit jopa saada pisteitä. Muuten pisteitä tulee automaattisesti 0 vaikka projektista olisi muuten mahdollista saada viikkopisteitä.

Kolmen peräkkäisen viikkon ajan muuttumaton repositorio tulkitan kurssin keskeyttämiseksi!

Viikko 1:

  • Palautus 1:
    • Aihe, käytettävä ohjelmointikieli ja työn laajuus päätetty.
      • Juttele tarvittaessa ohjaajan kanssa. Jos toteutat jonkin valmiista aiheista Javalla ja kaikki on selvää, voit siirtyä suoraan määrittelydokumentin kirjoittamiseen. Jos haluat toteuttaa työn täysin omasta aiheesta tai erikoisemmalla kielellä, kannattaa asiasta jutella ennen palautuksen tekemistä.
    • Tustustu kurssimateriaaliin. Lue ainakin dokumentaatio-ohjeet tarkkaan.
    • Dokumentaatio: Määrittelydokumentti valmis.
    • Viikkoraportti numero 1: Kirjoitettu ensimmäinen viikkoraportti (ks. Palautukset)
    • Katso, että repositoriosi etusivulle on linkattu suoraan viikkoraportit (nopeuttaa tarkastusta huomattavasti). Jos tarvitset apua markdownissa, niin katso GitHubin ohje: https://guides.github.com/features/mastering-markdown/. Saat myös apua jos katsot esimerkiksi miten tämä tiedosto on tehty!
    • Projekti: Projekti luotu. Ohjeita tarvittaessa täältä. Alustettu versionhallinta (Github). Kaikki palautettava lisätään versionhallintaan, sähköpostilla ei palauteta mitään!
    • Salli issuet vertaisarviointia varten, katso Issueiden luonnin salliminen repoon
    • Rekisteröidytty kurssille labtoolissa: https://study.cs.helsinki.fi/labtool/
    • Labtoolin pikaohje
    • Jos uskot tarvitsevasi lisämateriaalia ja esimerkkejä testaamisesta ja projektin pystyttämisestä, kannattaa tutustua testing and rmq projektiin jo tässä vaiheessa.

Viikko 2:

  • Palautus 2:
    • Dokumentaatio: Kirjoitettu koodi on selkeää ja kommentoitua (esim. Javalla tehdyssä työssä Javadoc-kommentit).
    • Viikkoraportti numero 2: ks. Palautukset
    • Ohjelma: Aloitettu ydinalueen toteutus käyttäen tarvittaessa esim. Javan valmiita tietorakenteita (ArrayList, HashMap yms.). Nämä korvataan myöhemmin omilla tietorakenteilla, mutta useissa tapauksissa ohjelman toteutus on helpompi aloittaa jostain muusta kuin tietorakenteista.
    • Testaus: Koodin kattava yksikkötestaus. (esim. Javalla tehdyssä työssä JUnit)
      • Varmista, että kun teet luokkia niin olet myös testannut ne mahdollisimman nopeasti/aikaisin (mieluiten testit samassa palautuksessa, kuin luokat on koodattu). Siten tiedät, että koodi, jonka juuri kirjoitit toimii kuten haluat. Tarvittaessa tutustu yksikkötestaukseen tukimateriaalissa.
    • Olisi erittäin suositeltavaa että jo tässä vaiheessa projektin testikattavuus olisi seurattavissa.
      • Javalla vaihtoehtoina esimerkiksi PIT, jacoco tai codecov. Jotain ohjeita löytyy täältä.
      • Muilla kielillä pitäisi viikoittain laittaa kattavuusraportti jonnekin näkyville. (Esim. codecov tai github pages).
    • Myös checkstyle tai muu vastaava olisi hyvä olla konffattuna jo tässä vaiheessa. Kannattaa jutella ohjaajan kanssa jos laadun seuraamisessa on jotain epäselvää.

Viikko 3:

  • Palautus 3:
    • Dokumentaatio: Kirjoitettu koodi selkeää ja kommentoitua.
    • Viikkoraportti numero 3
    • Ohjelma: Ohjelman ydinalue edennyt, aloitettu mahdollisesti jo omien tietorakenteiden toteutus.
    • Testaus: Koodin kattava yksikkötestaus.
    • Viimeistään tässä vaiheessa testikattavuuden olisi oltava käytettävissä viikkotarkastuksissa.
    • Viimeistään tässä vaiheessa checkstylen tai vastaavan koodin laadun seurannan tulisi olla käytössä.

Viikko 4:

  • Ensimmäiset vertaisarvioinnit jaetaan viikon palautuksen jälkeen. Katso labtoolista linkki katselmoitavaan repoon. Vertaisarvionnin deadline on sama kuin viikon 5 deadline.
  • Ohjeet vertaisarviointiin täällä
  • Salli issuet vertaisarviointia varten, katso Issueiden luonnin salliminen repoon

  • Palautus 4:
    • Dokumentaatio: Koodi kommentoitua. Aloitettu kirjoittamaan toteutus- ja testausdokumentaatiota.
    • Viikkoraportti numero 4
    • Ohjelma: Ohjelman ydintoiminta valmis. Omia tietorakenteita aloitettu.
    • Testaus: Koodin kattava yksikkötestaus. Aloitettu suorituskyky- tai muu aiheeseen sopiva testaus (kirjoita näistä testausdokumenttiin).

Viikko 5:

  • Toiset vertaisarvioinnit jaetaan viikon palautuksen jälkeen. Katso labtoolista linkki katselmoitavaan repoon. Vertaisarvionnin deadline on sama kuin DL 6.

  • Palautus 5:

    • Ensimmäinen vertaisarviointi tehtynä (Löydät linkin katselmoitavaan repoon labtoolista)
    • Dokumentaatio: Koodi kommentoitua. Aloitettu kirjoittamaan toteutus- ja testausdokumentaatiota.
    • Viikkoraportti numero 5
    • Ohjelma: Ohjelman ydintoiminta valmis. Omia tietorakenteita aloitettu.
    • Testaus: Koodin kattava yksikkötestaus. Aloitettu suorituskyky- tai muu aiheeseen sopiva testaus.

Viikko 6:

  • Palautus 6:
    • Toinen vertaisarviointi tehtynä (löydät linkin katselmoitavaan repoon labtoolista)
    • Dokumentaatio: Kirjoitettu koodi kommentoitua. Toteutus- ja testausdokumentaatiota kirjoitettu.
    • Viikkoraportti numero 6
    • Ohjelma: Tietorakenteet ja algoritmit toteutettu itse.
    • Testaus: Koodin kattava yksikkötestaus. Suorituskykytestausta tehty.

Demotilaisuus:

  • Mahdollisuus esittää koulun koneelta, mutta aiemmin sen kanssa on ollut ongelmia joten suositeltavaa ottaa oma läppäri.
  • Lyhyt noin 5 minuuttinen esitys ja mahdollisiin kysymyksiin vastailu (riippuen aikataulusta).

LOPULLINEN PALAUTUS

  • Dokumentaatio:
    • 100% selkeää ja kommentoitu koodi
    • Valmiit dokumentit:
      • Määrittelydokumentti (ei tarvitse päivittää alkuperäisestä)
      • Toteutusdokumentti
      • Testausdokumentti
      • Viikkoraportit
      • Käyttöohje
  • Ohjelma:
    • Mielellään suoritettava ohjelma github releasena (esim. jar-tiedosto)
    • Kaikki tietorakenteet ja algoritmit toteutettu itse
    • Työ valmis ja hiottu
  • Testaus:
    • Koodin kattava yksikkötestaus
    • Dokumentoitu ohjelman testaus testausdokumenttiin
    • Graafinen esitys esim. aikavaativuuksien toteutumisesta empiirisen testauksen perusteella