Algoritmer och datastrukturer, 7,5 hp
Algorithms and Data Structures, 7.5 credits
Kurskod: DB4002
Akademin för informationsteknologi
Nivå: Grundnivå
Välj kursplan
Fastställd av: Forsknings- och utbildningsnämnden, 2024-11-18 och gäller studenter antagna vårterminen 2025.
Huvudområde med fördjupning
Datorsystemteknik, Grundnivå, har mindre än 60 hp kurs/er på grundnivå som förkunskapskrav. (G1F)Datateknik, Grundnivå, har mindre än 60 hp kurs/er på grundnivå som förkunskapskrav. (G1F)
Behörighetskrav
Grundkurs i programmeringsteknik.
Kursens inplacering i utbildningssystemet
Kursen ingår som obligatorisk kurs i Civilingenjör i datateknik 300 hp samt i Data-, Elektro-, Mekatronikingenjörsprogrammen 180 hp.
Mål
Kursen syftar till att studenten ska utveckla kunskap om algoritmkomplexitet, algoritmdesign och datastrukturer. Kursen syftar även till att förbättra programmeringsfärdigheten i ett modernt programmeringsspråk, för närvarande Java.
Kursen bygger på grundläggande programmeringskunskaper. Kursen förbereder studenten för programmering av större uppgifter med fokus på kända algoritmer och datastrukturer för effektiv hantering av en större mängd data.
Efter avslutad kurs ska studenten kunna:
Kunskap och förståelse
- förklara hur man kan uppskatta exekveringstid hos program
- känna igen tekniker för algoritmdesign, så som divide and conquer, rekursion och dynamisk programmering
- känna igen datastrukturer och algoritmer för sökning och sortering, så som quicksort, binära sökträd och hashtabeller
Färdighet och förmåga
- identifiera behov av och använda datastrukturer som moduler för att lösa större problem
- använda algoritmdesigntekniker i lösning av större problem
- implementera och anpassa algoritmer och datastrukturer för att uppfylla en kravspecifikation
- använda Junit för test av algoritmer
Värderingsförmåga och förhållningssätt
- bedöma lämpligheten av program med hänsyn till exekveringstiden
- välja lämpliga färdiga implementationer av datastrukturer från programbibliotek
Innehåll
Abstrakta datatyper, stackar, köer, listor, träd, tabeller. Algoritmanalys och design. Asymptotisk exekveringstid. Rekursion, divide and conquer, dynamisk programmering.
Undervisningsspråk
Undervisning
Kursen består under första delen av föreläsningar och laborationer och under andra delen av ett fördjupande projekt. Laborationerna går parallellt med föreläsningarna för att ge studenten en verklig programmeringsförankring inför projektet. Projektet löper under de sista två veckorna av kursen och genomförs med fördel i grupper om två.
Betygsskala
Examinationsformer
Kursen har två examinationsmoment: skriftlig tentamen på genomgången teori samt skriftlig och muntlig redovisning av varje laboration.
1802: Tentamen, 5,5 hp
Fyrgradig skala, sifferbetyg (TH): Underkänd (U), Godkänd (3), Väl godkänd (4), Mycket väl godkänd (5)
1801: Laboration, 2 hp
Tvågradig skala (UG): Underkänd (U), Godkänd (G)
Undantag från angiven examinationsform
Om särskilda skäl finns får examinator göra undantag från angiven examinationsform och medge att en student examineras på annat sätt. Särskilda skäl kan till exempel vara beslut om riktat pedagogiskt stöd.
Kursvärdering
I kursen ingår kursvärdering. Denna är vägledande för utveckling och planering av kursen. Kursvärderingen dokumenteras och redovisas för studenterna.
Kurslitteratur och övriga läromedel
Litteraturlista 2025-01-20 – Tills vidare
Sedgewick, R. & Wayne, K. Introduction to Programming in Java: An Interdisciplinary Approach. Pearson Addison Wesley, 2008.
Sedgewick, R. & Wayne, K. Algorithms, 4th Edition. Pearson Addison Wesley, 2011.