INF101 23V / Objektorientert programmering

Pensum og kursinformasjon

Ressurser i emnet

 

Emneansvarlige

Sondre Bolland sondre.bolland@uib.no
Torstein Strømme torstein.stromme@uib.no
Martin Vatshelle martin.vatshelle@uib.no

 

Gruppeledere & Gruppetimer

Gruppe 4/6 Mandag 10:15 - 12:00: Maya Robbestad, Elin Veila & Tyra Eide
Gruppe 8 Mandag 12:15 - 14:00: Steffen Storøy & Vegard Haugland
Gruppe 1 Tirsdag 12:15 - 14:00: Alexander Höpner & Gisle Kvamme
Gruppe 2 Tirsdag 14:15 - 16:00: Daniel Wagner & Severin Erstad
Gruppe 12 Onsdag 08:15 - 10:00: Karolina Gil & Marius Rusaas
Gruppe 5 Onsdag 10:15 - 12:00: Elsa Stojkov, Thomas Matre & Østen Edvardsen
Gruppe 7 Onsdag 14:15 - 16:00: Hilde Jordal & Alexander Höpner
Gruppe 9 Torsdag 14:15 - 16:00: Vilde Oppegård & Viljar Gjerde
Gruppe 10 Fredag 12:15 - 14:00: Martin Aarsland & Mina Walderhaug

PS: Gruppe 11 er avlyst

Læringsmål

Velkommen til INF101! Til grunn for alle læringsmål i emnet, ligger kursbeskrivelsen på https://www.uib.no/emne/INF101. Mer konkret vil en student som gjennomfører kurset kunne:

  • programmere i Java 17,
  • bruke JUnit5 til test-drevet utvikling,
  • bruke Swing for å utvikle desktop-applikasjoner, og
  • bruke git versjonskontroll.

Det er sentralt at studenter som gjennomfører kurset lærer å utvikle god objekt-orientert kode, noe som innebærer at de kan skrive kode med en høy grad av modularitet. Dette innebærer

  • å kunne dele inn programmer i passende enheter,
  • å velge gode abstraksjoner og datatyper som representerer disse enhetene, og
  • dokumentere presist hvordan hver enkelt bit fungerer.

Punktene over er vanskelige. Dette er oppgaver hvor også erfarne utviklere strever til daglig. Å gjøre gode valg når det kommer til komposisjon og abstraksjon er et håndverk; man må skrive kode selv, erfare at noen løsninger ikke virker, sammenligne med gode eksempler, prøve på nytt, og rett og slett skrive mye kode for å bli god.

Samtidig er det noen grunnleggende begreper som er viktig å ha på plass når man jobber med objekt-orientert programmering. Studenter som gjennomfører kurset vil lære å:

  • definere gode abstraksjoner ved hjelp av klasser, objekter og grensesnitt (interfaces),
  • bruke innkapsling ved bruk av tilgangsmodifikatorer og ved bruk av grensesnitt,
  • organisere og gjenbruke kode via komposisjon,
  • gjøre kode gjenbrukbar ved å bruke generiske typer,
  • gjenbruke kode med polymorfisme ved å bruke grensesnitt, arv og abstrakte klasser, og 
  • dokumentere kode med kommentarer og UML-diagrammer.

 

Til syvende og sist er poenget at du skal kunne lage ditt helt eget dataprogram fra bunnen av.

 

Læringsaktiviteter

  • Forelesning (tirsdager 10:15-12:00 og fredager 14:15-16:00 i RFB Auditorium 1)
  • Tutorial (mandager 14:15-16:00 i A66 Auditorium A)
  • Oppgavegjennomgang (onsdager 16:15-18:00 i RFB Auditorium 4)
  • Grupper
  • Arbeidsoppgaver
    • Ukesoppgaver
    • Quizer
    • Semesteroppgaver

 

Karaktersetting

Karakteren er en bokstavkarakter på skalaen A-F. Din karakter i faget vil bli beregnet som følgende:

  • 65% Eksamen
  • 5% Ukesoppgaver (lab1 - lab6)
    • Rettes automatisk bestått/ikke bestått av CodeGrade
    • Bestått innen tidsfristen gir 1 poeng, ikke bestått eller bestått etter tidsfristen gir 0 poeng
    • Mulig å få opp til maksimum 5 poeng
  • 15% Semesteroppgave 1
  • 15% Semesteroppgave 2

For å få lov til å ta eksamen, må man ha

  • levert inn alle quizer,
  • bestått lab0,
  • bestått semesteroppgave 1, og
  • bestått semesteroppgave 2.

Merk at det er nødvendig å bestå begge semesteroppgavene og selve eksamen (minst 40% score på hver) for å stå i kurset.

 

Eksamen

Eksamen avholdes 25. mai 09:00. Eksamensformen er digital, men uten bruk av Safe Exam Browser.
09. mai avholdes prøveeksamen 10:15 i Egget, Studentsenteret. Denne vil gi mye innsikt i hvordan ekte eksamen vil være.

Eksamen (draft)

 

Plagiat og samarbeid

  • Det er helt greit å bruke ulike kilder for løsningene, men husk å sitere kilder når betydelige deler er kopiert direkte fra kilden! Sitering kan for eksempel gjøres med kommentarer direkte i kildekoden:
    // Stack Overflow https://stackoverflow.com/a/1077349; 7. aug 2020
  • En kan (selvfølgelig) ikke kopiere en komplett løsning til en oppgave fra andre, og man må forstå hver eneste linje i koden man leverer.
  • Det er tillatt å samarbeide for å løse ukesoppgavene, men alle som har bidratt med idéer til en innlevering må nevnes med fullt navn (kun fornavn er ikke godt nok). Man må likevel ha skrevet all koden som blir levert inn selv, det er ikke lov å kopiere fullstendige løsninger fra andre. For eksempel om A, B og C samarbeider om en lab, må likevel A, B og C skrive all koden selv og levere inn hver sin innlevering, og i hver av dem må det oppgis at man har samarbeidet med de to andre. Dersom A løser oppgaven først og deretter hjelper B, holder det at B skriver en kommentar om at A har hjulpet. Det er ikke nødvendig å kreditere hjelp man får fra en gruppeleder.
  • Det er tillatt å benytte AI-verktøy som for eksempel Copilot eller Ghostwriter.
  • For semesteroppgave 2 gjelder egne regler som spesifiseres nærmere når den tid kommer.

Eksamen vil være individuell og uten mulighet for noe samarbeid. Et godt tips er derfor å veksle mellom å løse oppgaver individuelt og i fellesskap.