Innledning

Emnet gir ferdigheter innen praktisk strukturering og feilretting av softwareprogrammer, med kunnskap i verktøy for utvikling, bygging og enhetstesting. Emnet gir også en innføring i to sentrale teknologier for utviklere: nettverkskommunikasjon med http over sockets og bruk av databaser med JDBC for å hente ut og manipulere data.

Læringsutbytte

Kunnskap

Studenten...

  • vet hva JDBC (Java Database Connectivity) og ORM (Object-Relational Mapping) er og hvordan man kan benytte disse for å kommunisere med en database
  • kan forklare begrepet "SQL injection" og hvordan man unngår dette
  • kjenner til forskjeller i objektorientert og funksjonell programmering
  • kjenner til hvordan standarder for nettverkskommunikasjon dokumenteres via RFC
  • kjenner til hvordan applikasjoner kan utveksle data med hverandre gjennom sockets
  • vet når det kan være fornuftig å benytte lambda expressions i Java
  • kjenner til streams API-et, og når det er hensiktsmessig å benytte dette
  • kan bruke enhetstester i JUnit for å strukturere programmeringsoppgavene
  • kjenner til Git og GitHub, og relaterte tjenester for forvaltning av programkode
  • kjenner til gode arbeidsvaner for programmering, som: feedback, review og parprogrammering

Ferdigheter

Studenten...

  • kan bruke byggverktøy til å spesifisere avhengigheter, kjøre automatiserte tester og bygge Javaprosjekter
  • kan lese og skrive Java-kode som benytter lambda expressions med relevante interface fra java.util.function-pakken, som: Predicate, Supplier, Consumer og Function
  • kan anvende et industrinært Java-IDE
  • kan teste Java-applikasjoner ved hjelp av enhetstester og integrasjonstester
  • kan utvikle programmer som kommuniserer med en database og utfører CRUD (create, read, update, delete) operasjoner
  • kan utvikle http klient/tjener applikasjoner ved hjelp av sockets
  • kan bruke Git og GitHub til forvaltning av programkode
  • kan programmere effektivt i team med andre utviklere

Generell kompetanse

Studenten...

  • kan begrunne og presentere sine egne løsninger for en mottaker som har bakgrunn innenfor fagområdet programmering
  • kan vurdere og gi tilbakemelding på en teknisk løsning som en annen person har utviklet
  • kan reflektere rundt verdien av automatiserte tester i en utviklingsprosess
  • kan reflektere rundt valg av kommunikasjonsmetode mot en relasjonsdatabase

Emnet inngår i

Bachelor i informasjonsteknologi - Programmering

Bachelor i informasjonsteknologi - Frontend- og mobilutvikling

Læringsaktiviteter

Forelesninger, øvinger og mappevurdering. Studentene får relevante oppgaver de leverer inn og får kvalitativ tilbakemelding på. Tilbakemeldingene vil omhandle eventuelle funksjonelle svakheter (hva fungerer ikke som tiltenkt), men også eventuelle forbedringer i koden som vil medføre bedre kodekvalitet. Således vil studenten få anledning til å videreutvikle kode som allerede fungerer, men som kan skrives bedre.

Anbefalt tidsbruk

  • Deltakelse i undervisning og veiledning - 48 timer
  • Selvstudium - 40 timer
  • Selvstendige forberedelse til presentasjon/diskusjon i klassen - 12 timer
  • Studentarbeid med prosjekter, produksjoner, oppdrag mv. - 0 timer
  • Selvstendig øving / lab-arbeid / praktisk arbeid individuelt eller i grupper - 30 timer
  • Gjennomføring av og forberedelse til eksamen - 70 timer

Anbefalt tidsbruk totalt - 200 timer

Obligatorisk aktivitet

Arbeidskrav: Består av en eller flere oppgaver/aktiviteter som til sammen må vurderes godkjent 

Kvalifisert: G/IG (godkjent/ikke godkjent) 

Hjelpemidler: Alle hjelpemidler er tillatt 

Studenten må ha fått godkjent arbeidskravet i henhold til frister i retningslinjer for eksamen for å få lov til å avlegge eksamen.

Eksamen

Eksamensdel: Mappevurdering i gruppe (2 studenter)*

Varighet: Semesteret

Gradering: Nasjonal karakterskala A - F (F er ikke bestått)

Vekting: 100 % av hel vurdering 

Hjelpemidler: Alle hjelpemidler tillatt

Kontinuasjon

*Kontinuasjon av eksamen: Kontinuasjon gjennomføres i form av en 72 timers skriftlig individuell hjemmeeksamen med ny oppgavetekst.

Merknader

Anbefalte forkunnskapskrav: grunnleggende ferdigheter i objektorientert programmering (Java) og relasjonsdatabaser, samt kjennskap til automatisert testing.

Undervisningen vil bli levert på norsk eller engelsk avhengig av undervisere.