Harjoitustyön vaatimukset

Harjoitustyöllä kurssi suoritetaan 3–8 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 olla laadittu 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 8 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ä ensin 3 op:n laajuinen 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.

Suunnitelma ja versionhallinta

Ryhmän tulee laatia alustava suunnitelma viimeistään 22.11.2018. Suunnitelman tulee sisältää vähintään

  • ryhmään kuuluvien opiskelijoiden nimet ja sähköpostiosoitteet
  • hahmotelma lähdekielen ominaisuuksista
  • kohdekieli (tai tulkkityyppi)
  • käytettävät työkalut (isäntäkieli ym)
  • kääntäjän testauksen periaatteet (milloin, millä työkaluilla, aikataulu)
  • ryhmän jäsenten kesken sovittu työnjako
  • tavoiteltu opintopistemäärä
  • aikataulusuunnitelma, jossa työ on jaettu 2-3 viikon mittaisiin inkrementteihin tai sprintteihin (ks. alla)

Suunnitelmaa saa ja tulee tarkentaa ja muokata projektin edetessä.

Suunnitelma (ja mahdolliset sprinttidokumentit) tallennetaan GIT-tietovarastoon, jossa kääntäjäprojektia ryhdytään tekemään.

Kääntäjän lähdekoodi tulee laatia tähän samaan Git-tietovarastoon niin, että Git-historiasta käy ilmi kääntäjäprojektin kulku. Git-historian olennainen väärentäminen katsotaan opiskelijan vilpiksi.

Git-tietovarasto on suositeltavaa laittaa Yousourceen tai GitHubiin. Mikäli varasto ei ole julkinen, siihen tulee kurssin opettajille järjestää vapaa lukuoikeus. Tietovaraston sijainti kirjataan Korppi-lomakkeelle.

Aikataulusuunnitelma

Voitte valita, teettekö aikataulusuunnitelmanne inkrementti- vai sprinttipohjaisesti.

Inkrementtimallissa suunnitelmaan kirjataan

  • jokaisen inkrementin alku- ja loppupäivä
  • mitä inkrementissä on tarkoitus tehdä

Sprinttimallissa suunnitelmaan kirjataan

  • jokaisen sprintin alku- ja loppupäivä
  • miten sprinttien sisällä toimitaan (alkupalaveri, loppupalaveri tms)

Sprinttimallin tapauksessa git-varastoon tulee työn edetessä dokumentoida, mitä kussakin sprintissä sovittiin tehtäväksi ja mitä oikeasti tuli tehdyksi.

Lähdekieli

Pakolliset ominaisuudet (3 op)

Hyväksyttävän harjoitustyön lähdekieleltä vaaditaan seuraavat ominaisuudet:

  • lukukelpoinen (ei binäärimössöä)
  • kommentit
  • kokonaislukuaritmetiikka (infix-syntaksilla, ellei erikseen muuta sovita)
  • valintojen tekeminen (if tms)
  • toisto (silmukat, rekursio tms)
  • muuttujat
  • jonkinlainen syötteen välitys vähintään ohjelman alussa, esim. muuttujille alkuarvot
  • jonkinlainen tulostus vähintään ohjelman lopussa, esim. muuttujien loppuarvot

Lisäominaisuuksia

Lisäämällä kääntäjääsi (tai tulkkiisi) lisäominaisuuksia, ansaitset suuremman opintopistemäärän. Alla esimerkkejä ominaisuuksista ja vastaavista opintopistemääristä.

  • aliohjelmat, joille voi viedä parametreja ja joissa voi käyttää paikallisia muuttujia
    • ei rekursiota (0,5 op)
    • rekursiolla (1 op)
    • ensiluokkaiset funktiot (2 op)
  • taulukot (moniulotteisesti 0,5 op, yksiulotteisesti 0.25 op)
  • merkkijonosyöte ja -tulostus (0,5 op)
  • merkkijonojen interpolointi tai printf-tyylinen formatointi itse tehtynä
    • yksinkertainen interpolointi tai yksinkertaiset printf-formaatit (0,5 op)
    • monimutkaiset printf-formaatit (1 op)
  • tietueet ja variantit (1 op)
  • staattinen tyypintarkastus
    • yksinkertaiset tyypit (1 op)
    • geneeriset tyypit (2 op)
  • luokat ja myöhäinen sidonta (2 op)
  • rekursiivinen pattern match (vrt Haskell) (1 op)

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.

  • tulkki ilman erillistä välikieltä 0 op
  • tulkki omalla välikielellä 2 op
  • konekielen tai vastaavan generointi (suoritus natiivisti, emulaattorilla tms)
    • LLVM, JVM, webassembly (2 op)
    • rekisterikoneen konekieli, esim AMD64 (3 op)

Arviointiperiaatteet

Hyväksyttävä harjoitustyö

  • on palautettu noudattaen 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 – on tehty oikeantyylisesti mutta on niin buginen että ei toimi yhdelläkään syötteellä oikein
    • 2 – on tehty olennaisesti oikein mutta on niin buginen että ei toimi yhdelläkään syötteellä oikein
    • 3 – toimii oikein ainakin yhdellä syötteellä
    • 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 ja 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.

Kurssiarvosana saadaan harjoitustyön arvosanasta lisäämällä lukutehtävistä mahdollisesti ansaittu arvosanan korotus.

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