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ä.

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

  • 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)

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

Toteutustekniikat

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

  • jäsennyspuun suora tulkki 0 op
  • välikielen (esim. oma, JVM tai LLVM) generointi 1 op
  • konekielen (esim. AMD64 tai ARM) generointi 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
  • 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.