Contents

Datamatiker: 3. Semester

Fuld fart frem

Det ville næsten være en underdrivelse at sige, at tredje semester var hårdt.
Covid-19 har ikke gjort det nemmere da hele semestret har været afviklet online.

Der var rigtig mange nye ting som skulle læres og i gennemsnit 4-6 timers opgaver dagligt efter undervisningen (Også i weekenden) for mit vedkommende.
Derfor var det heller ikke så mærkeligt, at flere på semestret tog det for anden gang for at komme bedre ind i stoffet.

Det skal dog siges at undervisningen typisk fylder en “Halv” dag så der er god mulighed for at strukturere sin egen tid.
Ser man bort fra projektopgaverne imod slutningen af semestret har ugen set sådan ud:

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

Som den knivskarpe kriminaldetektiv vil bemærke, varer undervisningen sjældent mere end 3,5 time ad gangen.
Derfor fylder ovenstående 21,5 skemalagte timer. Jeg tør godt love at de efterfølgende gruppesessioner og selvstudie har kompenseret og at ugen snildt har fyldt 40 timer.

Tredje semester er i skrivende stund (2021) ifølge de fleste datamatikerstuderende det hårdeste semester på CPH Business. Der er rigtig mange nye ting som skal forstås da alle de nye emner understøtter hinanden.

Her kan jeg kun sige, at en god studiegruppe og høj diciplin er alfa-omega hvis man vil have et godt udbytte af materialet. Jeg er personligt tilbøjelig til, at arbejde og studere solo når jeg kan, men må bøje mig i støvet denne gang - Jeg var nok ikke kommet helskindet igennem 3. semester uden en god gruppe.

I store træk har vi arbejdet med følgende emner

Netværk og HTTP

Første dag på semesteret, mandag morgen skulle fejres med netværksprotokoller🤦‍♂️
Vi opfrisker hvad vi allerede har lært om denne dejlige suppedas og går endnu mere i dybden.
Kort fortalt gennemgår vi OSI modellen, pakker og de mest almindelige protokoller såsom IP, TCP/IP og UDP.
Desuden lidt kort viden om DNS, DHCP, headers, caching, CORS, sessions og cookies.

Opsætning af en cloud server

Tungen lige i munden - Vi slipper generelt for at bruge >1000 kr. på studiebøger og det forventes i stedet at vi bruger alt fra 2-20$ om måneden på at have en lille cloud server. Herpå ligger vi vores projekter så de kan tilgås online.

Vi lærer at sætte en linux server op og konfigurere firewall, brugere og at sætte NGINX op som reverse proxy.
Desuden arbejder vi med SSL certifikater, FTP og opsætning af domænenavn med tilhørende DNS records.

Docker

“It works on my machine”
I udviklingsbranchen er man ofte ude for “Det virker altså på min maskine!” (Men ikke på nogle andre).
Derfor har vi, igennem hele semestret, arbejdet på en docker container.

Idéen er, at containeren virtualiserer nogle programmer som man bygger sin udvikling ovenpå. De her programmer kunne være en lille webserver, MySQL mm.
Den her virtualisering kan man dele med andre så alle arbejder i samme udviklingsmiljø uanset deres hardware.

Virtualisering og containers har taget fart de seneste år i takt med, at flere og flere rykker i skyen i stedet for at købe hardware selv.

Devops

Når man løbende versionsstyrer sin kode med git og pusher til github, vil man naturligvis også have, at den nyeste version af softwaren også er den brugeren sidder med.
Til dette formål kan man anvende en continous integration / contiuous deployment (CI/CD) pipeline.
I vores tilfælde har vi brugt Travis til at hente den nyeste kode fra github, teste den og efterfølgende opdatere vores webserver.

Object relational mapping (ORM)

ORM er svært at forklare på en simpel måde, men det gør livet nemmere (Efter lidt træning).
Idéen er, at når man i objektorienteret programmering gerne vil gemme data i en database, kan anvende en ORM til at gøre livet lettere.

