Algoritmer och mjukvarudesign
Studietips från Pär
Min pedagogiska grundidé bygger på att lära sig programmering är som ett hantverk som kräver en kombination av teoretisk input och praktisk muskelminne. För att bygga en solid grund rekommenderar jag följande metodik: Avsätt 2–4 timmar dagligen. Varva läsning i kurslitteraturen med att se de inspelade föreläsningarna för att få olika perspektiv på samma koncept. Börja med att 'skriva av' befintliga kodexempel. Det kan låta enkelt, men det tränar ögat att se detaljer och syntax som man annars missar. Gör små, kontrollerade förändringar i koden och testkör direkt. Vad händer om du ändrar en loop eller en variabeltyp? Det är i felsökningen den verkliga förståelsen föds. Skapa ett eget 'projekt' som följer dig genom kursen. Det kan vara ett system för en bilfirma, ett register för en idrottsförening eller en personlig boklista. Genom att applicera det du lärt dig på en 'verkligt' projekt får du en praktisk kompetens.
Veckoplanering
Vecka 18 - Hashtabeller
Kursmaterial
- En hashtabell, eller hash table, är en datastruktur som används för att lagra nyckel-värde-par. Den är mycket effektiv för att snabbt hitta, lägga till och ta bort data. Här är en grundläggande förklaring av hur en hashtabell fungerar i C#: 1) Nyckel och värde: Varje element i en hashtabell består av en nyckel och ett värde. Nyckeln används för att identifiera värdet. 2) Hashfunktion: En hashfunktion tar en nyckel och omvandlar den till ett index i tex en array där värdet lagras. Detta gör att man kan hitta värdet snabbt. 3) Kollisioner: Ibland kan två olika nycklar generera samma index. Detta kallas en kollision, och det finns olika metoder för att hantera detta, såsom chaining( kedjning) eller open addressing (öppna adressering).
- Kap 8 Hashtables
- Sid 210-212 Hashtable fundmentals
- Sid 212-213 Chaining
- Sid 214 Remove items
- Sid 213-214 Openadressing
- Sid 215 Linear Probing
Att göra
- Gör en egna implementation av Hashtabell som har Add, Get, Remove funktionalitet. Den ska också ha egen hash- och resize. Samt hantera kollisoner med chaining och eller openadressing. Låt AI-verktyg ställa frågor till dig om Hashtabeller samt ge dig programmeringsuppgifter på Hashtabeller
- Examination: Se kursrummet i Canvas vad som ska göras, hur det ska lämnas in och redovisas samt deadline.
Instuderingsfrågor
- What is a hash table?
- What is a bucket in a hash table?
- What is the purpose of a hash function in a hash table?
- How is a hash function chosen for a hash table?
- What is a hash collision?
- How does a hash table handle collisions?
- What is a hash collision chain?
- What is a hash table collision resolution algorithm?
- What is the difference between open addressing and chaining collision resolution techniques?
- How does linear probing work in open addressing?
- What is the time complexity of searching for an element in a hash table?
- What is the worst-case time complexity for searching for an element in a hash table?
- What is the load factor of a hash table?
- What is the ideal load factor for a hash table?
- What is the purpose of a hash tables resize operation?
- What is the difference between a hash table and an array?
- What is the difference between a hash table and a map?
Vecka 19 - Inlämning av labb 4 om Hashtabeller
Vecka 22 - Binära träd
Kursmaterial
- Ett binärt sökträd (BST) är en datastruktur som används för att lagra sorterade data och möjliggör snabb sökning, insättning och borttagning av element. Här är några viktiga egenskaper hos ett binärt sökträd: 1)Noder: Varje nod i trädet innehåller en nyckel och två pekare, en till vänster barn och en till höger barn. 2) Ordning: För varje nod gäller att alla nycklar i det vänstra delträdet är mindre än nodens nyckel, och alla nycklar i det högra delträdet är större. 3) Rekursion: Trädet är rekursivt definierat, vilket innebär att varje delträd också är ett binärt sökträd.
- Kap10 Trees focus binärt sökträd
Att göra
- Låt AI-verktyg ställa frågor till dig om vanliga koncepet, kunskaper och kodings förmågor som du måste ha kring binärt sökträd samt låt AI ge dig programmeringsuppgifter om binära träd.
- Examination: Se kursrummet i Canvas vad som ska göras, hur det ska lämnas in och redovisas samt deadline.
Instuderingsfrågor
- What is a Binary Search Tree?
- What is the time complexity of searching for an element in a balanced BST?
- What is the worst-case time complexity for searching an element in a BST?
- How does an in-order traversal of a BST output the elements?
- What property must the left and right subtrees of a BST node satisfy?
- What is a balanced BST, and why is it important?
- Describe the process of inserting a new value into a BST.
- Give an example of a situation where a BST is preferable over a hash table.
- How would you check if a binary tree is a BST?
| PROGRAM | IT-säkerhet och mjukvarutestning – kandidatprogram |
|---|---|
| SYFTE | Olika typer av datastruktur introduceras, som länkadelistor, köer, hashtabeller och träd. För- och nackdelar diskuteras med avseende till snabbhet, minnesresurser och komplexitet som grund för kvalificerade val av datastruktur för att lösa ett specifikt problem. |
| KURSPLAN | Gå till kursplan hos DU |