Low level programmering og C
2024/2025- 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 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.Forståelse for compilerens oversættelse af sourcekode til maskinkode.
Færdigheder
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.Kan læse og skrive programmer der anvender pointere og referencer, samt anvende pointeraritmetik.
Kompetencer
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.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 eksamenMindst fem afleveringsopgaver skal være afleveret.Faget prøvesFaget/modulet prøves selvstændigtPrøveformMundtlig prøveMundtlig 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.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)Varighed20 minutters forberedelse
20 minutters eksamen (inkl votering)Bedø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 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.