Algoritmer och mjukvarudesign

Välkommen till Pär Erikssons delar av kursen. Min enkla pedagogiska ide' och erfarenhet är att man lär sig mycket genom att lägga ner tid ca 2-4 timmar varje dag på att läsa i kursboken, titta på inspelningar samt skriva av befintlig kodexempel ur boken, inspelningar etc. Gör små förändringar i och av den för att sen testköra och se vad som händer. Ta paus varje timme. Ha en tänkt app för företag, klubb eller förening som du använder dina nya kunskaper på. Där du tänker, hur kan jag tillämpa det nya jag lärt mig på deras app? Jag kör ofta en tänkt liten bilfirma som jag applicerar nya koncept/kunskaper på och skriver koden för.

Veckoplanering - Vad titta på? Vad läsa? Vad göra?

Att läsa
  • 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 titta på
  • Fö1 Hashtabell (Pär) - Här lär du dig skapa en egen klass för hashtabell implementation för att hantera bla bilobjekt. Som bucket används en array av länkad lista i vilken vi kan lägga Key_Value par där Key är regnummer och value är bil objektet. Add metoden gås igenom för att kunna lägg till ett bil objekt där key är regnummer och value är bil objektet. I Add används: Hash funktionalitet samt kollisionteknik. Kollisioner hanteras med chaining tekniken där jag använder en länkad lista för att lägg till flera bilar på samma index position. I HashFunctions metod skapas med en DBJ2 algoritmen. Baserat på en sträng får jag via HashFunction en index position där bil objekt ska läggas till eller hämtas ifrån.
  • Fö2 Hashtabell -Get Metoden(Pär) - Här lär du dig att skapa Get metoden där man hämtar ut data baserat på en nyckel, regnummer, och får tillbaka ett value, ett bilobjekt. I Get hanteras den chaining som ev uppstod vid kollision där olika nyckelvärden,regnummer, fick samma index position. Då loopas den länkade listan igenom för att finna matching nyckelvärden,regnummer och då returneras det objekt dvs det matchande bilobjektet
  • Fö3 Hashtabell - Remove metoden (Pär) - Här lär du dig att skapa remove metoden.
  • Fö4 Hashtabell - Openadressing (Pär) - Här lär du dig hur du hantera kollsion med öppenaddresseringsteknik. Exemplet visar att lägga till data där man gör en linjär sökning efter nästa lediga index postion att lägg bil objektet i.
  • Fö5 Hashtabell - Openadressing (Pär) - Här lär du dig hur du hantera kollsion med öppenaddresserings teknik. Exemplet visar att hämta till bildata på regnummer där man gör en linjär sökning för att kolla om bilen finns på nästa lediga indexpositon.
  • Fö6 Hashtabell (Hans Edy) - Hans Edy föreläning om hash tabeller
  • Fö7 Öppen adressering (Hans Edy) - Hans Edy's föreläsning om bla öppenadressering i hashtabeller
Övningar
  • 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
Inlämningar
  • Se vecka 18
Frågor och svar

Formulera ditt svar. Tryck sen på frågan för att se mitt svar. Jämför svaren. Vad för likheter och skillnander ser du? Vad saknas i mitt respektive ditt svar?

  • 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?

Att läsa
  • Kap 8 Hashtables
Att titta på
  • N/A - Lorem lipsum
Övningar
  • Exercise 3
  • Exercise 4
Inlämningar
  • Inlämning av labb 4 om Hashtables, fredag 17:00
  • Handin 4
Frågor och svar

Formulera ditt svar. Tryck sen på frågan för att se mitt svar. Jämför svaren. Vad för likheter och skillnander ser du? Vad saknas i mitt respektive ditt svar?

  • N/A

Att läsa
  • Kap10 Trees focus binärt sökträd
Att titta på
Övningar
  • Exercise 5
  • Exercise 6
Inlämningar
  • Se vecka 22
Frågor och svar

Formulera ditt svar. Tryck sen på frågan för att se mitt svar. Jämför svaren. Vad för likheter och skillnander ser du? Vad saknas i mitt respektive ditt svar?

  • 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?

Att läsa
  • Kap 10 Trees focus binärt sökträd
Att titta på
  • N/A - Lorem lipsum
Övningar
  • N/A
Inlämningar
  • Inlämning av labb 7 om Binärt sökträd, fredag 17:00
Frågor och svar

Formulera ditt svar. Tryck sen på frågan för att se mitt svar. Jämför svaren. Vad för likheter och skillnander ser du? Vad saknas i mitt respektive ditt svar?

  • Question 5
  • Question 6

Hans Jernberg

hje@du.se

Pär Eriksson

pei@du.se

Elin Ekman

ekm@du.se

HashTable
Se spellista

Kursnamn: Algoritmer och mjukvarudesign

Program: IT-säkerhet och mjukvarutestning – kandidatprogram

Beskrivning: 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.

Se kursplan