I softwareudvikling er det vigtigt at vide, hvordan problemer, der kan løses på en computer, løses effektivt. Algoritmik handler om de metoder, der benyttes til løsning af problemer under forskellige ressourcemål. Ofte er det ønskværdigt, at computeren beregner en løsning så hurtigt og med så lidt brug af plads som muligt. For at løse et problem effektivt kan det være nødvendigt at benytte en datastruktur, der er specielt velegnet til netop dette problem. En datastrukturer er en bestemt måde at organisere data på, hvortil der er knyttet en række af operationer. Der findes f.eks. datastrukturer, hvor det er hurtigt at indsætte og genfinde data.
Kursets målsætning er at give en grundlæggende forståelse af, hvordan almindelige datalogiske problemer kan løses effektivt på en computer.
Analyse af algoritmers effektivitet
Algoritmer til søgning, sortering og selektion
Datastrukturer (stakke, lister, køer og prioritetskøer, træer, søgetræer og balancerede søgetræer, mængder)
Hashing
Dynamisk programmering
Grådige algoritmer
Grafer og grafalgoritmer
Hver kursusgang vil bestå af en forelæsning samt øvelser med øvelsesvejleder. En ugentlig plan med pensum og øvelser mm. udleveres. Der vil være et antal mindre og større obligatoriske opgaver, hvor besvarelsen skal godkendes for at kunne bestå eksamen.
Kursets belastning er 7.5 ECTS, det svarer til 1/3 af et fuldtidsstudie i den periode kurset afholdes.
Forelæsningerne og øvelserne holdes onsdag kl. 9.15-16 på IT-højskolen. Forelæsninger er i lokale 2.51 fra kl. 13:00. Øvelserne er i lokalerne 1.03 og 3.09. Se iøvrigt lektionsplanen.
Cormen, Leiserson Rivest & Stein: Intruduction to Algorithms, Second Edition, The MIT Press.Som supplerende litteatur anbefaler vi at kikke på sider webkursus. Endvidere har mange studerende været glade for at se algoritmerne implementeret i JAVA og ekstra matematik forklaringer i bogen Data Structures and algorithms in Java", af M.T. Goodrich and R. Tamassia.
Kurset vil indeholde et antal programmeringsopgaver, som I kan vælge at løse. I princippet kan et vilkårligt imperativt programmeringsprog benyttes til at løse opgaverne, hjælp vil dog primært kunne gives i Java og C/C++.En dansk introduktion til Java kan ses her og den officielle Sun tutorial her. Java til Windows 95/NT, Linux og andre platforme kan hentes fra denne hjemmeside.
Stephen Alstrup (stephen@itu.dk), lokale 0.30
Theis Rauhe (theis@itu.dk), lokale 0.30
Philip Bille (beetle@diku.dk)
Christian Worm Mortensen (cworm@itu.dk)
Skriftlig. Det er en forudsætning for at bestå eksamen, at alle obligatoriske opgaver er godkendt. De ugentlige obligatoriske opgaver kan hver give op til et minus point. De store ugeopgaver kan hver give op til tre minus point. For at få lov til at gå til eksamen må man maksimalt have 3 minus point.