Holdet S3m Pro (2025/26) - Undervisningsbeskrivelse

Undervisningsbeskrivelse

Stamoplysninger til brug ved prøver til gymnasiale uddannelser
Termin(er) 2024/25 - 2025/26
Institution NEXT
Fag og niveau Programmering B
Lærer(e)
Hold S2023 Pro/m (S2m Pro, S3m Pro)

Oversigt over gennemførte undervisningsforløb
Titel 1 Fundamentale koncepter
Titel 2 Først større projekt
Titel 3 SRC
Titel 4 OOP
Titel 5 Objektorienteret programmering i Python
Titel 6 Projekt: OOP design -  i teori og praksis
Titel 7 Eksamensprojekt
Titel 8 Forløb#6

Beskrivelse af de enkelte undervisningsforløb (1 skema for hvert forløb)
Titel 1 Fundamentale koncepter

Til introduktion til program er det valgt at lære dem at programmere i javascript med anvendelse af biblioteket P5.

Forløbet har haft følgende fokus områder.
1) Anvendelse af function setup() og function draw() samt funktioner som line(), circle(), rect(), background(), fill() samt begrebet RGB.
2) Oprettelse af variabler anvendelse af ’let’ og ’const’ (const i mindre grad anvendt af didaktiske årsager) samt forståelse for forskellige datatyper som numbers, floats, bools ,strings. Anvendelse af mouseX og mouseY som inputsvariabler.
3) Anvendelse af konsol til simpel fejl-finding.
4) Betingede udførsler ’if’, ’if-else’ og ’if-else-if’, samt anvendelse de mest gængse logiske operatorer
5) Kontrol strukturer som switch-case og løkker, herunder for- og while-løkker samt nestede løkker og deres anvendelser.
6) Enkelt samt multidimensionelle arrays. Array metoder som pop(), push(), shift(), unshift(), slice().
7) Funktioner, argumenter, parametre samt return værdier. Gængse biblioteks funktion keyPressed(), keyReleased() samt keyCodes. Opstilling udvikling af egne funktioner.
8) GUI elementer som knapper og tekst-inputfelter, samt anvendelse af callback functioner i forbindelse disse.

Igennem det meste af forløbet anvendte vi Visual Studio Code som IDE.
I denne IDE blev eleverne bedt om at installere følgende extensions.
• p5.vscode
• p5js Snippets
• Live Server

Under vejs arbejde vi på en masse små mindre programmeringsopgave for at træne programmeringsfærdighederne i de ovennævnte begreber.
Indhold
Kernestof:

Skriftligt arbejde:
Titel Afleveringsdato
Øvelser kapitel 3 08-09-2024
Øvelser kapitel 3 08-09-2024
Øvelser kapitel 3 08-09-2024
Øvelser kapitel 4 06-10-2024
Øvelser kapitel 4 06-10-2024
Øvelser kapitel 4 06-10-2024
Øvelser kapitel 5 27-10-2024
Øvelser kapitel 5 27-10-2024
Øvelser kapitel 5 27-10-2024
Omfang Estimeret: Ikke angivet
Dækker over: 23 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 2 Først større projekt

I dette forløb arbejdede eleverne primært med deres projekt. Eleverne fik til opgave at en app eller et spil med udgangspunkt i P5 biblioteket i javascript. Projektet blev afslutningsvis mundtligt præsenteret for læreren.

For at understøtte eleverne i deres første større udvikling projekt af et program. Blev følgende gængse problemstilling undervejs gennemgået for eleverne i form af klasseundervisning.
- Computational Thinking & Hierarchy chart; som værktøjer til at bryder problemer ned. Dette blev sammenkoblet med anvendelsen af funktioner.
- File organisering; her blev gennemgået fordele og ulemper ved forskellige måde man kunne strukturere ens fil, specielt med fokus på samarbejde i en kontekst af gruppe. Kobling mellem en og flere javascript-file, og hvordan man kan skifte imellem forskellige html-sider.
- Data storage; her blev der set nærmere på hvordan man kan læse og gemme data. Læsning af data gemt i txt- og JSON-filer, samt lagering af data via. cookies, session storage og local storage.
- Object Notation (JSON), elever blev introduceret til konceptet af objekter (uden at omkomme ind på klasse og OOP), og hvordan disse kan anvendes som en slags template til at lave mange lignende objekter.
Indhold
Kernestof:

Skriftligt arbejde:
Titel Afleveringsdato
Projektbeskrivelse 10-11-2024
Projektbeskrivelse 10-11-2024
Projektbeskrivelse 10-11-2024
Projekt 12-01-2025
Projekt 12-01-2025
Projekt 12-01-2025
Omfang Estimeret: Ikke angivet
Dækker over: 26 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 3 SRC

