Forelesningsplan
Her finner du en plan over hva som skal foregå i de nærmeste forelesningene.
Fra og med mandag 9. januar:
- Mandag 09:15 - 11:00, D1-057
- Torsdag 10:15 - 12:00, D1-052
- Torsdag 10:15 - 12:00, D1-052 (Øving)
Jeg regner læreboka som støttelitteratur. I de tilfellene det vil være særlig nyttig å konsultere læreboka, vil jeg referere til spesifikke kapitler i oversikten over forelesningene.
Uke nr. | Mandag | Torsdag | Fredag (Øving) |
---|---|---|---|
2 |
Introduksjon, oppvarmingsøvelser.
Emner: Kurset, Datastrukturer, Algoritmer. Notater Lewis & Chase: 1.2 |
Mer oppvarming. Java repetisjon.
Emner: Java.
Notater |
Java intro, Netbeans, primitive typer, referanse typer, løkker etc.
Java: Main.java, MyInt.java. Ressurser: What Is an Object?, What Is a Class?, What Is a Package?. |
3 |
Mer Java: Klasser, arv, interface. Lineære datastrukturer: Arrays, lenkede lister.
Emner: Java, Samlinger, Lenkde lister. Java: Main.java, MyList.java, ArrList.java. Ressurser: What Is Inheritance?, What Is An Interface?, Lesson: Generics. Lewis & Chase: Appendix B |
Mer om lister.
Java: Main.java, MyList.java, ArrList.java, Node.java, LinkList.java. Emner: Lister, Lenkede lister. Ressurser: Collections, Innsetting i tabelliste, Fjerning i tabelliste, Finne i lenket list, Fjerning i lenket liste, Sette inn i lenket liste. Lewis & Chase: Chapter 6 |
Oppgavesett 01 og 02, Java/Eclipse "orakel"-tjeneste, debugging |
4 | Java Generics. Kø, Stack.
Emner: Køer,
Stakker.
Java: Lecture05.GenList,Lecture05.ArrGenList, Lecture05.LinkGenList, Lecture05.Main. Lewis & Chase: Chapter 4 og 5 |
Oppvarming til algoritmeanalyse: Sortering, worst case.
Lewis & Chase: 8.1 - 8.2 |
Oppgavesett 02 og 03, debugging |
5 | Oppvarming til algoritmeanalyse: Søking, sortering, kvasikode.
Java: lecture07.Sort, lecture07.Search, lecture07.Main. Emner: Notasjon. |
Logaritmer, Algoritmeanalyse.
Notater Emner: Analyse. Lewis & Chase: Chapter 2 |
Oppgavesett 03 og 04, Algoritmeanalyse med testkjøringer.
Empirisk algoritmeanalyse: Sort.java (obs: ikke bruk System.gc() under timingen, det ødelegger resultatet fullstendig!), og regneark med plotting: algtest.odt |
6 | Rekursjon, Quicksort
Notater Lewis & Chase: 7.1, 7.2, 7.4 |
avlyst | Oppgavesett 04 og 05 |
7 | Mer Quicksort, Mergesort (flettesortering)
Java: Lecture11.QuickSort Lewis & Chase: 250-255 |
Moro med stack: Syntaxsjekking og kalkulator
Lewis & Chase: 3.5 |
Ingen øvelse. |
8 | Ingen forelesning | Ingen forelesning. | Ingen øvelse. |
9 | Trær: Binære trær, søketrær, traversering
Lewis & Chase: 9.1 - 9.7 |
Mer trær | Avlyst |
10 | Mer trær
Lewis & Chase: 10.1 - 10.4 Java: Lecture15.TreeNode, Lecture15.Bst |
Balansering av trær. AVL trær
Lewis & Chase: 10.5 - 10.6 |
Oppgavesett 06 og 07 |
11 | Dronningproblemet: permutasjoner | Permutasjoner, hashing.
Java: Queens.java |
Ingen øvelse |
12 | Avlyst | Mer hashing. Binærheap.
Emner: Hashtabeller Lewis & Chase: 11.1 - 11.4, 14.1 - 14.5 |
Oppgavesett 08 ++ |
13 | Implisitt (tabell) representasjon av trær. Heapsort
Lewis & Chase: 11.5 |
Påskelabyrint!
Lewis & Chase: 7.3 Java: Maze.java |
Oppgavesett 09 ++ |
14 | Påske | Påske | Påske |
15 | Påske |
Nettverk
Lewis & Chase: 12.1-13.6 |
Oppgavesett 10
Java: HeapSort.java...som vi gjør ferdig neste fredag :) |
16 | Nettverk: Korteste vei, traveling salesman problem | Dijkstras algoritme | Eksamenstrening, labyrint + Dijkstra: V2011-4 og V2010-4
Java: Graph.java, ferdigstilt HeapSort: HeapSort.java. |
17 | Oppsummering: Eksamenstips, Overblikk | Eksamenstrening
Meny (Vi kommer ikke til å rekke gjennom alt like nøye, derfor er det viktig at dere forbereder dere og melder fra der skoen trykker mest):
|
Eksamenstrening |
18 | Ekstra eksamenstrening | - | - |
Gjennomgåtte temaer
Java
- Pakker, primitive typer (int, char etc.), referanser
- Løkker
- Tabeller
- Klasser: Arv, Interface, Generics
Datastrukturer
- Definisjon
- Lineære, hierarkiske og nettverksstrukturer
- Lister
- Tabellbaserte lister
- Lenkede lister
- Kø (FIFO), Stack (LIFO)
- Binære trær
- Binære søketrær
- AVL trær
- Komplett binærtre
- Hash tabell
- Prioritetskø
- Max- og Min-Heap
- Hash tabell
- Nettverk: matrise
- Nettverk: Noder og kanter
Algoritmer
- Definisjon
- Pseudokode
- Iterativ løsning av Hanoi's tårn
- Søking, innsetting og fjerning av elementer i lister
- Binærsøk
- Innsettingssorterting, utvalgssortering
- Pseudokode
- Rekursjon
- Effektivitet, algoritmeanalyse, Store O, Big Oh
- Flettesorterting (Mergesort)
- QuickSort
- Syntax sjekking med stack
- Konvertering fra infix til postfix
- Evaluering av postfix-uttrykk
- Søking i binære søketrær
- Beregne høyden i et binærtre
- Innsetting og sletting i binære søketrær
- AVL-balansering
- Permutasjoner
- Hashing
- Sette inn og ta ut i max(min)heap
- Bygge heap
- Heapsort
- Dybdesøk
- Breddesøk
- Korteste vei: Dijkstra
Anvendelser
- Google Maps
- Hanoi's tårn
- Palindromsjekking
- Syntaxsjekking
- Dronningproblemet (8-queens, N-queens)
Diverse
- Summen av de N første heltall: (N2+N)/2
-
Her er er et eksempel på løsning av en typisk Dijkstra oppgave (v08-5):
Ferdigbehandlede noder er streket under. Oppdaterte noder (der veien er blir kortere enn før) er uthevet med fet skrift.
a b c d e Kommentar Init a:0 -:∞ -:∞ -:∞ -:∞ Avstanden fra a til a settes til 0. De andre avstandene settes til uendelig, og deres "via"-noden settes til "-" 1 a:0 a:13 a:4 a:7 Vi velger noden med kortest avstandsverdi, dvs. a. Dernest oppdaterer vi avstanden til a ("via a") i alle nabonodene som ikke er ferdigbehandlet, dvs,. b, c, og d. Noden a er etter dette ferdig behandlet, og vi markerer med å sette strek under den. 2 a:4 c:11 Vi velger node c (kortest vei). For alle naboene til c som ikke er ferdigbehandlet, dvs e, sjekker vi om veien til a er kortere via c enn den til nå korteste veien, og det er den, og vi oppdaterer. 3 a:7 d:9 Vi velger node d (korteste vei til nå). For alle noboer som ikke er ferdigbehanldet (e), sjekker vi om veien er kortere via d enn via c, og det er den, og vi oppdaterer e. 4 e:10 d:9 Blant nodene som ikke er ferdighbehandlet, har e har nå kortest vei. Den har en nabo som ikke er ferdig, b, og veien til a vi e er 9, som er mindre enn 13, og vi oppdaterer. 5 e:10 Det er nå kun en node som ikke er ferdigbehandlet, b, og den har jo da ingen naboer som ikke er ferdigbehandlet, og vi er framme!