Contents

Datamatiker: 4. Semester

Et helt semester hjemmefra

Dette semester bestod udelukkende af tre valgfalg.
Da Covid-19 desværre stadig fylder en del har hele semesteret udelukkende foregået online.
Hvert fag har haft et undervisningsmodul om ugen med dertilhørende forberedelse, selvstudie og afleveringer.

Time Mandag Tirsdag Onsdag Torsdag Fredag
0900-1230 Fri Undervisning Fri Undervisning Fri
1300-1630 Fri Fri Fri Undervisning Fri

Tidsmæssigt har planlægningen gjort semesteret enormt fleksibelt, men det skal dog nævnes, at som på de foregående semestre har studiet snildt fyldt 40 timer/ugen og mere til op til de større afleveringer.

På 4. semester havde jeg valgt Fullstack JavaScript/TypeScript, Security og “Games with Unity”. Jeg ville gerne have valgt Python i stedet for sidstnævnte, men undlod for ikke at drukne i lektielæsning - Et valg jeg slet ikke har fortrudt, da Unity har været utroligt spændende og lærerigt.

De tre valgfag bestod alle af en betydelig mængde nyt stof og det er derfor svært at gå i dybden med dem alle her. Jeg har dog prøvet at skrive lidt om hvert fag herunder.

Valgfag 1: Fullstack JavaScript/TypeScript

Vi har alle haft JavaScript på 3. semester, men i dette valgfag gås der virkeligt i dybden og vi lærer fullstack JavaScript med TypeScript.
Fullstack JavaScript betyder, kort fortalt, at vi bruger det samme programmeringssprog til både frontend og backend - “The full stack”.

Periode 1

Introduktion, Node, Promises, Babel & Webpack, Typescript
Vi kigger på nodeJS som danner grundlaget for den platform vi kører vores kode i gennem hele faget. Desuden kigger vi på Babel og Webpack som er gode værktøjer til at organisere kode og sørge for, at den er kompatibel med ældre browsere også (Looking at you Internet Explorer…).

Vi går desuden i dybden med asynkron programmering i JavaScript og forskellige måder at håndtere denne på.

Desuden starter vi på TypeScript fra starten, en overbygning til JavaScript som bl.a. giver typegenkendelse som man måske kender det fra andre sprog som fx. C++ og Java mm.
TypeScripts popularitet er eksploderet og er i stigende grad efterspurgt ude i virksomhederne, så det er selvfølgelig fedt at vi får kendskab til dette.

Periode 2

Express, middleware, error handling, NoSQL & MongoDB, Tests
Vi starter på databasedelen med express og lærer desuden om middleware, fejlhåndtering inkl. logging og et fornuftigt workflow ifbm. environment filer (.env).

Desuden kigger vi på NoSQL og MongoDB hvilket er 100% nyt for os på dette tidspunkt. Det er utroligt smart og fleksibelt ift. de klassiske relationelle SQL databaser.
På dette tidspunkt ville jeg ønske at vi havde kigget på disse i et tidligere semester. Især med tanke på den stigende popularitet for NoSQL løsninger.

Afslutningsvis i perioden kommer vi tilbage til testing som vi på tidligere semestre har modtaget undervisning i. Denne gang foregår det i JavaScript og med nogle nye libraries som “Mocha”, “Chai” og “Supertest”.

Periode 3

GraphQL backend, GraphQL frontend
Vi introduceres for en ny måde at lave API’er på i modsætning til den “Gamle” RESTFUL API. GraphQL er enormt smart, men kræver en del tilvænning at lære i starten inkl. en masse selvstudie.

Der bliver stadig lavet massevis af API’er på den “Klassiske måde”, men jeg tror vi kommer til at se meget mere til GraphQL i fremtiden.

Periode 4

GeoJson & GeoQueries, MongoDB & GeoIndexes
Udvikling indenfor GIS og geografi er nærmest en sub-kultur i programmering og et fag for sig selv. Derfor formoder jeg, at vi brugte en periode på dette og vi lærer derfor at anvende libraries til positionering og til at bestemme koordinator og afstande mm.

Periode 5 (Valgfri)

React Native app udvikling
For den studerende med overskuddet blev der tilbudt undervisning i React Native som kan anvendes til apps.
Jeg kan ikke sige så meget om modulet, da jeg valgte og fokusere på den eksisterende undervisning og forberedelsen til eksamen.

Eksamen

Igennem hele semesteret har al vores læring løbende taget udgangspunkt i en “Startkode” som vi løbende har forbedret og udviddet i takt med undervisningen.

Derfor kunne samtlige eksamensspørgsmål altså relateres direkte til denne startkode.
Eksamen var mundtlig, uden forberedelse da vi fik eksamensspørgsmålene 3-4 uger i forvejen og dermed havde rigelig tid til forberedelse.

Game development with Unity

Faget her valgte jeg primært for ikke at have tre “Tunge” fag på 4. semester.
Der var en del som havde fået samme råd og valgt to “Tunge” fag og et mindre bogligt fag - Bl.a. Unity. Unity bruges primært til at udvikle spil i men kan også anvendes til mange andre formål, bla. VR/AR.

