På denne siden:
1  Lese og reflektere
2  Tolke kode
3  Teste og implementere

Oppgaver

Oversikt over datoene når alle oppgavene publiseres og de gjeldene fristene finner dere i kursets plan.

Vi bruker Canvas for innlevering av oppgavene og publisering av evalueringsresultater.

Vi skal gjøre en god del programmering i programmeringsspårket Go. Les Hvorfor Go om hvorfor vi har valgt Go. Installasjon av Go programmeringsmiljøet er forholdsvis enkelt på alle de mest brukte platformene, men bruk av Unix og Linux programmer på platformer med MS Windows som operativsystem kan være mer utfordrende. For å gjøre det enklere skal vi bruke applikasjonen Docker, som vil gi oss mulighet til å få så like læringsmiljøer som mulig på alle platformene. Les mer om Om platformforskjeller.

Det er 3 typer obligatoriske oppgaver:

1 Lese og reflektere

Formålet med disse oppgavene er å lese og forsikre seg om at man har forstått pensum. Studenten leser en eller flere kortere tekster hver uke og gjennomfører en quiz. Studenten må få godkjent 10 av 13 quizer. En quiz er bestått, hvis studenten har besvart korrekt 75% av spørsmålene. Studenten kan få en ekstra forsøk, hvis studenten har besvart korrekt minst 25% av spørsmålene den første gangen. Quizene skal gjøres i klasserommet ved fysisk oppmøte.

Et eksempel på et quiz-spørsmål er følgende:
Anta at formålet med datakommunikasjon er at en aktør kan sende data til en annen aktør over avstander som utelykker oral eller visuell kommunikasjon. Hvilen av disse er det mest sannsynlige fundamentale problemet med datakommunikasjon?

2 Tolke kode

Formålet med disse oppgavene, som er hjemmeoppgaver (arbeidsperioden strekker seg over en eller to uker), er å kunne forstå hva dataprogrammer gjør. Det forutsetter at studenten har en grunnleggende forståelse av et eller flere programmeringsspråk. I dette tilfelle det aktuelle programmeringsspråket er Go. Studenten kan studere funksjoner, som er strukturert i pakker, på Discover Packages. Det skal ikke være nødvendig å bruke funksjoner utenom standardbiblioteket. Hvis det vil være behov for slike funksjoner, vil det være klart spesifisert i oppgaveteksten. Oppgavene skal gis i form av quizer. Det skal være begrenset tid for fullføre hver quiz, men det skal ikke være noen prosentgrenser for bestått. Hver quiz skal inneholde et åpent spørsmål, hvor studenten skal beskrive sin tankemåte på minst et av spørsmålene, hvis studenten har svart korrekt på alle spørsmål, og også beskrive sin tankemåte og reflektere hvorfor den ikke var korrekt for alle de spørsmålene som studentene svarte feil på.

Et eksempel på et quiz-spørsmål er følgende: Hva skal følgende funksjon returnere? (anta at fmt pakken er importert, og pakkenavnet er main)

        
      func main() {
          var i int
          j := i
          fmt.Println(i, j)
      }
        
      

3 Teste og implementere

Formålet med disse oppgavene, som også er hjemmeoppgaver, er å lage programmer selv, som kan bidra til å forstå grunnleggende mekanismer og modeller for operativssystemer og datakommunikasjon. Disse oppgavene vil ikke ha noen fasitsvar, så her må man bruke sin egen kreativitet. Dette vil også gi en mulighet til å lære mer test-drevet utvikling (som vi så på meget overfladisk i IS-114) og jobbe med problemløsning. Go programmeringsspråket er spesielt godt egnet for implementering av system-nivå programvare (som filsystemer, databaser, nettverksprotokoller og virtuelle applikasjoner) og samtidighet (og parallellisme). Studentene skal få tilgang til et mal med kildekode, som skal brukes som utgangspunkt. Bakgrunnsmaterialet for disse oppgavene er delvis basert på de nevnte pensumsbøkene:

Et eksempel på en oppgaven er følgende: Modeller og implementer et filssystem. Filssystemet er den applikasjonen, som brukes av operativsystemet og som sørger for at programmene og data kan bli bevart når datamaskinen er slått av. Det kalles også for persistent lagring av data, "non-volatile" (uflyktig) minne eller sekundært minne.Alle CRUD (Create-Read-Update-Delete; på norsk Opprette-Lese-Oppdatere-Slette = OLOS) metodene brukes også på et filssystem (som kan også betraktes som database). Definer datastrukturer for Fil og Mappe. Skriv tester for funksjoner AntallFiler(Mappe), TotalStorrelse(Mappe), osv. Implementer funksjonene og sjekk at alle testene er bestått. Husk å følge kodings konvensjoner og bruk kommentarer i koden fornuftig.