UNF Computer Science Camp 2018

Hold fri med datalogi!

Fagligt program

Det du vil lære på campen

På Computer Science Camp vil du blive undervist i emner med alt godt fra datalogien. Der vil både være teoretisk og praktisk undervisning, fordelt på forelæsninger og øvelsestimer.

Forelæsning på Computer Science Camp 2015. Foto: UNF

Deltagere programmerer løs på Computer Science Camp 2015. Foto: UNF

Introduktion til programmering

Når man skal bage en kage, følger man en opskrift, der består af en række simple instruktioner. På samme måde følger en computer en række simple instrukser, når den f.eks. skal vise et excel-ark.

Programmering er analogt med det at skrive opskriften, og derved opdele en opgave i små, simple instrukser, som computeren kan forstå.

I introduktion til programmering, vil der blive undervist i basale programmeringsfærdigheder, som vi kommer til at bruge i de andre forløb.

Forløbet kræver ingen forudsætninger, så selv dem, der aldrig har programmeret før, vil kunne følge med.

Under campen kommer vi til at programmere i Python. Python er et simpelt programmeringssprog sammenlignet med andre programmeringssprog, men kan alle de samme ting.

Det er derfor ideelt for begyndere såvel som garvede programmører.

Algoritmer

Algoritmer - definition: Et ord brugt af programmører, når de ikke gider fortælle præcist, hvad de har gjort.

Denne definition er selvfølgelig en joke, men har en hvis sandhedsværdi i sig: En algoritme er en utvetydig måde, hvorpå man kan løse et problem.

Så når programmøren siger, at han eller hun har brugt en algoritme, kan det altså betyde rigtigt mange ting. Google bruger f.eks. én algoritme til hurtigt at finde de 10 mest relevante hjemmesider til en given søgning og bruger derefter en anden algoritme til at sende resultaterne til din computer. Når man lader en computer udføre algoritmer, kan man bearbejde komplekse problemstillinger, som kan være næsten umulige for mennesker.

I algoritmer skal vi lære om nogle af de mest udbredte og brugbare algoritmer, og hvordan man beskriver dem. Vi skal bl.a. beskæftige os med grafer, søgning og kompleksitet af algoritmer. Det kan lyde meget tungt - men algoritmer lader os bevæge os fra det teoretiske til det praktiske, så vi kommer både til at arbejde med noget abstrakt såvel som konkret.

Processorarkitektur

En computer består af mange forskellige dele. Der er hukommelse, der er harddisk, der er lydkort, der er grafikkort, og der er netværkskort. Og så er der CPU'en, som nok er den mest centrale del af en computer. Central Processing Unit, som CPU står for, er nemlige selve computeren. Det er CPU'en, der leverer al computerkraften, og foretager alle de mange millioner beregninger, en moderne computer foretager hvert sekund*. Man kan sige, at den er hjernen i computeren.

I dette forløb vil vi kigge nærmere på CPU'en. Vi vil kigge nærmere på, hvordan en CPU er designet, og hvilke forskellige elementer den består af. En CPU's design afgør, hvilke beregninger den kan foretage, og hvordan dens instruktioner ser ud. Det kalder vi et instruktionssæt. Ud fra et specifikt instruktionssæt vil vi skrive små programmer, som uden videre kan afvikles direkte på CPU’en. I modsætning hertil skal andre programmeringssprog, som f.eks. Python, alle oversættes til maskininstruktioner, førend CPU’en kan forstå dem.

Forløbet vil hovedsageligt være praktisk anlagt. Det er et obligatorisk forløb.

* Dette er en sandhed med modifikationer. Der foregår også beregninger i mange af de andre dele af computeren. Mest markant er moderne grafikkort meget kraftfulde, fordi de er nødvendige for, i realtid, at kunne afvikle 3D-computerspil i høj kvalitet. Men det er alt sammen specialopgaver.

Beregningsteori

Beregningsteori er læren om, hvilke ting en computer kan og ikke kan beregne, og hvorfor.

Beregningsteori bruges indenfor mange felter i datalogien. Det kan bruges til at oversætte kode til noget computeren forstår (compiler), søge i store mængder tekst, strukturen bag HTML, som er basis for moderne websider og meget mere. Alle disse emner baserer sig på en af de grundlæggende modeller fra beregningsteori.

Vi vil snakke om, hvilke modeller, der findes indenfor beregningsteori, hvad de kan bruges til, samt hvad deres styrker og svagheder er. Der vil også blive set på hvilke problemer, der kan og ikke kan løses ud fra de forskellige modeller. Dette inkluderer modellen bag den moderne computer, og dermed spørgsmålet, om der findes problemer, som en computer ikke kan løse? Og findes der problemer, hvor vi ikke kan bestemme om de overhovedet er løselige?

Hacking

Hvordan udnytter hackere sårbarheder til at angribe software? Hvad er SQL injection og buffer overflows?

Vi vil i dette undervisningsforløb se på forskellige typer af fejl i software, som kan udnyttes af hackere, og lære om teknikker til at udnytte dem. I vil i løbet af forløbet skulle løse en række opgaver, hvor i selv kommer til at prøve at bruge nogle af de teknikker, vi lærer om.

Denne side er sidst opdateret d. 26. december 2017 af LMB

På UNF Computer Science Camp 2018 vil der undervises i følgende emner:

  • Introduktion til programmering
  • Algoritmer
  • Processorarkitektur
  • Beregningsteori (valgemne)
  • Hacking (valgemne)
Du skal vælge én af de to valgfri emner, når du ankommer på campen.