Holdet T23b Pro (2025/26) - Undervisningsbeskrivelse

Undervisningsbeskrivelse

Stamoplysninger til brug ved prøver til gymnasiale uddannelser
Termin(er) 2023/24 - 2025/26
Institution Skive College
Fag og niveau Programmering B
Lærer(e)
Hold T23b Pro (T23b Pro, T23b Pro, T23b Pro)

Oversigt over gennemførte undervisningsforløb
Titel 1 Opstart på programmering
Titel 2 Trekantsberegner
Titel 3 Towerdefence spil
Titel 4 Vagter - Tilstandsmaskiner
Titel 5 Dialogsystem
Titel 6 Colab spil
Titel 7 SR-case
Titel 8 Datadrevet applikation i Unity
Titel 9 GameJam
Titel 10 Selvstændig forløb
Titel 11 Eksamensprojekt
Titel 12 Forløb#11

Beskrivelse af de enkelte undervisningsforløb (1 skema for hvert forløb)
Titel 1 Opstart på programmering

Eleverne starter på programmering, hvor de skal lære om:
* kontrol loops, variabler, funktioner.

Eleverne skal løse små opgaver inden for de enkelte begreber.

Faglige mål   
• rette, tilpasse og udvide simple programmer

Kernestof
• programmeringssprog og elementer i programmers opbygning, herunder variabler, typer, udtryk, kontrolstrukturer
Indhold
Omfang Estimeret: Ikke angivet
Dækker over: 8 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 2 Trekantsberegner

Eleverne skal i programmering lave en trekantsberegner. De skal udarbejde et dataflowdiagram for processen, hvorefter algoritmen skal implementeres i C# og Unity.

Faglige mål   
• 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 simple 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 simple programmer
• arbejde inkrementelt og systematisk i programmeringsprocessen.

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

Titel 3 Towerdefence spil

Der skal laves et towerdefence spil i programmering. Der skal her fokuseres på at lave et objektorienteret design, samt begynde at lære om avancerede konstruktioner som klasser, nedarvning og polymorfi. Eleverne får udleveret noget eksempel kode, som der skal arbejdes videre på.

Faglige mål   
• 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  
• 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
• programmeringssprog og elementer i programmers opbygning, herunder variabler, typer, udtryk, kontrolstrukturer, parametrisering/abstraktionsmekanismer og polymorfi
• 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
Omfang Estimeret: Ikke angivet
Dækker over: 14 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 4 Vagter - Tilstandsmaskiner

Der skal laves en tilstandsmaskine til vagter i et spil. Vagternes opførelse skal tage udgangs punkt i hvad spilleren skal gøre. I projektet skal eleverne:
* Der skal tages udgangspunkt i følgende asset. https://assetstore.unity.com/packages/essentials/starter-assets-thirdperson-updates-in-new-charactercontroller-pa-196526
* Der skal laves et tilstandsdiagram, der beskriver vagtens opførelse.
* Tilstands maskinen skal implementeres med både et state pattern og ved hjælp af en switch
* Der skal arbejdes sammen med pakken Navigation AI, så vagterne selv kan finde en rute.
* Der sluttes med en mundtligt præsentation af projektet, der svare til at lave fremlæggelse til en mundtlig eksamen.

Følgende gaglige mål og kernestof er omfattet af projektet:
Faglige mål   
• 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
• arbejde inkrementelt og systematisk i programmeringsprocessen.

Kernestof
• programmeringssprog og elementer i programmers opbygning, herunder variabler, typer, udtryk, kontrolstrukturer, parametrisering/abstraktionsmekanismer og polymorfi
• 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
Omfang Estimeret: Ikke angivet
Dækker over: 13 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 5 Dialogsystem

I dette projekt skal I lave et dialogsystem til et spil og dialogsystemet skal opfylde følgende krav:
• Man skal kunne tage valg i dialog systemet
• Der skal være mere end en npc, som I skal i dialog med
• Dialogen skal starte, når man kommer indenfor en bestemt afstand
• Dialog valg for en NPC skal kunne have indflydelse på dialogen for en anden NPC.
• Man skal kunne gemme sine dialoger fra spil til spil.
• Dialoger skal laves i en chatbot.


Der skal laves en synopsis til projektet

Der arbejdes med følgende mål

Faglige mål   
• 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  
• 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
• arbejde inkrementelt og systematisk i programmeringsprocessen.

Kernestof
• programmeringssprog og elementer i programmers opbygning, herunder variabler, typer, udtryk, kontrolstrukturer,, rekursion,
• 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
Omfang Estimeret: Ikke angivet
Dækker over: 20 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 6 Colab spil

Eleverne skal lave et spil i fællesskab. De skal:
* Lære at dele kode ved hjælp af github.
* Definere undersystemer ved hjælp af diagrammer som klassediagrammer, sekvensdiagrammer og tilstandsdiagrammer.
* Holde status og snakke sammen om at kode den rigtige funktionalitet
* Få forskellige systemer til at arbejde sammen
* Arbejde med events i C# og implementere singleton pattern.

Der er arbejdet med følgende mål:
Faglige mål   
• 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
• arbejde inkrementelt og systematisk i programmeringsprocessen.

Kernestof
• 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
Omfang Estimeret: Ikke angivet
Dækker over: 14 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 7 SR-case

