02100 Indledende programmering og softwareteknologi

2023/2024

Kurset erstatter DTU's generelle programmeringskursus 02002 for uddannelsesretningerne Softwareteknologi og Computer Engineering.
Kursusinformation
Introductory Programming and Software Technology
Dansk
10
Bachelor
E5 (ons 8-17)
Campus Lyngby
Forelæsninger og øvelser. Øvelserne omfatter løsningen af mindre opgaver, som laves i grupper.
13-uger
E5A
Skriftlig eksamen og bedømmelse af opgave(r)
Karakterbedømmelsen fremkommer ved en helhedsvurdering på basis af de afleverede individualiserede opgaver samt den skriftlige eksamen.
Skriftlig eksamen: 3 timer
Alle hjælpemidler er tilladt :

Der vil ikke være internetadgang under eksamen.

7-trins skala , intern bedømmelse
02002/02003/02101/02102
Jørgen Villadsen , Lyngby Campus, Bygning 322, Tlf. (+45) 4525 3733 , jovi@dtu.dk
Carsten Witt (Primær kontaktperson) , Tlf. (+45) 4525 3722 , cawi@dtu.dk
01 Institut for Matematik og Computer Science
I studieplanlæggeren
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