DM507: Algoritmer og Datastrukturer
Kommentar
Indgangskrav
Faglige forudsætninger
Studerende, der følger kurset, forventes at:
- Have kendskab til stoffet fra DM549 Diskrete metoder til datalogi. Specielt forudsættes en hvis mængde matematisk modenhed.
- Kunne anvende metoderne fra DM550 Introduktion til programmering. Specielt forudsættes fortrolighed med programmering i Java.
Formål
Kurset har til formål at sætte den studerende i stand til at anvende en
lang række eksisterende algoritmer og datastrukturer for fundamentale
problemer, samt generelle metoder til udvikling af nye algoritmer og
matematiske værktøjer til analyse af algoritmers korrekthed og
effektivitet. Dette er helt centralt i forhold til at kunne udvikle
effektiv software, og er vigtigt for forståelsen for øvre og nedre
grænser for beregningsproblemer.
Kurset bygger oven på den viden, der
er erhvervet i kurserne DM549 Diskrete metoder til datalogi og DM550
Introduktion til programmering, og giver et fagligt grundlag for at
studere algoritmiske og kompleksitetsteoretiske emner, der er placeret
senere i uddannelsen. I forhold til uddannelsens kompetenceprofil har
kurset eksplicit fokus på at:
- Give kompetence til udvikle nye varianter af centrale algoritmer og datastrukturer udviklet inden for datalogi.
- Give færdigheder i at analysere fordele og ulemper ved forskellige algoritmer, specielt med hensyn til ressourceforbrug.
- Give viden om et stort udvalg af centrale algoritmer og datastrukturer udviklet inden for datalogi.
Målbeskrivelse
For at opnå kursets formål er det læringsmålet for kurset, at den studerende demonstrerer evnen til at:
- anvende algoritmerne fra kurset på konkrete problemer.
- argumentere præcist for en algoritmes korrekthed eller mangel på samme.
- bestemme en algoritmes asymptotiske køretid.
- tilpasse kendte algoritmer og datastrukturer til specialtilfælde af kendte problemer og til nye problemer.
- designe
nye algoritmer til at løse problemer, som i natur minder om problemer
fra kurset. Herunder give en præcis beskrivelse af algoritmen, f.eks.
vha. pseudokode. - foretage formålstjenlige valg af datastruktur.
- designe nye datastrukturer baseret på kendte datastrukturer.
- designe og implementere et større program, som anvender algoritmer og datastrukturer fra kurset.
- argumentere præcist for de valg, der foretages i forbindelse med de foregående fire punkter.
Indhold
- Matematisk grundlag: rekursionsligninger, invarianter.
- Algoritmer:
korrekthed og kompleksitetsanalyse, del og hersk algoritmer (master
teorem, Strassens algoritme), grådige algoritmer, dynamisk
programmering, sorteringsalgoritmer (insertionsort, mergesort, heapsort,
quicksort, countingsort, radixsort), graf-algoritmer (BFS, DFS,
topologisk sortering af DAGs, sammenhængskomponenter, stærke
sammenhængskomponenter, MST, SSSP, APSP), Huffman-kodning. - Datastrukturer: ordbøger (BSTs, rødsorte træer, hashing), prioritetskøer, disjunkte mængder.
Litteratur
Eksamensbestemmelser
Eksamenselement a)
Tidsmæssig placering
Udprøvninger
Obligatorisk projektopgave
EKA
Censur
Bedømmelse
Identifikation
Sprog
Hjælpemidler
Oplyses på kurset
ECTS-point
Uddybende information
Eksamenselement b)
Tidsmæssig placering
Udprøvninger
Skriftlig eksamen
EKA
Censur
Bedømmelse
Identifikation
Sprog
Varighed
Hjælpemidler
Laptop, bøger og noter må anvendes. Adgang til internettet er ikke tilladt.
Nærmere beskrivelse af eksamensreglerne vil blive offentliggjort i itslearning.
ECTS-point
Uddybende information
Reeksamen i august er en mundtlig eksamen, der bedømmes med karakter efter 7-trinsskalaen og ekstern censur.
Vejledende antal undervisningstimer
Undervisningsform
- Introfase (forelæsning, holdtimer) - Antal timer: 44
- Træningsfase: Antal timer: 44
- Studiefase: Antal timer: 14
Undervisningsform: Opgaver i studiegrupper.