Holdet sh_3r Pro (2025/26) - Undervisningsbeskrivelse

Undervisningsbeskrivelse

Stamoplysninger til brug ved prøver til gymnasiale uddannelser
Termin(er) 2024/25 - 2025/26
Institution Y - NEG
Fag og niveau Programmering B
Lærer(e) Mikkel Kirkeby Mosthaf
Hold 2024 Pro/sh_r (sh_2r Pro, sh_3r Pro)

Oversigt over gennemførte undervisningsforløb
Titel 1 Introduktion til programmering og Python
Titel 2 Programmering med Python
Titel 3 Programudvikling med Python
Titel 4 Årsprøveopgave
Titel 5 Webprogrammering med flask
Titel 6 Forløb: website med flask
Titel 7 Klasser og objekter (OOP)
Titel 8 Programudvikling med GUI og AI
Titel 9 Eksamensprojekt
Titel 10 Opsamling og repetition
Titel 11 Forløb: Spil med JS eller Python

Beskrivelse af de enkelte undervisningsforløb (1 skema for hvert forløb)
Titel 1 Introduktion til programmering og Python

GENEREL INFORMATION OM ALLE FORLØB
De følgende forløb bygger på studieplansbeskrivelsen her: https://github.com/kirkby/progb/blob/main/studieplan/0-studieplan.md.

Bemærk at noget kernestof, fx
- Rekursion
- Polymorfi
- Algoritmemønstre
- Objekter
introduceres i 3.g. af didaktiske hensyn (læringskurve).
=============================================

FORLØB 1
Installation af python og programmeringsværktøjer.
Opsætning af udviklingsmiljø. og introduktion til IDE som værktøj.
Introduktion til grundlæggende begreber i programmering, med udgangspunkt i python.

Omtrentligt omfang
12 moduler.
Perioden fra skolestart til medio september.
Mindre skriftlig aflevering med løsning af programmeringsopgaver.

Kernestof
Programmeringssprog og elementer i programmers opbygning, herunder variabler, typer, udtryk, kontrolstrukturer, som fx

Blokke, indrykning
Variable
Primitive datatyper: heltal, kommatal og boolske typer   
Betinget udførsel og sammenligningsoperatorer
Kommentarer
Grundlæggende input og output
Strengformateringsfunktioner   
Simpel løkke med tæller
Indhold
Kernestof:
Omfang Estimeret: 12,00 moduler
Dækker over: 13 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 2 Programmering med Python

Introduktion til Jupyter Notebooks.
Udvikling af mindre programmer som løser forskellige opgaver.
Installation af eksterne biblioteker.
Introduktion til requests modul som anvendes til opslag i offentlige API'er.
Gennemgang af iteration og manipulation af lister og dictionaries.
Gennemgang af funktioner.
Test og debugging med kodeeditor.

Omtrentligt omfang
12 moduler.
Perioden fra medio september til efterårsferien.
Mindre skriftlig aflevering med egenudviklet program i en Notebook.

Kernestof
Programmeringssprog og elementer i programmers opbygning, herunder variabler, typer, udtryk, kontrolstrukturer, som fx
Komplekse datatyper, som lister og dictionaries  
Funktioner, herunder positionelle vs. navngivne parametre og returværdier  
Forskellige typer løkker og iteration af lister  
Parametrisering/abstraktionsmekanismer
Indhold


Skriftligt arbejde:
Titel Afleveringsdato
Jeres notebook eller python fil 25-10-2024
Kort skrift. opgave m. mindre Python-program 10-11-2024
Omfang Estimeret: 12,00 moduler
Dækker over: 14 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 3 Programudvikling med Python

Udvikling af et spil baseret på modulet pygame.
Introduktion til sprites som middel til indkapsling og modularisering.
Introduktion til metoder og værktøjer som opgavenedbrydning, pseudokode og rutediagrammer.
Anvendelse af LLM-værktøjer til kodegenerering.
Prompting-strategier.

Introduktion til OOP og klasser, herunder construkturs, this, metoder, attributter, nedarvning og overrides.

Eleverne løser desuden opgaverne på Khan Academys python-kursus for at træne basale færdigheder:
https://en.khanacademy.org/computing/intro-to-python-fundamentals

Omtrentligt omfang
15 moduler.
Perioden fra efterårsferien til juleferie.
Aflevering af programkoden til det egenudviklede pygame-spil.

Kernestof
Generiske programdele og biblioteksmoduler.
Dokumentation og modeller.
Arbejdsgange, fejlfinding og test.

Indhold
Kernestof:

Skriftligt arbejde:
Titel Afleveringsdato
Spil med pygame 20-12-2024
Opgave med klasser 31-01-2025
Omfang Estimeret: 15,00 moduler
Dækker over: 16 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 4 Årsprøveopgave

"I den afsluttende periode af undervisningen afsættes 20 timers undervisningstid til, at eleverne med vejledning fra læreren udarbejder et eksamensprojekt i grupper på to til tre. Hvor dette ikke er muligt eller ønskeligt, kan man lade eleverne arbejde individuelt. Eksamensprojektet består af et produkt og en synopsis. Synopsen skal dokumentere udviklingen af det færdige produkt og har et omfang på 5-8 normalsider, eksklusiv koder, rutediagrammer, bilag mm"