Istedet for at bygge databasen fra bunden kan man skrive lidt syntaks i sin kode (ORM’en) til at gemme objekter som opretter databasen for os og holder styr på relationerne.

REST api og JSON

Vi lærte at skrive en REST API og dokumentere den.
Idéen er, at man på en hjemmeside fx. gerne vil logge ind, se en liste af brugere, hente vejrinfo osv. osv.

Denne info kan man hente fra en database igennem en backend server vha. en API som modtager forespørgsler, “Pakker” dem og returnerer dem.

Single page application med React JS

Hvis man ikke har ramt bunden af snapseflasken endnu, kom her en rigtig god motivator - nemlig React JS. Vi lærte at sætte en hjemmeside op med React JS og JSX samt at forbinde denne til en Rest API.

React er stadig en forholdsvis efterspurgt kompetence hos programmører og kræver, som nybegynder, en del ledige RAM under kasketten (Efter min mening, selvfølgelig).
Desuden kan man, forholdsvis nemt, sætte sig ind i React Native og wutpi - så kan man lave apps til mobil.

Et godt modsvar til React og et rigtig populært frameværk er naturligvis VueJS. Det er dog ikke noget vi kigger på i vores forløb, da man har besluttet sig for at fokusere på React.

Systemudvikling

Ordnung müss sein (Hvis min gamle tysklærer ser det her - undskyld.)
Der findes mange projektstyringsmetoder i programmering og man kan som udvikler forvente at arbejde med disse ude i erhvervslivet. Derfor måtte vi igennem udviklingsmetoder såsom SCRUM, XP mm.

Desuden lavede vi en opgave som krævede, at vi out-sourcede en del af koden.
I min gruppe byggede vi en hjemmeside som hentede informationer om samtlige raketopsendelser i hele verdenen.
Dertil betalte vi en Ukrainsk freelance programmør for at udvikle en app som hentede data fra vores server.

Projekt “Boilerplate”

Rigtig mange programmører bruger “Bootstrap” og “Boilerplate” kode (Ikke at forveksle med twitter bootstrap css).
Idéen er, at man bruger kode hvor den mest basale funktionalitet er sat op så man ikke skal bruge tid på at opfinde den dybe tallerken igen. Det kunne være en log-in eller REST Api funktionalitet.
På samme måde lavede vi en boilerplate kode til os selv, som blev brugt til både kursusopgave og eksamensopgave.

Eksamen: Systemudvikling

Ikke det mest ophidsende emne.
Jeg trak personligt “Prototyper” og skulle redegøre for disse i en udviklingssituation relateret til systemudvikling.

Eksamen: 24 timers programmeringsopgave

På dette tidspunkt var jeg blevet så sadistisk at jeg ligefrem syntes at eksamenen var sjov.
Jeg trak en opgave mandag morgen kl. 0800 og havde præcis 24 timer til at udvikle et CRM-system. Altså noget hvor der skulle kunne oprettes kunder som krævede en backend, frontend, tests og deployment.

Jeg fik en god karakter trods lidt manglende tests. Det der trak op, var en god, let-læselig og overskulig kodestruktur.
Desuden blev der (Også i denne eksamen) lagt vægt på den studerenes evne til at forklare sin kode og kommunikere.

Næste semester og valgfag

Det var et langt, svært semester og det er nu overstået med små 10 fridage inden 4. semester starter.
Generelt har det været svært at lære så meget nyt stof, men det hjælper heldigvis meget, at vi konstant sidder med næverne i højspændingsklaveret og arbejder med materialet. Det man ikke forstod i sidste uge rammer lige pludseligt som et godstog når man arbejder med kursusopgaverne.

Fjerde semester består udelukkende af tre valgfag og starter primo februar 2021 - Det skal nok blive spændende.
Jeg har hørt, at man bør vælge 2 “Tunge” fag med jobmuligheder og ellers vælge et mindre tungt (Eller i det mindste spændende) fag.

Det lyder som et godt råd jeg har valgt at følge og derfor består mit fjerde semester af fagene:

  • Security
  • Fullstack JavaScript/TypeScript
  • Games with Unity.

Until next time 👋🍻

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