Overordnede kursusmål
Formålet med kurset er at formidle de grundlæggende begreber inden
for programmering, herunder imperativ og objektorienteret
programmering samt grundlæggende konstruktioner inden for
funktionsprogrammering som f.eks. lambda-udtryk, og at sætte den
studerende i stand til at anvende disse begreber. Den studerende
skal navnlig kunne
- entydigt beskrive en problemstilling og en løsning, der er klar
til at blive implementeret i et programmeringssprog
- udvikle mindre programmeringsprojekter og dokumentere arbejdet i
en rapport
- læse programkode og analysere dens adfærd uafhængigt af en
implementering
- argumentere for, at et program er korrekt, og at vurdere dets
beregningskompleksitet
- anvende relevante softwareteknologier, der understøtter
struktureret programmering
Læringsmål
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
- Beskrive og anvende de grundlæggende begreber, der er fælles
for alle imperative programmeringssprog
- Omdanne en uformel problembeskrivelse til en entydig
specifikation, der kan implementeres i et programmeringssprog
- Forklare og anvende begreberne procedurer, virkefelter og
bindinger
- Forklare og anvende begreberne objektorienteret programmering,
herunder polymorfisme, nedarvning, indkapsling og refleksioner
- Vælge, vurdere, anvende og designe egnede datatyper og
datastrukturer
- Sammenligne forskellige implementeringer, begrunde deres
korrekthed og analysere deres køretidsopførsel
- Forklare og anvende programmeringsteknikker, herunder
rekursion, og relatere dem til deres eksekvering
- Anvende relevante softwareteknologier og værktøjer til
udvikling, dokumentation, afprøvning og implementering af
programmer
- Beskrive og anvende moderne programmeringsparadigmer som f.eks.
begivenhedsdrevne og grafiske miljøer
- Forklare og anvende grundlæggende softwaredesignmønstre
- Designe, implementere, dokumentere og evaluere en
softwareløsning af moderat størrelse i et programmeringssprog
- Anvende relevant faglitteratur på dansk og engelsk
Kursusindhold
Kurset vil introducere algoritmisk problemløsning og tænkning på en
måde, der er stort set uafhængig af programmeringssproget. Der vil
blive undervist i konkrete programmeringsparadigmer inden for
objektorienteret og imperativ programmering samt i
software-designmønstre primært i programmeringssproget Java.
Desuden vil programmeringssproget Python blive introduceret.
Følgende elementer vil blive dækket:
grundlæggende programmeringskonstruktioner (løkker, forgreninger
osv.); input og output; datatyper, primitive og refererede;
bindinger; værdier, operatorer og udtryk; klasser, objekter,
felter, metoder; design af klasser, hierarkier, nedarvning,
refleksion; abstraktion (abstrakte og generiske klasser,
interfaces); grundlæggende elementer af funktionsprogrammering
(lambda-udtryk); rekursion; mental model for udførelse af
programmeringssprog; grundlæggende beviser for korrekthed og grove
estimater for kompleksitet; brug af biblioteker;
kommandolinjeskripter; fejl- og undtagelseshåndtering; fejlfinding,
versionsstyring, dokumentation, enkle softwaredesignmønstre;
grafiske brugergrænseflader; udvalgte avancerede emner.
Endelig vil ca. et modul på 4 timer af kurset omhandle
studierelaterede aktiviteter for de studerende på
bacheloruddannelsen i softwareteknologi, der sikrer overgangen fra
elev til studerende, f.eks. studieteknikker og studieplaner.
Bemærkninger
En del af kurset formidler kompetencer relateret til
kernefagligheden i Softwareteknologi og dækker over elementer fra
retningens tidligere kursustype "Ingeniørarbejde".
Sidst opdateret
01. juni, 2023