UNF Computer Science Camp 2019

DET SKAL KODES VÆK!

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 læser opgaver på Computer Science Camp 2018. Foto: UNF

Algoritmer

Algoritmer - definition: Et ord brugt af programmører, når de ikke gider fortælle, 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.

Med en god algoritme kan man få computere til at bearbejde komplekse problemstillinger, som kan være næsten umulige for mennesker.

I algoritmer skal vi både lære om nogle af de mest udbredte og brugbare algoritmer. I får også lov til selv at prøve at lave jeres egne algoritmer. Vi skal bl.a. beskæftige os med sortering, søgning i lister og grafer (og nok ikke den slags du lige tænker!). Vores mål er, at algoritmer går fra at være noget abstrakt og ukendt til at være noget der både jordnært og interessant.

Forløbet er et af to obligatoriske forløb.

Digitallogik

AND, OR, NOT, XOR. Det er navnene på de simple logiske gates, som er grundstenene for hvordan en computer er opbygget. Helt nede på niveauet lige over elektroniske kredsløb, repræsenterer man tal med en række tændte og slukkede ledninger, 0’ere og 1’ere. Her er det kredsløb opbygget af logiske gates som sammenligner, sammenlægger og på andre måder regner med tal. De er kernen inde i kernen.

I digital logik lærer I hvordan de logiske gates virker, og hvordan man kan bruge dem til at bygge mere komplicerede komponenter, som kan bruges til at bygge CPU’er. Her arbejder vi i 010100111001, de binære tal, som I selvfølgelig også lærer at regne med. I løbet af undervisningen kommer I til selv at sammensætte de kredsløb vi lærer jer, i et program som simulerer digital logik.

Forløbet er et af to obligatoriske forløb.

Kryptologi

Kryptologi, af græsk "læren om hemmeligheder", handler om at kunne opbevare og dele hemmeligheder, uden at afsløre dem. Det findes der mangle forskellige metoder til - vi vil se at ikke alle er lige sikre.

Vi mennesker har altid haft hemmeligheder at holde på - og forsøgt at få andres hemmeligheder at vide. En af de tidligeste krypteringssystem blev brugt af Julius Cæsar tilbage før vores tidsregning. Det kan få store konsekvenser, hvis man ikke kan holde på hemmeligheder. Både på personligt plan, men også i det store billede. Da de allierede brød Enigma - tyskerenes krypteringssystem, påvirkede det krigens gang markant.

Vi skal først tage et kig på en historisk gennemgang af kryptering, der tager jer gennem de spændende metoder der er blevet brugt at bevare hemmeligheder i alt lige fra romertiden under Juli us Cæser, til Enigma under anden verdenskrig og op til brugen af kryptering i den kolde krig. Vi vil også komme til at arbejde med forskellige krypterings algoritmer, indenfor de to emner symmetrisk kryptering og asymmetrisk kryptering. Til sidste vil vi kigge på hvad man gør hvis man skal blive enig om en fælles nøgle til at kryptere end beskeder.

Funktionel programmering

Typisk forstår man programmering som en disciplin, hvor man giver computeren en sekvens af kommandoer, såsom at lægge 1 til et tal eller dividere det med 2, som den så udfører. Dette kaldes imperativ programmering, og er grundlaget i de fleste programmeringssprog samt i algoritmeforløbet. I dette forløb vil I blive introduceret til funktionel programmering, hvor man i stedet for at give en serie af kommandoer beskriver matematiske funktioner, der udregner resultatet. Dette er en markant anderledes tankegang end imperativ programmering, hvor vi nu arbejder med rekursion, hvor man deler problemer op i mindre delproblemer, og højere-ordens funktioner, hvor man behandler funktioner som værdier, der kan manipuleres. Det fede ved at forstå alting som funktioner er, at man kan udvikle nogle utroligt kraftfulde abstraktioner, der er anvendelige overalt i programmering. Desuden har funktioner også den pæne egenskab, at de altid giver det samme resultat for det samme input, hvilket gør programmer mere overskuelige.

I forløbet vil I blive introduceret til de centrale begreber, der gør funktionel programmering muligt og enormt kraftigt, nemlig rekursion, pattern matching samt måder at manipulere funktioner på. I vil også lære noget om hvordan man kan bruge datatyper til at forstå hvordan ens program hænger sammen.

Denne side er sidst opdateret d. 29. april 2019 af LMB

På UNF Computer Science Camp 2019 vil der blive undervist i de følgende emner:

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