Holdet L3d Pro (2025/26) - Undervisningsbeskrivelse

Undervisningsbeskrivelse

Stamoplysninger til brug ved prøver til gymnasiale uddannelser
Termin(er) 2024/25 - 2025/26
Institution X - TEC
Fag og niveau Programmering B
Lærer(e) Morten Kjerulf
Hold 2024 Ld Pro (L2d Pro, L3d Pro)

Oversigt over gennemførte undervisningsforløb
Titel 1 Intro til fag, til javascript samt p5.js-bibliotek
Titel 2 Objektorienteret prog i js: principper & diagram
Titel 3 Infoviz via d3js samt html, css & DOM
Titel 4 OOP i js, opsamling diverse
Titel 5 Algoritmemønstre: Grafalgoritmer
Titel 6 Nodejs-serverprogram & relationel database
Titel 7 Designmønstre i programmering
Titel 8 Prog: Eksamensprojekt
Titel 9 Strenge i js, regular expressions & markovkæder

Beskrivelse af de enkelte undervisningsforløb (1 skema for hvert forløb)
Titel 1 Intro til fag, til javascript samt p5.js-bibliotek

Forløbet introducerer faget og gennemgår basale typer & kontrolstrukturer i javascript via biblioteket p5js.

Der anvendes primært online-editoren editor.p5js.org, men ellers Processing-editoren i p5-js-mode.

Der introduceres til basale datatyper, værdier og tilladte operationer på datatyperne
- let, const vs det gamle var i javascript
- logiske og relations-operatorer i forgreninger
- intro til reserverede keywords i sproget
- intro til scope, og til variablers synlighed/tilgængelighed i på tværs af programmet (lokale og globale variable).

Om god praksis og systematik i kodningen som proces:
- Om sigende variabelnavne og god notation i koden samt kommentering som praksis.
- Camel-notation til variable og metoder/funktioner

Intro til kontrolstrukturer samt gentagelser og iterationer:
- sekventiel afvikling og forgreninger via fx if, switch, while/do while osv.

Om funktionskald: intro til funktioner som små moduler
- Om funktioner som god praksis til at opdele koden i afgrænsede ansvarsområder (modularitet)
- Og igen om sigende/selvforklarende funktions-navne som god praksis med systematik.
- Om parametre og funktioner med og uden returværdi

Intro til array som datastruktur:
- basale kendetegn, iterering i arrayet samt basale indbyggede metoder knyttet til Array-klassen.

Intro til object som den 8. sammensatte datatype i js:
- object literal i js - nøgle og værdipar.


Opstart på logbog over opgaver og forløb.

Materiale:
Lærer-uddelt power point om kernestoffet ovenfor.
p5.js-referencen
Indhold
Kernestof:
Omfang Estimeret: Ikke angivet
Dækker over: 16 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer
  • Individuelt arbejde
  • Lærerstyret undervisning
  • Pararbejde

Titel 2 Objektorienteret prog i js: principper & diagram

Forløbet introducerer objektorienteret programmering generelt og specifikt i javascript:

De generelle principper og tankegangen i OOP samt dets konkrete anvendelse i javascript.

- klasse-syntaksen, klasser som skabelon til objekter
- konstruktor, indkapsling samt metoder på objektet
-  konceptet om arv  i objektorienteret programmering
- samt intro til klassediagrammer som dokumentation.
- videre introduceres der til muligheden for at lave private variable i nyere js via #-tegnet
- om statiske metoder der kan kaldes på klassen i js.
- endelig kigges der også på det underliggende prototype-baserede arvehierarki som specifik javascript-konstruktion.
- Der perspektiveres til rene objektorienterede sprog som Java og C#.


Dette gennemgås via diverse lærer-udlevere programmer, som eleverne skal kunne forklare og modificere samt kortlægge via klassediagrammer som dokumentation af koden og som kommunikationsredskab:

- kasteparabel-opgave
- lydafspiller-opgave
- skakurs-opgave med gamestates, som muliggør tilpasningsdygtig skifte-skærm-logik, altså en fleksibel struktur i koden
- det klassiske Pong samt Asteroids: forstå og modificér