Desuden er det enormt sjovt og spændende at programmere til spil og generelt interaktivitet.
Hvis man er særligt intereseret i simulering og lidt af det matematiske, kan jeg varmt anbefale Sebastian Lague på YouTube - Også selvom man ikke kan programmere.

Introduktion

Vi blev introduceret til Unity som program og dets opbygning.
Allerede fra første lektion bygger vi en lille level og i første forløb arbejder vi også med terrain, player movement og “AI” movement.

Content & Design

I dette modul lærer vi mere om 3D modeller, textures og animation.
Desuden arbejder vi med UI, game- og level design samt mechanics og features. Desuden lærer vi at lave ragdoll systemer da vores underviser har en forkærlig for disse.

Prototyping

I dette modul lærer vi om PCG - Procedural content generation. Det er altså Random generation og lidt om de algoritmer og metoder man bruger til dette.

I vores tilfælde laver vi et map som spawner tilfældige træer, sten, bygninger og NPC’er og programmerer sidstnævnte til at gå tilfældigt rundt på området (Og til at detektere og undgå kollision).
/img/blog/4semgames.gif

Desuden kigger på mere avancerede AI typer og bl.a. pathfinding samt finite state machines.

Test, build, deploy & release

Vi lærer hvordan Unity kan udvikle cross platform og til mobile enheder.
Desuden kigger vi kort på AR og VR samt Unity’s nye input system.

Eksamen

Til eksamen skal vi udvikle vores eget, lille spil som skal præsenteres i en gruppe med en efterfølgende individuel eksamination.
I min gruppe udvikler vi et 3D, top-down shooter med forskellige våben, dash mechanic og en “Main boss” med forskellige angreb og animationer.

Security

Security er en hel branche for sig selv med mange muligheder for specialisering.
Valgfaget var selvskrevet for mig, da jeg længe har interesseret mig for “Cyber security” og allerede har deltaget i nogle begynder CTF’er (Capture the flag) og været på Tryhackme i et stykke tid. Desuden laver rigspolitiet en årlig jule CTF som jeg har deltaget i de sidste to gange.

Man kan argumentere for, at security som specialisering har en stejl læringskurve. For at blive dygtig til security kræver det nemlig, at man har godt styr på forskellige OS, hardware, netværk og lidt programmering mm.

Med andre ord, skal man altså kunne “Lidt af det hele” men kan kan selvfølgelig specialisere sig.

Generel sikkerhed

Vi bliver introduceret til faget og vores eksamensprojekt som vi starter op tidligt på semesteret.
Idéen er at vi skal udvikle en sikker web-app og skrive rapport om denne. Desuden er der en “Hacker konkurrence” hvor de studerende prøver at hacke hinandens applikationer hvilket var enormt sjovt og lærerrigt.

Vi sætter desuden en virtuel maskine op med Kali Linux som hovedsageligt anvendes til security og pen testing.
I Kali kigger vi nærmere på værktøjer til at skanne og analysere netværk og software og desuden værktøjer til at cracke passwords samt meget mere.

Afslutningsvis modtager vi undervisning i encryption og hashing. Encryption types & HASH (Sensitive Data Exposure aka. A3)

Netværksteori

Vi har før modtaget undervisning i netværksteori og tager endnu engang en opfrisker.
Denne gang kigger vi lidt mere på selve netværksdelen af hardware og ikke så meget på protokoller.

Governance

I Governance undervises vi i Threat modeling og risk assessment samt lidt GDPR.
Threat modeling anvender vi til at identificere de assets som udgør vores web app og de angrebsvektorer der kan være. Efterfølgende kan vi anvende risikovurderinger til at vurdere sandsynligheden og konsekvensen af eventuelle brister hvorefter vi kan prioritere vores indsats på at undgå angreb.

OWASP (Forløb over hele semesteret)

OWASP danner rammen for det meste af semesteret.
OWASP Top 10 beskriver nemlig de 10 mest hyppige sikkerhedsfejl der ses på internettet i web applikationer.

Disse 10 brister er alle forskellige og har et utal af konsekvenser. Vi går i dybden med hvert enkelte punkt på top-10 og undersøger hvordan fejlene opstår og hvordan man undgår dem.

Eksamen

Vores web app og den tilhørende rapport danner grundlaget for vores eksamen.
Selve eksaminationen består af en gruppepræsentation af projektet og en efterfølgende individuel eksamination hvor vi trækker et spørgsmål. Spørgsmålene har vi kendt i ca. 2-3 uger før eksamen og har altså haft rigelig tid til forberedelse - Derfor er der ingen forberedelse til selve eksamen.

4. semester done

Således gik endnu et semester som kommende datamatiker.
Det har endnu engang været hårdt men super spændende og jeg har været meget tilfreds med fleksibiliteten på semesteret så arbejde og skole har kunne gå op i en højere enhed.

Nu mangler blot 5. semester som består af virksomhedspraktik hvor der skal læres en masse nyt ude i en virksomhed som der derefter skrives rapport om.
I mit tilfælde kommer PHP, Laravel og VueJS til at fylde en del hvilket bliver enormt fedt. Det er emner vi ikke har modtaget undervisning i, så jeg får muligheden for at lære en masse nye ting i mit praktikforløb.

Mere om dette efter 5. semester som slutter december 2021.

Tak for denne gang 🍻

Du kan læse mere om de øvrige semestre her: