AIS1003
Objektorientert programmering for kyberfysiske systemer
Høst
Ålesund
Norsk
Om emnet
Faglig innhold
Emnet inneholder et utvalg av følgende tema, med fokus på anvendelse mot kyberfysiske systemer:
- Grunnleggende objektorientert programmering og design.
- Grunnleggende begreper innen objektorientering (bl.a. klasser, klassehierarki, objekter, innkapsling, polymorfisme).
- Kode modularisering og gjenbruk.
- Introduksjon til byggsystemer, integrerte utviklingsmiljø (IDE), debugging, enhetstesting og versjonskontroll.
- Innføring i grunnleggende datastrukturer (f.eks arrays, lister, hash-maps, trær)
- Minne og feilhåndtering.
Mer informasjon om pensum blir tilgjengeliggjort ved starten av semesteret.
Læringsmål
Følgende læringsutbytter er formulert med tanke på anvendelse relatert til kyberfysiske systemer.
Kunnskap
- Kandidaten kan forklare enkle prinsipper innen objektorientert programmering som innkapsling, modularisering og samhandlende objekter.
- Kandidaten kan formulere prinsipper for god kodedesign (kobling/kohesjon), kodekvalitet og god kodestil, og hvorfor det er viktig i programvaredesign.
- Kandidaten kan skrive kode for ulike plattformer, og som er testbar og gjenbrukbar.
- Kandidaten kan identifisere og bruke grunnleggende datastrukturer for best løse et gitt problem.
Ferdigheter
- Kandidaten kan anvende grunnleggende objektorientert tankegang til å analysere og løse enklere problemer.
- Kandidaten kan sette opp enkle programmiljø for å utvikle, teste og kjøre objektorienterte programmer.
- Kandidaten kan lage strukturert, oversiktlig og godt dokumentert programkode basert på prinsipper for god kodedesign.
- Kandidaten kan anvende klasser (også fra biblioteker), kontrollstrukturer og samarbeid mellom objekter, samt finne fram i API-dokumentasjon.
- Kandidaten kan benytte et integrert utviklingsmiljø (IDE) godt.
- Kandidaten kan benytte en "debugger" til å undersøke programkode under kjøring og for å skrive enhetstester.
- Kandidaten kan modellere og implementere elementer av typiske kyberfysiske systemer med bruk av konsepter innen OOP.
Generell kompetanse
- Kandidaten kan kommunisere og drøfte kodeløsninger og forklare hvordan et program oppfører seg.
- Kandidaten kan finne og anvende verktøy og dokumentasjon relatert til programmeringsspråket og standardbiblioteket.
- Kandidaten kjenner til programmeringsaspekter med betydning for informasjonssikkerhet.
- Kandidaten kan overføre konsepter innen OOP til andre programmeringsspråk.
- Kandidaten kan benytte algoritmisk tenkning ("computational thinking") og kybernetisk systemtekning til å løse ingeniørfaglige problemer og bryte større ingeniørfaglige problemer ned i mindre delproblemer som kan løses hver for seg og settes sammen til overordnede systemer.
Læringsformer og aktiviteter
Emnet benytter hovedsaklig en blanding av forelesninger, øvingstimer og praktisk rettet laboratoriearbeid/prosjektarbeid som læringsformer. Det benyttes en konstruktivistisk tilnærming til læring, med stort fokus på problemløsing og praktisk anvendelse av teori.