Materialer
Lærer-udleveret powerpoint
p5js-referencen
Indhold
Kernestof:
Omfang Estimeret: 0,00 moduler
Dækker over: 32 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 3 Infoviz via d3js samt html, css & DOM

Forårsprojekt: Forløbet introducerer til og anvender d3js-biblioteket med henblik på et større projektscenarie om infovisualisering.

Der introduceres til html, css, DOM samt diverse array-metoder såsom filter(), map(), reduce(), slice() m.fl

Videre anvendes arbejdes der med
- method-chaining
- event-håndtering
- anonyme funktioner
- local storage som en måde at gøre data persistent på

Dokumentation af program via use-case-diagram samt flowchart
Indhold
Kernestof:
Omfang Estimeret: 24,00 moduler
Dækker over: 27 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 4 OOP i js, opsamling diverse

Opsamling af diverse vedr. OOP i js:

private datafelter
polymorfi og andet
Indhold
Kernestof:
Omfang Estimeret: Ikke angivet
Dækker over: 6 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 5 Algoritmemønstre: Grafalgoritmer

Forløb om algoritmemønstre, specifikt grafalgoritmer:

Forløbet introducerer til grafbegrebet og til diverse algoritmer.

DEL 1:
1: bredde-først-søgning i grafer uden vægte og orientering - at finde korteste vej
2: dybde-først-søgning som alternativ til at finde vej -
eksempel på løsning via rekursion som også effektivt kan svare på om to knuder ligger i samme komponent inden for samme graf.

DEL 2:
Forbinderproblemet løst via Kruskal-algoritmen og herunder Union-Find.´
Dette er eksempel på grådig algoritme, som finder bedst mulige løsning ved hele tiden at vælge det lettest mulige.

DEL 3:
Hvis tid eksempel på Flownetværks-graf og dertilhørende algoritme

Kernestof:
- rekursion

Faglige mål:
Indhold
Kernestof:
Omfang Estimeret: 20,00 moduler
Dækker over: 13 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 6 Nodejs-serverprogram & relationel database

Forløbet introducerer til javascript på serversiden via node som runtime-miljø.

Videre introducerer forløbet til relationel database, og herunder SQL som query-sprog.
Begreber som - primærnøgler, fremmednøgler, normalformer & datamodel gennemgås.

Specifikt arbejdes med supabase.com som cloud-service til relationel database-tjeneste.
Render.com bruges til at hoste nodejs-programmet, og herunder anvendes der github til deployment af programmet på render.com

Der arbejdes indledningvist med local host.

Nodejs via Express-frameworket anvendes og der introduceres herunder til begreber som routing, server/klient, http-metoder, evt. til serverside-rendering samt til fetch-api'en fra klientsiden i forhold.

Videre introduceres der til arkitekturmønsteret MVC som en kendt måde at opbygge programmet på med - separation of concerns og overskuelighed.
Indhold
Kernestof:
Omfang Estimeret: 20,00 moduler
Dækker over: 22 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer

Titel 7 Designmønstre i programmering

Forløbet introducerer til begrebet designmønstre i relation til objektorienteret programmering.

Ét mønster gennemgås i plenum, hvorefter en række mønstre gennemgås gruppevist - ud fra program-eksempler.

Først State i plenum   (et objekts tilstand lagt ud i tilstands-klasser)

Observer (objekter lytter på andet objekt) - se på hvordan det allerede er indbygget i DOM via event-håndtering samt event-kobling
Composite (objekter med fællesnævner samlet i samme træ af objekter)
Decorator   (ny adfærd tilføjet til klasse uden at ændre i denne)
Builder  (kompleks objekt-produktion gjort fleksibel trin for trin)

Forløbet skaber bevidsthed om struktur & abstraktionsmekanismer.

Faglige mål:
- anvende avancerede konstruktioner i et programmeringssprog
- rette, tilpasse og udvide avancerede programmer
Indhold
Omfang Estimeret: 8,00 moduler
Dækker over: 4 moduler
Særlige fokuspunkter
Væsentligste arbejdsformer