Studieretningscase (SRC). Dette var et tværfagligt af SO-forløb med matematik. Som introduktion til forløbet så vi videoen The Beauty of Bézier Curves: https://www.youtube.com/watch?v=aVwxzDHniEw
Eleverne fik følgende eksempler på cases som de kunne lave til et program.
• En racerbane i en racerspil
• En Bézier funktion i et tegneprogram
• En rutsjebane generator i et ala Theme Park spil
• En håndskrift efterligner givet en almindelig tekst strenge som input
• Etc. I er selv velkommen til at finde på andre så længe de bliver godkendt og indeholder Bézier kurver
Elever blev i programmering introduceret til linear interpolation i form at lerp() funktionen, for at de kunne lave deres program.
Mens elever i matematik havde fokus på det teoretisk bag Bézier kurver, var den reelle hensigt med forløbet, at de skulle lære at dokumentere deres software og udviklingen af denne. Dette skete i form af følgende to del-forløb
1) Dokumentation af den udviklingen af softwaren:
Her blev eleverne introduceret til Git og GitHub.  Dels for at give eleverne et værktøj, med hvilken de kunne dokumentere udvikling af deres software, i form af jeres commit-history. Men dels også for senere at give eleverne et værktøj, som de kan bruge til at samarbejde omkring deres kode i senere projekter. Som undervisningsmateriale fik eleverne følgende slides:
- Git – del 1 - GitHub
- Git – del 2 – Setup, Commit, Checkout
- Git – del 3 – Branches og Merge
Hvis der ønskes dybere indsigt, blev disse slides skabt med udgangspunkt i følgende kilder:
- https://emu.dk/sites/default/files/2023-07/gym_programmering_Versionsstyring%20i%20progammeringsundervisning.pdf
- https://jonascj.dk/git/
- https://git-scm.com/docs/gitglossary
- https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

2) Dokumentation af selve programmet:
I denne del af forløbet blev eleverne introduceret til softwaredokumentationsmetoderne:
Flowchart, pseudokode, indlejrede kodekommenterer, samt kodeblokke med tilhørende forklaring og uddybelse.
Eleverne blev også introduceret til konceptet af refaktorisering. Refaktoriseret kode skaber bedre software dokumentation, da denne er mere velstruktureret og derfor ofte vil være nemmere at dokumentere.
Her blev følgende anvendt som undervisningsmateriale:
- Kapitel 12 - "Dokumentation og kravspecifikation" – P5-bogen af Henrik Sterner  
- Slides: Struktured Programming & Flowchart
- Slides: Procedural Programmering & Refactoring
Som det fremgår blev flowcharts og refaktorisering hhv. koblet sammen med programmerings paradigmerne Structured og Procedural Programming. Det blev gjort for at skabe en rødtråd til det næste forløb som handlede om programmeringsparadigmet OOP.
Indhold
Kernestof:

Skriftligt arbejde:
Titel Afleveringsdato
SRC - ekstra aflevering 23-02-2025
SRC - ekstra aflevering 23-02-2025
SRC - ekstra aflevering 23-02-2025
Omfang Estimeret: Ikke angivet
Dækker over: 20 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 4 OOP

I dette forløbet blev eleverne introduceret til programmerings paradigmet Objekt-Orienteret Programmering. Forløbet er baseret på EMU materialet ”flokadfærd” udviklet af Henrik Sterner: https://emu.dk/htx/programmering/avancerede-konstruktioner/algoritmer-i-naturen-emergerende-flokadfaerd-og
Hvor eleverne lærer om de 4 søjler for OOP:
1) Indkapsling
2) Abstraktion
3) Nedarv
4) Polymorfi
Elever udarbejder her først eget vektor-bibliotek (søjle 1 og 2), samt derefter et akvarium med forskellige fisk (søjle 3 og 4). Hertil blev tilføjet Reynolds algoritme for flokadfærd.
Eleverne blev undervist ud fra slidene:
- OOP – Projekt
- OOP – Teori -del 1 (Indkapsling og Abstraktion)
- OOP – Øvelser - del 1 (Indkapsling og Abstraktion)
- OOP – Teori -del 2 (Relation og Polymorfi)
- OOP – Øvelser - del 2 (Relation og Polymorfi)
- OOP – Teori -del 3 (Reynolds algoritme)
- OOP – Øvelser - del 3 (Reynolds algoritme)
Som det fremgår af slidene blev søjle 3, nedarv, udvidet til at omfatte relatationerne.
- Association
- Dependency
- Aggregation
- Composition
- Inheritance (nedarv)
De blev i denne forbindelse også introduceret til UML klasse diagrammer.
Forløbet blev afsluttet med en årsprøve om OOP samt en præsentation af deres udviklede program med flokadfærd.
Indhold
Kernestof:

Skriftligt arbejde:
Titel Afleveringsdato
GIF-Bezier 02-05-2025
GIF-Bezier 02-05-2025
GIF-Bezier 02-05-2025
Årsprøve præsentation 18-05-2025
Årsprøve præsentation 20-05-2025
Årsprøve præsentation 25-05-2025
Omfang Estimeret: Ikke angivet
Dækker over: 14 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 5 Objektorienteret programmering i Python

Introduceret til de basale koncepter i objektorienteret programmering og principperne bag (herunder abstraktion, polymorfisme, indkapsling, nedarvning samt komposition).
Derudover repeteres de grundlæggende begreber fra sekvens-selektion-iteration i p5.js

Lærebøger:

[P0]: Programmering i Python af Kathrine Bohus Madsen og Henrik Sterner (120 sider)
[P1]: P5 Programmering af Henrik Sterner og Peter Sterner (20 sider)


Faglige mål i fokus:
• bruge programmering til at undersøge et emne eller problemområde, med henblik på
• via programmets funktion - at skabe ny indsigt eller til at løse et problem  behandle problemstillinger i samspil med andre fag
• anvende avancerede konstruktioner i et programmeringssprog
• redegøre for arkitekturen af programmer på forskellige abstraktionsniveauer, herunder relationen mellem brug og funktion
• redegøre for simple specifikationsmodeller og realisere disse i simple velstrukturerede programmer samt teste disse rette, tilpasse og udvide avancerede programmer



Kernestof i fokus:
• programmeringssprog og elementer i programmers opbygning, herunder variabler, typer, udtryk, kontrolstrukturer, parametrisering/abstraktionsmekanismer, rekursion, polymorfi og algoritmemønstre
• arkitekturen for programmers interaktion med omgivelserne med henblik på hændelsesstyret interaktion og interaktion mellem systemer  
• generiske programdele og biblioteksmoduler arbejdsgange og systematik i programmeringsprocessen, herunder test og fejlfinding
• abstrakte programmeringsbeskrivelser og dokumentation.
Indhold
Kernestof:
Omfang Estimeret: Ikke angivet
Dækker over: 53 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 6 Projekt: OOP design - i teori og praksis

Et større projekt i programmering, hvor eleverne fik mulighed for at prøve OOP design af  i praksis. Undervejs blev de også introduceret til dokumentation (herunder også flowdiagrammer, pseudokode, test, softwarearkitektur og rapportskrivning).
Læs projektbeskrivelsen her:
https://docs.google.com/document/d/1p5BJ2-b4OHXRMKIkYEUxo2omSNw-AZddQVVG4r2-PiU/edit?tab=t.0#heading=h.w0ghafehtzdg


Faglige mål i fokus:
• bruge programmering til at undersøge et emne eller problemområde, med henblik på
• via programmets funktion - at skabe ny indsigt eller til at løse et problem  behandle problemstillinger i samspil med andre fag
• anvende avancerede konstruktioner i et programmeringssprog
• redegøre for arkitekturen af programmer på forskellige abstraktionsniveauer, herunder relationen mellem brug og funktion
• redegøre for simple specifikationsmodeller og realisere disse i simple velstrukturerede programmer samt teste disse rette, tilpasse og udvide avancerede programmer
• demonstrere viden om fagets identitet og metoder  
• arbejde inkrementelt og systematisk i programmeringsprocessen


Kernestof i fokus:
• programmeringssprog og elementer i programmers opbygning, herunder variabler, typer, udtryk, kontrolstrukturer, parametrisering/abstraktionsmekanismer, rekursion, polymorfi og algoritmemønstre
• arkitekturen for programmers interaktion med omgivelserne med henblik på hændelsesstyret interaktion og interaktion mellem systemer  
• generiske programdele og biblioteksmoduler arbejdsgange og systematik i programmeringsprocessen, herunder test og fejlfinding
• abstrakte programmeringsbeskrivelser og dokumentation.
Indhold
Kernestof:
Omfang Estimeret: Ikke angivet
Dækker over: 18 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 7 Eksamensprojekt

Indhold
Kernestof:
Omfang Estimeret: 27,00 moduler
Dækker over: 58 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer
  • Projektarbejde

Titel 8 Forløb#6

Indhold
Omfang Estimeret: Ikke angivet
Dækker over: 0 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer