LUP - H1 - Datatekniker programmering - 10.4
Mål for undervisningen
Hovedforløb 1, som har en varighed på 10 uger, er opdelt i 3 overordnede temaer, som tilsammen udgør det faglige indhold i forløbet.
Temaerne på 1. hovedforløb bygger videre på de erfaringer, som eleven har gjort sig på grundforløb 2, og de har det mål, at eleven får en begyndende professionalisering af sin viden om og erfaring med grundlæggende programmeringsprincipper, som udbygges uddannelsen igennem.
Eleven vil stifte bekendtskab med anvendelse af programmeringssprog, metoder, design og struktur.
Herudover er der mindre temaer, som handler om erfaring med installation, opsætning og administration af database.
Temaer på H1:
- Grundlæggende programmeringsprincipper (4 uger)
- Hjemmesider og web (3 uger)
- Databaser (3 uger)
Læringsmål:
- Forstå, redegøre for og benytte faglige udtryk
- Samarbejde omkring løsninger inkl. kommunikere konstruktivt, tage ansvar for og del i arbejdsprocessen.
- Løse opgaver selvstændigt samt redegøre for egne overvejelser i processen.
- Kunne udvikle hjemmesider vha. HTML og CSS under hensyntagen til SEO og tilgængelighed.
- Kunne benytte et versionsstyringsværktøj.
- Kunne udvikle mindre programmer i et objektorienteret programmeringssprog
- Kunne designe en relationel database og normalisere denne til 3NF
Målpinde for fagene på H1 - Datatekniker programmering
Klik på + tegnet i nederste højre hjørne for at få vist indholdet af denne sektion.
Målpinde
- Lærlingen kan anvende et programmeringssprog til at udarbejde mindre konsolprogrammer, herunder fejlfinde og teste dem.
- Lærlingen kan vælge en hensigtsmæssig datatype til en opgave.
- Lærlingen kan oprette og gøre brug af både enkelt- og multidimensionelle arrays.
- Lærlingen kan erklære og anvende simple metoder.
- Lærlingen kan diagrammere sit arbejde.
- Lærlingen kan benytte forskellige kontrolstrukturer.
- Lærlingen kan erklære og bruge variable samt konstanter.
- Lærlingen kan redegøre for brugen af kodekommentar.
- Lærlingen kan versionsstyre sit arbejde.
- Lærlingen kan benytte et debugging-værktøj.
- Lærlingen kan vælge hensigtsmæssige datatyper til variable og metoder.
- Lærlingen kan erklære og oprette metoder i et objekt med og uden returværdi og parametre, samt gøre brug af disse.
- Lærlingen kan udarbejde et avanceret databasedesign, og anvende SQL syntaxen og ORM (Object Relational Mapping) til at opbygge databaser, suppleret af en tilhørende dokumentation.
- Lærlingen kan anvende SELECT til at foretage forespørgsler op imod en tabel, herunder sortering, gruppering, filtrering, aggregering, funktioner.
- Lærlingen kan anvende INSERT, UPDATE, DELETE til at foretage manipulationer af en tabel.
- Lærlingen kan oprette, redigere og slette tabeller samt dokumentere vha. E/R-diagram.
- Lærlingen kan anvende relationstyperne 1:mange, mange:mange og 1:1 med tilhørende nøgler.
- Lærlingen kan implementere konsistenskrav, referenceintegritet, relationer og forskellige constraints.
- Lærlingen kan anvende JOIN og SUBQUERIES til at foretage forespørgsler fra flere tabeller.
- Lærlingen kan oprette og slette en database.
- Lærlingen kan oprette Views og begrunde sikkerhedsaspektet.
- Lærlingen kan anvende avancerede SQL-kommandoer som parametre, kontrolstrukturer, rettighedsstyring o.l.
- Lærlingen kan redegøre for baggrunden for konsistenskrav, referenceintegritet, relationer og forskellige constraints.
- Lærlingen kan oprette, redigere og slette Stored Procedures med et administrations- og databehandlingsformål.
- Lærlingen kan oprette og administrere Triggers med henblik på at holde databasen konsistent.
- Lærlingen kan træffe korrekte forholdsregler til at imødegå SQL Injection.
- Lærlingen kan oprette og administrere indexes så der opnås optimal performance.
- Lærlingen kan udføre performance-måling på en stor database.
- Lærlingen kan normalisere en database.
- Lærlingen kan, på et niveau svarende til MCP, "Administering a SQL Database Infrastructure", redegøre for arkitekturen for en SQL-Server 2016 eller nyere og herunder SQL-serverens egne datatabeller.
- Lærlingen kan planlægge installationen af en SQL server, samt foretage installationen.
- Lærlingen kan oprette en database, samt administrere segmenter og andre databaseobjekter, tablespaces og datafiler.
- Lærlingen kan oprette brugere, administrere brugerkonti, -rettigheder og -ressourcer, samt bruge SQL-serverens Authentication Modes.
- Lærlingen kan administrere tilladelser på kommandoer, Views, Stored Procedure og Funktioner på SQL-serveren.
- Lærlingen kan konfigurere og benytte administrationsværktøjer til database-serveren, herunder automatisere administrative jobs og administrere database-serveren både med de grafiske administrationsværktøjer og med SQL-kommandoer.
- Lærlingen kan udføre database backup, samt implementere en backup strategi, herunder udføre databaserestore og -recovery.
- Lærlingen kan foretage optimering af performance på SQL-serveren bl.a. ved brug af forskellige former for indeksering, Stored Procedure og Statistics, samt brug af Performance Monitoring.
- Lærlingen kan konfigurere en forbindelse mellem en client og en databaseserver.
- Lærlingen kan flytte data til og fra SQL-serveren ved brug af SQL Server Integration Services (SSIS).
- Lærlingen kan redegøre for metoder til at genetablere ødelagte databaser, og kan foretage fejlsøgning på problemer i database systemet, herunder fejlsøgning i SQL-serveren ved hjælp af indbyggede Stored Procedures.
- Lærlingen kan, ud fra en case-opgave, selvstændigt designe, udvikle, teste og dokumentere en clientside baseret webløsning, der lever op til stillede krav i opgaven, og kan herigennem demonstrere viden, færdigheder og kompetencer ud over de i faget beskrevne mål og målniveauer.
- Lærlingen kan foretage grundlæggende web-programmering med HTML, CSS og Bootstrap framework, samt programmering af webapplikationer med JavaScript og jQuery, hvor målet er kommunikation med et backend Web API.
- Lærlingen kan forklare Client-Server modellen, herunder HTTP-protokollen.
- Lærlingen kan anvende grundlæggende HTML struktur og semantik.
- Lærlingen kan anvende lister, links, billeder samt tabeller.
- Lærlingen kan anvende HTML formularer.
- Lærlingen kan anvende CSS selectors.
- Lærlingen kan anvende CSS styling til tekst, links, list og tables m.m.
- Lærlingen kan anvende Box modellen.
- Lærlingen kan udvikle responsive websider, evt. ved hjælp af et CSS/JavaScript framework.
- Lærlingen kan anvende grundlæggende JavaScript kommandoer og strukturer.
- Lærlingen kan anvende funktioner og parameteroverførsel.
- Lærlingen kan arbejde med JavaScript-objekter.
- Lærlingen kan redegøre for væsentlige forskelle mellem JavaScript og et OOP sprog.
- Lærlingen kan anvende JavaScript til at give funktionalitet til en webpage.
- Lærlingen kan benytte jQuery og forskellige selectors til navigation og manipulation af websidens DOM.
- Lærlingen kan benytte jQuery og AJAX til at kommunikere med en backend web Service.
- Lærlingen kan beskrive best practise muligheder ved anvendelsen af JavaScript i forhold til både sikkerhed og performance.
- Lærlingen har en generel viden om forskellige sikkerhedsproblemer, der kan opstå under afvikling af clientside webapplikationer, som f.eks. cross-site scripting, og kan anvende denne i sit programdesign.
- Lærlingen kan gennem test dokumentere funktionaliteten i en udviklet webapplikation.
- Lærlingen kan, ud fra en case-opgave, omhandlende en programmeringsopgave, selvstændigt beskrive, planlægge og gennemføre en arbejdsproces, der bygger på Agile principper, og kan herigennem demonstrere viden, færdigheder og kompetencer ud over de i faget beskrevne mål og målniveauer.
- Lærlingen kan beskrive hvilke grundlæggende elementer, der indgår i Agile metoder og i Agile manifestet.
- Lærlingen kan beskrive hvilke grundlæggende principper, der er indenfor Agile software udvikling.
- Lærlingen kan beskrive de mest almindelige redskaber til brug i Agile projekter.
- Lærlingen kan beskrive indholdet i Scrums tre roller: ProductOwner, ScrumMaster og ScrumTeam.
- Lærlingen kan beskrive indholdet i Scrums tre ceremonier: SprintPlanningWorkshop, DailyScrum, SprintReviewMeeting.
- Lærlingen kan beskrive Scrums tre værktøjer: ProductBacklog, SprintBacklog og BurnDownChart.
- Lærlingen kan beskrive de aktiviteter, teknikker og principper, som indgår i Extreme Programming (XP), herunder de fire grundlæggende aktiviteter i softwareudviklingsprocessen og Pair programming.
- Lærlingen kan beskrive principperne omkring Test Driven Development (TDD).
- Lærlingen kan beskrive et scenarie for en udviklingsopgave, der gør brug af de Agile principper, der ligger i Scrum og XP.
- Lærlingen kan, ud fra en case-opgave og OOP-konceptet, selvstændigt designe, planlægge og udvikle et konsolprogram, der lever op til de stillede krav i opgaven, og kan herigennem demonstrere viden, færdigheder og kompetencer ud over de i faget beskrevne mål og målniveauer.
- Lærlingen kan anvende et objektorienteret programmeringssprog til at udarbejde konsolprogrammer, der indeholder flere klasser og er i overensstemmelse med OOP konceptet.
- Lærlingen har en grundlæggende viden om det valgte programmeringssprog/framework.
- Lærlingen kan definere og designe egne klasser.
- Lærlingen kan erklære og instantiere objekter.
- Lærlingen kan redegøre for typer af collections og kan udpege hensigtsmæssigt i forhold til et behov.
- Lærlingen kan anvende en given kodestandard for det pågældende sprog.
- Lærlingen kan håndtere "exception handling".
- Lærlingen kan redegøre for OOP konceptet såsom indkapsling, polymorfi og arv.
- Lærlingen kan udarbejde en applikation som gør brug af OOP konceptet.
- Lærlingen kan implementere abstrakte klasser og metoder.
- Lærlingen kan skelne mellem override og overload af metoder.
- Lærlingen kan begrunde valget af "access modifiers"/virkefelter.
- Lærlingen kan oprette og implementere et selvudviklet interface.
- Lærlingen kan oprette og benytte generiske klasser og metoder/funktioner
- Lærlingen kan udarbejde UML klassediagrammer.
- Lærlingen kan redegøre for betydningen af løs kobling og afhængigheder mellem moduler.
- Lærlingen kan redegøre for hvorfor og hvordan man benytter et versionsstyringsværktøj.
- Lærlingen kan beherske dokumentation under programudvikling.
- Lærlingen kan anvende et versionsstyringsværktøj under programudvikling.
- Lærlingen kan begrunde behovet for dokumentation og brug af versionsstyringsværktøj under programudvikling
- Lærlingen kan beskrive strukturen for en 3-lags applikationsmodel og dens fordele.
- Lærlingen kan implementere en database på op til 10 tabeller, på baggrund af et E/R-diagram.
- Lærlingen kan oprette Stored Procedures, som kan søge, indsætte, opdatere og slette data i databasen.
- Lærlingen kan implementere Data Access Layer klasserne og deres metoder/parametre.
- Lærlingen kan implementere Business Logic Layer klasserne og deres metoder/parametre.
- Lærlingen kan foretage logisk og struktureret fejlfinding på applikations datalag.
- Lærlingen kan betjene et version-styringsystem i forbindelse med et udviklingsteam.
Indhold i undervisningen
På dette hovedforløb er fagene organiseret i projekter/caseopgaver med hovedtemaer. Dette er med til at sikre et tværfagligt og helhedsorienteret læringsforløb med praksisnære cases.
Indhold:
Eleverne vil arbejde med følgende fagområder:
- Clientside-udvikling: Udvikle velfungerende, responsive hjemmesider ved brug af semantisk HTML, CSS og validering.
- Grundlæggende og Objektorienteret programmering: Datatyper, data- og kontrolstrukturer, kodekonventioner samt introduktion til unit-tests.
- Versionsstyring: Introduktion til GIT og Github eller tilsvarende.
- Databaseudvikling: Arbejde med en databaseserver med alt fra installation/konfiguration, vedligeholdelse/backup og administration af serveren. Der er fokus på korrekt bruger adgang efter behov (hvem skal have ret til hvad og hvorfor).
Design af din egen database (relationer, konsistenskrav, normalisering), import/eksport af data, optimeringstest, grundig gennemgang af forskellige SQL kommandoer og afprøvning af det hele ved hjælp af en simpel 3-lags applikationsmodel, hvor der især er fokus på data adgangslaget og forrentningslaget samt simpel fejlfinding og forsat brug af versionsstyring.
Hvordan skal eleverne lære det faglige indhold?
Undervisningen veksler mellem teoretiske oplæg, praktiske øvelser og projektarbejde. Eleverne arbejder i grupper med casen, hvor de gennemfører analyser, udvikler softwarekomponenter og afprøver teknologier i en realistisk kontekst. Teknologistudierne giver eleverne mulighed for at dykke ned i specifikke emner og reflektere over deres valg af teknologi.
Differentiering
Forløbet er designet, så elever med forskellige kompetenceniveauer kan udfordres på passende vis:
- Grundlæggende vejledning tilbydes for at sikre, at alle elever har forståelse for kerneelementerne i casen.
- Mulighed for fordybelse for de elever, der ønsker at eksperimentere med avancerede funktioner som performanceoptimering, sikkerhedsanalyser eller integration af nye teknologier.
Tværfaglighed og helhedsorientering
På H1 er undervisningen tilrettelagt med fokus på opbygning af grundlæggende programmeringskompetencer, og helhedsorientering er derfor bevidst nedtonet i begyndelsen af forløbet. Eleverne arbejder først med programmeringens grundlæggende begreber og metoder for at opnå et fagligt fundament.
I takt med at eleverne opnår større fortrolighed med programmeringsmetodik, introduceres helhedsorientering gradvist gennem arbejdet med sammenhængende opgaver. Her anvender eleverne deres programmeringskompetencer i forbindelse med udvikling af en enkel hjemmeside, hvor der opstår behov for samspil mellem clientside-elementer, grundlæggende programmering og simpel databaseanvendelse.
Gennem denne gradvise tilgang får eleverne en indledende forståelse for, hvordan forskellige faglige elementer spiller sammen i udviklingen af softwareløsninger, uden at kompleksiteten overstiger niveauet for et introducerende hovedforløb. Denne tilgang danner grundlag for en mere udtalt helhedsorientering og tværfaglighed på de efterfølgende hovedforløb.
Praksisrelateret undervisning
Eleverne arbejder med opgaver og øvelser, der spejler virkelige udfordringer i software- og systemudvikling. Der anvendes metoder og teknologier, der afspejler praksis i IT-branchen, så eleverne får erfaring med løsninger, der kan implementeres i erhvervslivet. Afslutningsvis præsenterer eleverne deres projekt.
Evaluering og bedømmelse
Evalueringen sker løbende gennem formative evalueringer og afsluttes med summativ vurdering baseret på elevernes afleverede projekter og deres fremlæggelser. Evalueringen sikrer, at eleverne opnår de faglige mål inden for hovedforløbet.
Løbende evaluering og feedback (formativ evaluering)
Gennem forløbet modtager eleverne løbende evaluering og feedback baseret på deres arbejde med den gennemgående case samt en række teknologistudier. Den tilpasses den enkelte elevs projekt, niveau og udviklingstrin. Evalueringen sker gennem:
- Delafleveringer af specifikke dele af projektet, såsom databasedesign, backend-implementering og sikkerhedsanalyser.
- Løbende teknologistudier, hvor eleverne fordyber sig i udvalgte teknologier og anvender dem i praksis, der vurderes ved gennemgang af kode.
- Kodegennemgang og tekniske reviews, hvor eleverne får mundtlig feedback på deres implementering på f. eks arkitektur, struktur og coding-conventions.
- Gruppediskussioner og faglige refleksioner, hvor eleverne forklarer deres valg og overvejelser.
- Fremlæggelser af delresultater, hvor underviseren giver feedback på elevernes løsninger og arbejdsproces.
Formålet med den formative evaluering er at give eleverne mulighed for at forbedre deres løsninger og udvikle deres tekniske og metodiske forståelse undervejs i forløbet.
Afsluttende bedømmelse (summativ evaluering)
Den summative evaluering foretages ved forløbets afslutning og består af:
- En samlet systemdokumentation, der beskriver projektets udvikling, tekniske løsninger og begrundelser.
- En mundtlig præsentation, hvor eleverne fremlægger deres løsning, reflekterer over deres teknologivalg og besvarer spørgsmål.
- En praktisk demonstration, hvor eleverne viser, hvordan deres software fungerer i praksis.
Bedømmelseskriterier
Bedømmelseskriterierne tager udgangspunkt i de fastlagte læringsmål, herunder elevens evne til at:
- Udvikle mindre programmer, der anvender grundlæggende programmeringskonstruktioner som variabler, betingelser, løkker og metoder til at løse konkrete opgaver.
- Strukturere og skrive kode på en overskuelig og forståelig måde, herunder anvende simple principper for opdeling af funktionalitet og meningsfuld navngivning.
- Udvikle simple brugergrænseflader og webbaserede løsninger ved anvendelse af grundlæggende HTML, CSS og JavaScript samt koble disse til underliggende programlogik.
- Anvende databaser til lagring og hentning af data, herunder oprette simple databaser, tabeller og forespørgsler samt anvende disse i programmer.
- Anvende versionsstyring til at gemme, dele og videreudvikle kode, herunder arbejde med repositories og versionshistorik som en del af udviklingsprocessen.
- Dokumentere og forklare egne løsninger, herunder redegøre for programmets opbygning, funktion og anvendelse i relation til de stillede opgaver.
Disse bedømmelseskriterier anvendes både i den formative og summative evaluering.
Bedømmelsesgrundlag
Bedømmelsesgrundlaget udgøres af følgende faglige indikatorer, som tilsammen belyser i hvilken grad eleven har opnået læringsmålene:
- Funktionalitet og korrekthed
Vurderer i hvilken grad løsningen opfylder de stillede krav, og om programmets adfærd er korrekt og hensigtsmæssig i forhold til problemstillingen. - Kodekvalitet og struktur
Vurderer elevens anvendelse af programmeringsprincipper, herunder struktur, modularisering, læsbarhed og vedligeholdbarhed. - Problemløsning og abstraktion
Vurderer elevens evne til at analysere problemstillinger, foretage hensigtsmæssige faglige valg og omsætte komplekse krav til implementerbare løsninger. - Faglige valg og refleksion
Vurderer elevens evne til at begrunde valg af løsninger, overveje alternativer og reflektere over løsningens styrker, begrænsninger og udviklingsmuligheder. - Dokumentation og formidling
Vurderer i hvilken grad eleven kan dokumentere og forklare løsningens opbygning, funktion og anvendelse i relation til læringsmålene. - Arbejdsproces og selvstændighed
Vurderer elevens planlægning, gennemførelse og justering af eget arbejde samt evnen til at anvende feedback konstruktivt.
De faglige indikatorer anvendes ikke som enkeltstående tjekpunkter, men indgår samlet i vurderingen af elevens kompetenceniveau.
Programmering er et kreativt og problemløsende fag, hvor opgaver på dette hovedforløb kan løses på flere fagligt valide måder, derfor foretages bedømmelsen som en professionel helhedsvurdering, hvor underviseren inddrager elevens samlede kompetencer, faglige valg og evne til refleksion i forhold til læringsmålene for hovedforløbet.
Bedømmelsen tager højde for både individuelle præstationer og gruppens samlede arbejde.