Low level C
2025/2026- 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.
Viden
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. Alt sammen med et mål om at blive (endnu) bedre til at forstå programmering i det hele taget.Den studerende har:
Færdigheder
- 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.Dem studerende kan:
Kompetencer
- Læse og skrive programmer der anvender pointere og referencer, samt anvende pointeraritmetik.
- Anvende C Standard Library funktioner i egne programmer.
- Anvende binære og hexadecimale tal, og regne om mellem talsystemerne.
- Anvende bitmanipulationsoperationer og skrive programmer der håndterer data på bit-niveau.Den studerende 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
- Sammenholde features i højniveau-sprog med funktionalitet i lavniveau-sprog
- Skrive simple programmer 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 eksamenMindst 2 afleveringsopgaver skal være afleveret.Faget prøvesFaget/modulet prøves selvstændigtPrøveformMundtlig prøveIndividuel mundtlig eksamen. Der trækkes et emne, som præsenteres mundtligt.OpgavetypeOpgaven 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øveIndividuelAnvendt sprog til prøvenDansk (Norsk/Svensk)Varighed30 minutters eksamen (inkl votering)Regler om hjælpemidler til eksamenIngen hjælpemidler er tilladtBedømmelsesform7-trins skalaBedømmer(e)Intern censurKriterier for prøvevurderingEksamenen bedømmes i forhold til i hvor høj grad der leves op til læringsmålene for valgfaget
På faget Low level 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.