Omtrentligt omfang
20 moduler.
Perioden fra nytår til vinterferie/marts.
Aflevering af årsprøveopgaven.

Faglige mål og kernestof
Her bringes alle faglige mål i spil under inddragelse af det gennemgåede kernestof fra de tidligere forløb. Af faglige mål kan nævnes:

- 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

Som arbejdsform anvendes Use-Modify-Create og Working Examples idet der tages udgangspunkt i et mindre, fungerende program.
Indhold
Kernestof:

Skriftligt arbejde:
Titel Afleveringsdato
Årsprøveprojektopgave 12-05-2025
Omfang Estimeret: 20,00 moduler
Dækker over: 19 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 5 Webprogrammering med flask

I dette forløb arbejder vi med webprogrammering.

flask er et microframework skrevet i python.

Indhold
- HTTP - hvad er en protokol?
- Hvad betyder det at http er stateless?
- GET og POST requests
- HTML, CSS og JavaScript
- routes
- cookies
- HTML templates med jinja2


Referencer
https://flask.palletsprojects.com/
Indhold
Kernestof:
Omfang Estimeret: Ikke angivet
Dækker over: 12 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 6 Forløb: website med flask

I dette forløb bygger vi et website med database i python.

Anvendte biblioteker er flask og sqlite3.
Forløbet involverer også faser som planlægning og test/evaluering.

Forløbet afsluttes med en aflevering af en synopsis (ligesom i eksamensprojektet).

Milepæle
- Synopsis
- Opsætning af miljø
- Oprettelse af database
- Udvikling af søgning
- Styling med CSS
- Test
- Aflevering

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
- arbejde inkrementelt og systematisk i programmeringsprocessen.

Kernestof
- parametrisering/abstraktionsmekanismer og algoritmemønstre
- generiske programdele og biblioteksmoduler
- arbejdsgange og systematik i programmeringsprocessen, herunder test og fejlfinding

Referencer
- https://flask.palletsprojects.com/en/stable/
- https://sqlite.org/index.html
- https://docs.python.org/3/library/sqlite3.html
- Grundbog "Programmering", kapitel 5.6 Synopsis
https://programmering.systime.dk/?id=200
Indhold
Kernestof:
Omfang Estimeret: Ikke angivet
Dækker over: 21 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 7 Klasser og objekter (OOP)

Alt i Python er objekter. I dette forløb handler det dog specifikt  om objekt-orienteret programmering, eller OOP.

Det centrale begreb i OOP er en "klasse".

Afslutningsvist omskriver vi vores flask-projekt til at bruge klasser.

Indhold
- klasser og instanser
- metoder og attributter
- constructorer
- magiske metoder som __str__()
- superklasser og subklasser (nedarvning)
- Typecheck med isinstance()
- super()
- overrides
- polymorfi
- abstrakte klasser (abstract base class, ABC)

Referencer
- Systime: "Programmering"
https://programmering.systime.dk/?id=207

- Afsnittet Classes, https://skillzam.com/notes/pythonNotes.html
- Udleveret materiale
Indhold
Kernestof:

Skriftligt arbejde:
Titel Afleveringsdato
Program med klasser 05-01-2026
Omfang Estimeret: Ikke angivet
Dækker over: 23 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 8 Programudvikling med GUI og AI

Det er utænkeligt at forestille sig at programmører ikke vil anvende AI fremover.
Meget taler for at den traditionelle udvikler/koder-rolle er fortid.

Vi kigger på hvordan man arbejder struktureret med AI som en medhjælper og ikke som en tilfældig ven der spytter kode ud.

Vi bruger GUI-biblioteket som eksempel på hvordan man arbejde med AI.

Indhold
- programkonstruktion med AI
- planlægning med AI
- dokumentation
- diagrammer
- fejlsøgning (debugging)

Referencer
- Customize chat to your workflow
https://code.visualstudio.com/docs/copilot/customization/overview

- Use custom instructions in VS Code
https://code.visualstudio.com/docs/copilot/customization/custom-instructions

Coding with AI and Codex
https://developers.openai.com/codex/quickstart/

Config Basics
https://developers.openai.com/codex/config-basic

Custom instructions with AGENTS.md
https://developers.openai.com/codex/guides/agents-md

Agent Skills
https://developers.openai.com/codex/skills
Indhold
Kernestof:
Omfang Estimeret: Ikke angivet
Dækker over: 17 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 9 Eksamensprojekt

Eksamensprojekt. Gruppeprojekt, men individuelle synopser
Indhold
Kernestof:
Omfang Estimeret: Ikke angivet
Dækker over: 22 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 10 Opsamling og repetition

Indhold
Vi repeterer det kernestof som er blevet gennemgået i årets løb og samler op på løse ender.




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

Titel 11 Forløb: Spil med JS eller Python

Vi udvikler et spil med js eller Python.
Indhold
Omfang Estimeret: Ikke angivet
Dækker over: 9 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer