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
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
|
|
|
Titel
8
|
Prog: Eksamensprojekt
Udvikling af eksamensprojekt:
program & synopsis
|
|
Indhold
|
Kernestof:
|
|
Omfang
|
Estimeret:
20,00 moduler
Dækker over:
33 moduler
|
|
Særlige fokuspunkter
|
|
|
Væsentligste arbejdsformer
|
|
{
"S": "/lectio/1681/stamdata/stamdata_edit_student.aspx?id=666\u0026prevurl=studieplan%2fuvb_hold_off.aspx%3fholdid%3d80185528610",
"T": "/lectio/1681/stamdata/stamdata_edit_teacher.aspx?teacherid=666\u0026prevurl=studieplan%2fuvb_hold_off.aspx%3fholdid%3d80185528610",
"H": "/lectio/1681/stamdata/stamdata_edit_hold.aspx?id=666\u0026prevurl=studieplan%2fuvb_hold_off.aspx%3fholdid%3d80185528610"
}