Der skal laves en SR-case i samarbejde med matematik, hvor eleverne skal lave en styring til soltårne. Eleverne skal:
* Lave en simulering af soltårne
* Udarbejde algoritme til at placere mange heliostater.
* Lave styring til at regulere heliostater

Faglige mål   
• behandle problemstillinger i samspil med andre fag
• 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
• demonstrere viden om fagets identitet og metoder

Kernestof
• programmeringssprog og elementer i programmers opbygning, herunder algoritmemønstre
• generiske programdele og biblioteksmoduler
• abstrakte programmeringsbeskrivelser og dokumentation.
Indhold
Omfang Estimeret: Ikke angivet
Dækker over: 2 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 8 Datadrevet applikation i Unity

Du skal udvikle et program i Unity, som henter og visualiserer eksterne data fra en API – fx vejrdata (OpenWeatherMap) eller nyheder (NewsAPI). Programmet skal demonstrere avancerede programmeringskonstruktioner og hændelsesstyret interaktion, og du skal dokumentere din udviklingsproces i en synopsis.
Der skal arbejdes i grupper og dele software via github.

Faglige mål
• Bruge programmering til at undersøge et problem og skabe ny indsigt
• Anvende avancerede konstruktioner
• Redegøre for programmets arkitektur og interaktion
• Dokumentere og teste programmet
• Vise forståelse for programmering som fag og metode
• Arbejde inkrementelt og systematisk
Indhold
Omfang Estimeret: Ikke angivet
Dækker over: 13 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 9 GameJam

Eleverne skal i grupper lave et spil, der skal opfylde følgende krav. De skal arbejde i store grupper.

• Spillet skal være et simuleringsspil.
○ Man skal kunne placere bygninger.
○ UI.
○ Der skal være en UI, hvis man så trykker på en knap, kommer der en bygning op, og den skal placeres på en valgfri måde (Ideer: Flytte rundt med cursor eller placeres i et grid.)
• Instantiating prefabs via kode.
• Lav UML-Diagrammer der passer til projektet.
• Der skal være 2 grupper, som er inddelt 50/50.
• Der skal være roller, hver rolle er udleveret til en person.
○ Asset manager
○ GitHub manager
○ Spil manager
○ Scrum master
• Minimal design: Alle skal have kode opgaver.
• Et eller flere af disse systemer skal være repræsenteret:
○ Shop system
○ Ressource system.
○ Bygge system.
○ Cyklus system.
○ Inventory.
• Per system man vælger, skal der være et design-pattern der passer til systemet.
○ En god hjælp: https://refactoring.guru/design-patterns/catalog
○ En anden god hjælp: https://github.com/Habrador/Unity-Programming-Patterns
○ Man kan altid spørge chatbots til hvilke design-patterns der passer ind.
• Hvilke unitests skal man have?
○ Koden skal opfylde de tests.
○ Hver gang man ændrer koden skal man køre de unitests.
• Plakat som aflevering.
○ UML-Diagrammer med designeret design pattern (Hvilke systemer repræsenterer UML-Diagrammerne?)
○ Kode eksempler.
○ Billeder af spillet.
○ Kort forklaring af spillet.
Anbefalede programmer: Adobe Illustrator, Canva: https://www.canva.com/ & PowerPoint.

Faglige mål
Eleverne skal kunne:
• 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
• arbejde inkrementelt og systematisk i programmeringsprocessen
Kernestof
Gennem kernestoffet skal eleverne opnå faglig fordybelse, viden og kundskaber. Kernestoffet er:
• programmeringssprog og elementer i programmers opbygning, herunder:
  variabler
  typer
          udtryk
  kontrolstrukturer
  parametrisering/abstraktionsmekanismer
  polymorfi
• arkitekturen for programmers interaktion med omgivelserne med henblik på:
       hændelsesstyret interaktion
• generiske programdele og biblioteksmoduler
• arbejdsgange og systematik i programmeringsprocessen, herunder:
   test
   fejlfinding
• abstrakte programmeringsbeskrivelser og dokumentation
Indhold
Omfang Estimeret: Ikke angivet
Dækker over: 14 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 10 Selvstændig forløb

Ved hjælp af AI, skal eleverne finde områder inden for programmering B, hvor de har behov for at lave flere opgaver. Så eleverne kan både lave en masse små opgaver eller lidt støre projekter, hvor de arbejder med udvalgte emner indenfor pensum.

Faglige mål:
anvende avancerede konstruktioner i et programmeringssprog
redegøre for arkitekturen af programmer på forskellige abstraktionsniveauer, herunder relationen mellem brug og funktion
rette, tilpasse og udvide avancerede programmer

Kernestof
programmeringssprog og elementer i programmers opbygning, herunder:
   * variabler
   * typer
   * kontrolstrukturer
   * parametrisering/abstraktionsmekanismer
   * rekursion
   * polymorfi

Der sluttes af med at eleven fremlægger hvad man har lavet.
Indhold
Omfang Estimeret: Ikke angivet
Dækker over: 7 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 11 Eksamensprojekt

Tema 1 - spilelement til spil
I jeres eksamensprojekt i programmering, skal I udvælge et element indenfor spil. Det er vigtigt at I skal udvælge jer enkelte dele af et spil, som I kan gå i dybden med.

Faglige mål   
• 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
• demonstrere viden om fagets identitet og metoder
• arbejde inkrementelt og systematisk i programmeringsprocessen.

Kernestof
• 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
Omfang Estimeret: 14,00 moduler
Dækker over: 14 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 12 Forløb#11

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