forstå prosedyre- og objektorienterte programmeringsparadigmer
forstå og kunne anvende prosesser, tråder, synkronisering og kommunikasjon i flerprosess- og flertrådet programvare
kunne skrive, bygge og feilsøke C++-programvare ved bruk av moderne utviklingsverktøy
kunne lese, forstå og forklare oppførselen til C++- og Python-programmer
kunne finne og anvende programmeringsspråk-spesifikk dokumentasjon og standardbibliotek
kunne anvende tredjepartsbibliotek i C++ og Python.
kunne lese og ta frem grunnleggende programvaremodeller i språket UML
kunne skrive gjenbrukbar og vedlikeholdbar programkode
ha ferdigheter i bruk av moderne distribuert og skalerbar versjonskontroll for kildekode
forstå og kunne forklare viktigheten av versjonskontroll i en programvareutviklingsprosess
forstå hvordan programmer kan inneholde/anvende komponenter skrevet i ulike programmeringsspråk ved hjelp av ABI
kjenne til, forstå og kunne implementere et utvalgt sett av viktige algoritmer og datastrukturer
kjenne til begrepene syklomatisk kompleksitet og Big O-notasjon
forstå hva designmønstre (design patterns) er, og kunne identifisere kjente designmønstre.
kunne utføre grunnleggende maskinlæringsoppgaver i Python
Innhold
Grunnleggende emne i C++ og Python. Emnet er praktisk/ferdighets-orientert og inkluderer obligatoriske øvinger og et programmeringsprosjekt. De viktigste språklige mekanismer dekkes, slik som datatyper, const og constexpr, deklarasjon av variabler og initialisering, minneallokering, operatorer, funksjoner, typekonvertering, kontrollflyt og kontrollstrukturer, egendefinerte datatyper ved bruk av klasser, arv, bruk av templates og exceptions. Både prosedyre- og objektorientert programmering er dekket. UML benyttes for å modellere oppførsel og struktur for objektorientert programvare. Anvendelse av distribuert versjonskontroll er en integrert del av programmeringsprosjektet. Moderne integrert utviklingsmiljø (IDE) benyttes for å skrive, bygge og feilsøke programvare. Python-delen dekker grunnleggende språklige mekanismer, virtuelle kjøremiljø, pakkehåndteringsverktøy og bruk av maskinlæringsrammeverk for enkle maskinlærings-oppgaver, inkludert trening og prediksjon.