Harjoitustyön vaatimukset

Harjoitustyöllä kurssi suoritetaan 3–6 opintoviikon laajuisena. Tällöin tenttiä ei tehdä. Harjoitustyön asemesta voi tehdä tentin, jolla kurssin voi suorittaa vain 2 op:n laajuisena.

Harjoitustyön tulee kyetä suorittamaan joko kääntämällä tai tulkkaamalla jollain lähdekielellä kirjoitettuja ohjelmia. Harjoitustyön opintopistemäärä lasketaan seuraavien vaatimusten mukaisesti laskemalla lähdekielen ja toteutustekniikoiden opintopistemäärät yhteen (max 6 op).

Puolikkaiden ja maksimin ylittävien opintopistemäärien osalta noudatetaan erityissääntöjä.

Ryhmätyön voi palauttaa useaan kertaan eri opintopistemäärillä. Esimerkiksi jos yksi ryhmäläisistä haluaa lopettaa 3 op:n jälkeen, tehdään työstä 3 op:n laajuisena toimiva ja palautetaan se kaikkien nimissä. Tämän jälkeen muut ryhmäläiset voivat jatkaa tavoittelemaan isompaa opintopistemäärää. Kaikkien työn tekoon osallistuneiden nimi tulee totta kai mainita akateemista rehellisyyttä noudattaen jokaisessa palautuksessa, mutta palautuksessa tulee tehdä myös selväksi, ketkä haluavat työstä opintopisteet tämän palautuksen perusteella.

Harjoitustyön palautusohjeet on julkaistu erikseen.

Inkrementit

(deadlineja päivitetty 1.6.2017)

Alustava deadline sulkeissa (klo 16 kyseisenä päivänä ellei muuta ilmoitettu)

  1. Suunnittelu ja ryhmien muodostaminen (20.3.)
  2. Jäsentäjä valmis (perjantai 7.4. klo 10)
  3. Tarkastaja valmis (perjantai 5.5. klo 10)
  4. Välikielen generointi valmis [tai muita ominaisuuksia 1 op:n arvosta lisää] (15.5.)
  5. Kohdekielen generointi (naivi rekisteriallokaatio) valmis [tai muita ominaisuuksia 1 op:n arvosta lisää] (19.6.)
  6. Fiksu rekisteriallokaatio valmis [tai muita ominaisuuksia 1 op:n arvosta lisää] (14.8. klo 12)
  7. Koko työ viimeistelty ja valmis tarkastettavaksi (28.8. klo 12)

Perustellusta syystä voit ehdottaa omaa aikataulua. Perusteluksi kelpaa ainakin se, että aiot tehdä vain osan inkrementeistä, ja se, että aloitit harjoitustyön tekemisen myöhemmin kuin muut. Ota yhteyttä Slackitse tai sähköpostilla ja muista mainita hyväksytty oma aikataulusi palautuksen yhteydessä.

Inkrementtien palautus

  • Tehkää yhteinen Git-varasto Yousourceen tai Githubiin
  • Jos ette halua julkiseksi, käyttäkää Yousourcea
    • Antakaa tarkasteluoikeus käyttäjille antkaij ja aleator.
  • Inkrementti on palautettu, kun se on pushattu ja tagattu ko. repossa

Lähdekieli

Pakolliset ominaisuudet (3 op)

  • lukukelpoinen (ei binäärimössöä)
  • kommentit
  • vähintään kaksi eri tietotyyppiä (tyyppivirheet napattava kiinni viimeistään ajon aikana)
  • kokonaislukuaritmetiikka
  • valintojen tekeminen (if tms)
  • toisto (silmukat, rekursio tms)
  • parametrisoitavat aliohjelmat (funktiot, metodit tms), joissa voi käyttää paikallisia muuttujia

