Copenhagen School of Design and Technology

da

Low level programmering og C

2024/2025
Engelsk titel
Low Level Programming and C
Uddannelse
Datamatiker
Uddannelsestype
Fuldtidsuddannelse
Niveau
Erhvervsakademi
Semester
4. semester
Fagets/modulets varighed
1 semester
Ects
10
Udd. element
Valgfag
Sprog
Dansk
Opstart
Efterår
Forår
Studiested
Guldbergsgade 29 N, København N
Fagkode
3050456
Fag- /modulansvarlig
Peter Lind
  • Formål og læringsmål

    Programmeringssproget C blev udviklet i starten af 1970’erne, men er på trods af sin høje alder, stadig både relevant og aktuelt. Ikke mindst fordi det har influeret så mange andre sprog, at dets syntaks med krøllede parenteser og semikolon efter hver linje, nærmest er blevet synonymt med programmering.



    Og fordi sproget er designet til at være meget ”low-level”, så tæt på maskinkode som muligt uden at blive platform-specifikt, er det en oplagt kandidat til styring af hardware, bit-manipulation og detaljeret memory management på selv meget begrænsede systemer.



    På sin vis er C ”programmeringssprogenes latin”, i den forstand at så mange andre sprog bygger på det, og selv hvis man ikke ligefrem taler sproget, så medfører en solid forståelse af C, en dybere forståelse af de programmeringssprog man ellers arbejder i.



    Målet med dette valgfag er derfor at bruge sproget C til at få en dybere forståelse af de grundlæggende principper for al programmering, fra de allermindste detaljer om bits og bytes, over kompleksiteten i pointere og memory management, til hvordan vi opnår det høje abstraktionsniveau vi kender fra mange andre programmeringssprog med deres typer, objekter, referencer etc.

    Vi kommer både til at regne med binære tal, skrive kode der håndterer bit-streams, arbejde med pointer-aritmetik, kigge på hvordan compileren laver vores programmer om til maskinkode, og eksperimentere med at programmere direkte til hardwaren i små microcontrollere, som for eksempel Arduino. Alt sammen med et mål om at blive (endnu) bedre til at forstå programmering i det hele taget.

    Viden

    Forståelse for compilerens oversættelse af sourcekode til maskinkode.

    Kendskab til build-processor, objektfiler, linkere, makefiles, etc.

    Kendskab til fundamentale begreber for maskinkode: registre, memory, stack, instruktioner, flag

    Forståelse for anvendelse af memory i low-level programmering: adresser, busbredde, pointere

    Kendskab til memory-modeller i programmeringssprog, brugen af stack og heap og hvor meget forskellige datatyper fylder.

    Kendskab til typiske microcontroller-komponenter som input/output registre, timere og UARTs.

    Færdigheder

    Kan læse og skrive programmer der anvender pointere og referencer, samt anvende pointeraritmetik.

    Kan anvende C Standard Library funktioner i egne programmer.

    Kan anvende binære og hexadecimale tal, og regne om mellem talsystemerne.

    Kan anvende bitmanipulationsoperationer og skrive programmer der håndterer data på bit-niveau.

    Kompetencer

    Kan forstå programmeringssprog og compilere i dybden – kan sætte sig ind i hvordan forskellige programmeringssprog kan have forskellige tilgange til fx brug af memory

    Kan sammenholde features i højniveau-sprog med funktionalitet i lavniveau-sprog

    Kan skrive simple programmer til microcontrollere med on/off styring af digitale kredsløb.

  • Undervisningsform
    Primært klasseundervisning med oplæg, øvelser og projektarbejde. Der opfordres til at studerende kommer med forslag til projekter!

    Dertil små projektopgaver af ca. en uges varighed.
  • Forudsætninger for at deltage i faget

    Faglige forudsætninger for at deltage i faget
    Have gennemført 3.semester programmering på datamatiker-uddannelsen – og have et solidt fundament for programmering i Java og JavaScript.

    Materielle forudsætninger for at deltage i faget
    Ingen udover de sædvanlige krav til en bærbar computer

  • Prøve

    Læringsmålene for prøven er identiske med fagets/fagenes læringsmål

    Forudsætninger for indstilling til eksamen
    Mindst fem afleveringsopgaver skal være afleveret.
    Faget prøves
    Faget/modulet prøves selvstændigt
    Prøveform
    Mundtlig prøve
    Mundtlig prøve med forberedelse

    Individuel mundtlig eksamen. Der trækkes et emne, og forberedes et oplæg eller en løsning, som præsenteres mundtligt.
    Opgavetype
    Opgaven trækken til selve eksamen – der kan være tale om et teoretisk oplæg, beskrivelse af eksisterende kode, eller udvikling af et lille program.
    Individuel eller gruppeprøve
    Individuel
    Anvendt sprog til prøven
    Dansk (Norsk/Svensk)
    Varighed
    20 minutters forberedelse

    20 minutters eksamen (inkl votering)
    Bedømmelsesform
    7-trins skala
    Bedømmer(e)
    Intern censur
    Kriterier for prøvevurdering
    Eksamenen bedømmes i forhold til i hvor høj grad der leves op til læringsmålene for valgfaget
48
timers undervisning
226
timers forberedelse
Tallene viser omfanget af arbejdsbelastningen relateret til faget fordelt på forskellige studieaktiviteter.

På faget Low level programmering og C modtager du 48 timers undervisning, hvilket svarer til 64 lektioner (1 lektion = 45 min.) og 18% af din samlede arbejdsbelastning på faget.

Undervisningen vil primært bestå af følgende aktiviteter: klasseundervisning, øvelser.
Forberedelsen vil primært bestå af følgende aktiviteter: læsning af egne noter, læsning af pensum.

Læs om KEAs studieaktivitetsmodel

*KEA kan fravige det angivne timetal, hvis det er begrundet i særlige forhold.