Alternativ semesteroppgave 2: Åpen oppgave
- Frist 29 april 2022 innan 23:59
- Poeng 15
- Leverer eit eksternt verktøy
- Tilgjengeleg 14 feb 2022 0:00 - 29 april 2022 23:59
Som et alternativ til semesteroppgave 2, kan du i år velge å gjøre din helt egen selvvalgte oppgave. Kravene til oppgaven er at den må være skrevet i Java, og må ha et visst omfang (tilsvarende minst 30 timers arbeid).
Det er ikke anledning til å samarbeide om et prosjekt. Du står fritt til å diskutere din kode med hvem som helst, så lenge du skriver den selv. Du står fritt til å benytte biblioteker utviklet av andre så lenge det fremgår tydelig hva som er ditt eget.
Dersom du velger åpen oppgave for mandatory 2, MÅ du møte gruppelederen din HVER UKE fra og med uken som begynner 28. mars (unntatt påskeuken) for å vise frem progresjonen din (unntak hvis gruppeleder mener at du allerede er ferdig). Hvis du ikke gjør dette, vil du ikke få lov til å gjøre den alternative semesteroppgaven.
Det er viktig å være klar over at gruppelederne ikke kjenner til kodebasen din like godt som hvis du velger den tradisjonelle oppgaven. Gruppeledere er nødt til å fordele tiden sin jevnt mellom alle i gruppen som ønsker det, og du kan risikere å havne i en låst situasjon der du ikke klarer å komme deg videre. I så fall vil du kunne bytte tilbake til den tradisjonelle oppgaven når som helst.
Du vil blir bedømt i følgende kategorier:
Dokumentasjon (3 poeng)
- Klassediagram
- Gode javadocs
- Gode brukerinstruksjoner for programmets målgruppe i README.md
- Frivillig, men sterkt oppmuntret: En kort video (< 3 min) som demonstrerer hvordan programmet funker (legg link i README.md)
Funksjonalitet (3 poeng)
- Programmet fungerer som forventet
Testing (3 poeng)
- Fornuftige tester for alle deler av programmet
Kodestil (3 poeng)
- Formatering
- Selv-dokumenterende kode (gode variabel- og metodenavn, passelig store metoder, høy lesbarhet, kommentarer hvis det foregår noe snålt)
- Fornuftig valg av tilgangsmodifikatorer (public/private)
God arkitektur (3 poeng)
- Demonstrerer fornuftig gjenbruk (hjelpemetoder, polymorfisme, generics)
- Høy modularitet (bruk av restriktive grensesnitt)
- Fornuftig inndeling i klasser
De aller beste prosjektene vil få en liten premie.