Lisäominaisuuksia

  • taulukot (moniulotteisesti 0,5 op, yksiulotteisesti 0.25 op)
  • merkkijonosyöte ja -tulostus (0,25 op)
  • merkkijonojen interpolointi tai printf-tyylinen formatointi itse tehtynä (0,25 op)
    • monimutkaiset printf-formaatit tms (0,25 op)
  • tietueet ja variantit (0,5 op)
  • geneeriset (staattiset) tyypit (0,5 op)
  • luokat ja myöhäinen sidonta (0,5 op)
  • ensiluokkaiset funktiot (0,5 op)
  • roskienkeruu (kokonaan itse tehtynä) (1 op)
  • rekursiivinen pattern match (vrt Haskell) (0.5 op)
  • laiska laskenta (1-2 op toteutustekniikasta riippuen)

Voit myös ehdottaa omia lisäominaisuuksia (AJK arvioi op-määrät pyynnöstä).

Toteutustekniikat

Tässä ilmoitetut opintopistemäärät lasketaan yhteen lähdekielen ominaisuuksista tuleviin opintopistemääriin.

  • suhteellisen tehokas tulkki ilman erillistä välikieltä 0 op
  • välikielen (esim. oma, JVM tai LLVM) generointi 1 op
  • konekielen (esim. AMD64 tai ARM) generointi omasta välikielestä
    • naivi rekisteriallokaatio 1 op
    • fiksu rekisteriallokaatio (esim. graafinväritys) 2 op

Arviointiperiaatteet

Hyväksyttävä harjoitustyö

  • on palautettu noudattaen myöhemmin ilmoitettavia palautusohjeita
  • sisältää kaikki ne osat, jotka kääntäjästä tyypillisesti löytyy (taikka poikkeavat ratkaisut on perusteltu ja dokumentoitu)
  • on laadittu noudattaen akateemista rehellisyyttä

Harjoitustyön arvioinnissa kiinnitetään huomiota seuraaviin osa-alueisiin (tärkeysjärjestyksessä):

  • Valmiusaste
    • 1 – toimii yhdellä esimerkillä
    • 2 – toimii muutamilla esimerkeillä
    • 3 –
    • 4 – toimii pääsääntöisesti oikein
    • 5 – toimii moitteettomasti
  • Omintakeisuus
    • 1 – koostuu lähinnä muualta lainatuista koodinpätkistä (joita on käytetty akateemista rehellisyyttä noudattaen)
    • 3 – rakennettu pääosin esimerkkejä mukaillen mutta ilman suoria lainauksia
    • 5 – käytetyt ratkaisut eivät ole esimerkkien kaavamaista uudelleenkäyttöä
  • Käytettyjen algoritmien vaativuus ja soveltuvuus (kukin keskeinen algoritmi erikseen)
    • 1 – ratkaisu joka ei kovin hyvin sovellu siihen, mihin sitä käytetään
    • 3 – tehtävään sopiva yksinkertainen ratkaisu
    • 5 – tehtävään sopiva teknisesti haasteellinen ratkaisu
  • Aikataulussa pysyminen
    • 1 - myöhässä alusta asti merkittävästi
    • 2 - aluksi aikataulussa mutta myöhästyi loppua kohden merkittävästi
    • 3 - myöhästyi monesti vähäisessä määrin
    • 4 - myöhästyi vain kerran tai pari kertaa ja vain vähäisessä määrin
    • 5 - pysyi aikataulussa
  • Koodin modulirajapintojen dokumentointiaste
    • 1 – ei rajapintadokumentaatiota
    • 3 – rajapinnat on pääosin dokumentoitu, mutta siinä on puutteita
    • 5 – kaikki keskeiset rajapinnat on dokumentoitu
  • Koodin selkeys
    • 1 – ohjelman toimintalogiikkaa on hankala seurata esimerkiksi bugeja selvitettävissä
    • 3 – ohjelman rakenne on selkeä ja siitä on helppo löytää, missä jokin tietty asia tehdään
    • 5 – kuten 3, ja lisäksi kunkin aliohjelman, modulin sisäinen toiminta on selkeää

Harjoitustyön lopullinen arvosana perustuu kokonaisarvioon, jossa edellä mainitut osa-alueet otetaan huomioon. Arvosanassa huomioidaan myös työn yleisilme ja se, kuinka isossa ryhmässä työ tehtiin. Arvosanaa ei lasketa mekaanisesti osa-alueiden arvioista. Arviosta annetaan perusteltu lausunto.

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.