DM131 - 3. semesterUgeplan for Softwarearkitektur og Distribuerede ProgrammerTema: Træer og Grafer (datastrukturer og algoritmer) samt sprogteori |
Sidst ændret: 2014.05.19
Uge 17 | |||
Dag | Tidspunkt | Emne | Litteratur / Opgaver |
Mandag | PÅSKE DAG | INGEN UNDERVISNING | |
Onsdag | 08:30 - | Vi tager fat på nyt tema med
datastrukturer og algoritmer, hvor hoved temaet vil være træer og grafer. Da vi allerede har
set på en del datastrukturer, herunder binære træer på 1.
studieår (uge 43-44) vil denne uge være tale om delvis
gentagelse af stof fra 1. år. Øvrige vi lige kort vil samle op på: Binære træer (ved Anders) Nyt: |
Om datastrukturer gennerelt: - Skim for et overblik: http://en.wikipedia.org/wiki/List_of_data_structures Om generisk template: - læses: Generiske datastrukturer (template baserede) - her en dårlig stak 173_StackTemplate Om algoritme kompleksitet - Læs hele artiklen: http://en.wikipedia.org/wiki/Best,_worst_and_average_case - skim afsnit 1til 3 incl: http://en.wikipedia.org/wiki/Algorithmic_complexity#Complexity_classes Læses - Induktionsbeviser - bevis for korrekt virkemåde at algoritmer
Læses: intens:
Noter til binære træer koncentrat om begreber Suplement: |
- 11:50 |
Opgaver med binære træer ( repetition - løs opgave BT01,BT02,BT03 og BT04
-
laves inden onsdag) |
||
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte
|
||
Fredag | 08:30 - | Opgaveløsning uden lærerstøtte Opgaver med binære træer (løs opgave BT05) |
|
- 10:00 | |||
12:30 - 14:00 | Opgaveløsning uden
lærerstøtte Opgaver med binære træer (løs opgave BT05) |
Afleveringsopgaver
(obligatoriske) denne uge: opgave BT05 - (BT01-04 skal laves
til
onsdag dag, men ikke afleveres)
|
Uge 18 | |||
Dag | Tidspunkt | Emne | Litteratur / Opgaver |
Mandag | 08:30 - | Evt. opsamling på binære træer Introduktion til grafer Graf - implementering / datastrukturer |
Note om grafer af Niels Otto Knudsen - side 1-4 - læs før undervisningen http://msdn.microsoft.com/en-us/library/ms379574.aspx - skim før undervisningen Gennemgang af datastrukturen graf ift. implementering se video før undervisningen |
- 10:00 |
Oplæg til bredere obligatorisk opgave i sproglære og grafer
- opgaven vil blive opdelt i delopgaver over de næste uger,
så der til sidst gerne skulle kunne ses en samlet løsning. delopgave 1) Med udgangspunkt i oplæggets bilag med ruteplan skal du finde frem til hvilke knuder og kanter og tegne en graf, der svarer til ruteplanen. Når du får lavet et grafprogram, kan du bruge ruteplan-grafen som testdata. |
||
10:20 - | Opsamling på Obligatorisk
køreplansopgave - delopgave 1) |
Gennemgang af datastrukturen graf ift. implementering se evt. video igen i forbindelse med opgaveløsningen. | |
12:30 - 14:00 |
Delopgave 2a: (datastruktur, metoder til at indsætte elementer,
test), se under afleveringsopgaver denne uge |
||
Onsdag | 08:30 - | Graf algoritmer |
Note om grafer af Niels Otto Knudsen -
side 5-6- læs før
undervisningen http://msdn.microsoft.com/en-us/library/ms379574.aspx - læs samme enme her |
- 11:50 | Opgaveløsning med
lærerstøtte |
Løsningseksempel på grafalgoritmerne kan findes her: - http://bjoerks.net/CSharp/Modeller/Graf_Matrix.zip Du skal selvfølgelig selv prøve at løse opgaverne, men kan bruge løsningen som inspiration, hvis du går helt i stå eller vil tjekke din løsning af selv. |
|
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte Ekstra opgaver for dem der har løst ruteplansopgaverne - GrafOpgaver - programmering |
Løsningseksempel på grafalgoritmerne kan findes her: |
|
Fredag | 08:30 - | Opsamling og opgaveløsning med støtte | |
- 10:00 | |||
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte Ekstra opgaver for dem der har løst ruteplansopgaverne - GrafOpgaver - programmering |
Afleveringsopgaver
(obligatoriske) denne uge:
Ruteplansopgave - frem til delopgave 2b - Bredde først traversering |
Oplæg til bredere obligatorisk opgave i sproglære og grafer
- opgaven vil blive opdelt i delopgaver over de næste uger,
så der til sidst gerne skulle kunne ses en samlet løsning. delopgave 1) Med udgangspunkt i oplæggets bilag med ruteplan skal du finde frem til hvilke knuder og kanter og tegne en graf (papir og blyant), der svarer til ruteplanen. delopgave 2) Du skal have lavet en grafklasse og et program, der med brug af denne kan løse grafspørgsmålene med brug af ruteplan-grafen som testdata (behøver ikke at kunne udskrive i formatet som beskrevet i projekt-oplæg) - 2a) grafklassen skal kunne indeholde en graf. - Der skal være metoder så man skal kunne indsætte elementer i grafen - Du skal evt. have en metode, der for alle knuder kan udskrive kanterne som kontrol - 2b) metode for brede-først traversering. - 2c) metode for minimum spanning tree - 2d) du er velkommen til at udvide med ekstra metoder for fx shortest path (Dijkstra) |
Uge 19 | |||
Dag | Tidspunkt | Emne | Litteratur / Opgaver |
Mandag | 08:30 - | Graf algoritmer - bredde- og dybde-traversering (opsamling) - minimum spanning tree - Prims algoritme - minimum spanning tree - Kruskals |
http://msdn.microsoft.com/en-us/library/ms379574.aspx -
læs forud om minumum
spanning tree Note om grafer af Niels Otto Knudsen - side 10-17- suppler læsning her Prims algoritme på graf - minimum spanning tree Prims algoritme: applet for simulering af algoritme
Kruskals algoritme på graf - minimum spanning tree
|
- 11:50 | Opgaveløsning med
lærerstøtte Delopgave 2c: metode for minimum spanning tree, se under
afleveringsopgaver denne uge |
Løsningseksempel på grafalgoritmerne kan findes her: |
|
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte Ekstra opgaver for dem der har løst ruteplansopgaverne - GrafOpgaver - programmering |
||
Onsdag | 08:30 - | Graf algoritmer, opsamling til nu evt. Dijkstras shortest path |
Gennemgang af Dijkstra's "Shoretst Path" algoritme i en graf
se video før
undervisningen Simulerings af Dijkstra's algoritme Note om grafer af Niels Otto Knudsen - side 11-13- suppler læsning her |
- 11:50 | |||
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte - se sidst i ugens plan | ||
Fredag | 08:30 - | Graf algoritmer, opsamling til nu Dijkstras shortest path - evt. taget onsdag Evt. domain-model med data for ruteplan og fra denne til graf |
Gennemgang af Dijkstra's "Shoretst Path" algoritme i en graf
se video før
undervisningen Simulerings af Dijkstra's algoritme Note om grafer af Niels Otto Knudsen - side 11-13- suppler læsning her |
- 10:00 | |||
12:30 - 14:00 | Opgaveløsning uden lærerstøtte - se sidst i ugens plan |
Afleveringsopgaver
(obligatoriske) denne uge:
Ruteplansopgave - frem til delopgave 2c -
Minimum spanning tree |
Oplæg til bredere obligatorisk opgave i sproglære og grafer
- opgaven vil blive opdelt i delopgaver over de næste uger,
så der til sidst gerne skulle kunne ses en samlet løsning. delopgave 1) Med udgangspunkt i oplæggets bilag med ruteplan skal du finde frem til hvilke knuder og kanter og tegne en graf (papir og blyant), der svarer til ruteplanen. delopgave 2) Du skal have lavet en grafklasse og et program, der med brug af denne kan løse grafspørgsmålene med brug af ruteplan-grafen som testdata (behøver ikke at kunne udskrive i formatet som beskrevet i projekt-oplæg) - 2a) grafklassen skal kunne indeholde en graf. - Der skal være metoder så man skal kunne indsætte elementer i grafen - Du skal evt. have en metode, der for alle knuder kan udskrive kanterne som kontrol - 2b) metode for brede-først traversering. - 2c) metode for minimum spanning tree - 2d) du er velkommen til at udvide med ekstra metoder for fx shortest path (Dijkstra) delopgave 3) Der skal laves en datastruktur/domaine-model, der kan indeholde informationen fra den beskrevne ruteplan (oplæg/idé gennemgås næste mandag, men spørg hvis du er klar denne uge) delopgave 4) Der skal laves en rutine, der ud fra data i ruteplan-modellen(domain-modellen) kan danne grafen. |
Uge 20 | |||
Dag | Tidspunkt | Emne | Litteratur / Opgaver |
Mandag | 08:30 - | Opsamling på grafer og algoritmer
på disse Fra domain-model med data til graf |
|
Introduktion til sprogteori - Grammatikker og sprog - Compiler - regulære udtryk - BNF + EBNF - en lille smule om Assembler (symbolsk maskinsprog), maskinsprog og afvikling på cpu (udskudt til onsdag) |
Noter/litteratur se tidligere
udleverede kopier: 1. Hvordan virker en Compiler (læs forud for undervisningen) 2. Compiler design (læs forud for undervisningen) 3. Note om EBNF grammatik(kbh. uni)) (læs efter behov undervejs) De første 2 vil være primære for denne dag - den sidste inddrages undervejs i forløbet efter behov som supplement, idet der vil være eksempler og gennemgang ud fra C# i selve undervisningen. Supplerende / alternativ litteratur for de der måtte ønske at anskaffet sig dette - kan man bruge #Comp - primært kap. 1 og 4. Slides om Sprog og compiler (vigtige pointer og overblik) Om Context frie grammatikker (wikipedia) - se specielt på
eksemplerne:
EBNF eksempler Leksikalsk analyse ( scanner til tokens ): Om programmeringssprog, parsertree og tokenization
(wikipedia): For dem der gerne vil lidt dybere i emnet |
||
Opgaver med EBNF (løs opgave 1-5) Ruteplansopgave - delopgave 3, 5 og 6 |
|||
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte - EBNF 1-5 - Ruteplansopgave - delopgave 3, 5 og 6 |
||
Onsdag | 08:30 - | Sproglære fortsat - en lille smule om Assembler (symbolsk maskinsprog), maskinsprog og afvikling på cpu (flyttet fra mandag) Opsamling på BNF, EBNF og regulære
udtryk og EBNF opgaver
|
Compilering_af_symbolsk_maskinsprog med brug af
Symboltabel
Note om EBNF grammatik og syntakstyret indlæsning (se tidligere udleverede kopier)
Scanner / Leksikalsk analyse: |
- 11:50 | Opgaveløsning med støtte | ||
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte - ruteplanopgaver - se sidst i ugens plan |
||
Fredag | Store bededag - ingen undervisning | ||
Afleveringsopgaver
(obligatoriske) denne uge:
ingen obligatoriske afleveringer
denne uge Ruteplansopgave - delopgave 3 (den er vigtig, da struktur skal bruges i sproglære- / indlæsnings delen og indgår i opgave senere) Ruteplansopgave - delopgave 4 kan binde indlæsning sammen med graf til samlet løsning (hvis du er bagud så drop delopgave 4 frem for andre opgaver) Ruteplansopgave - delopgave 5 og 6 skal ikke afleveres denne uge men laves og indgår næste uge |
Oplæg til bredere obligatorisk opgave i sproglære og grafer
- opgaven vil blive opdelt i delopgaver over de næste uger,
så der til sidst gerne skulle kunne ses en samlet løsning. delopgave 3) Der skal laves en datastruktur/domaine-model, der kan indeholde informationen fra den beskrevne ruteplan (oplæg/idé gennemgås denne uge) - følgende kunne bruges som struktur (EBNF_Ruteplan_Datamodel_for_Regionskoereplan.ppt) - du kan evt. vælge at bruge denne model, hvis du har problemer med at definere din egen (EBNF_Ruteplan_Model_Syntakstræ_Projekt.zip) delopgave 4) Der skal laves en rutine, der ud fra data i ruteplan-modellen(domain-modellen) kan danne grafen. delopgave 5) Med udgangspunkt i grammatikken for Ruteplansinputtet skal du fastsætte passende brikker/tokens og herefter omskrive grammatikken med disse som terminaler, du skal endvidere beskrive hvert af disse tokens som regulære udtryk. delopgave 6) Der skal laves en Token klasse, der kan bruges til scanner (leksikalske analysator) og parser. Du kan evt. også også lave en klasse til udveksle Tokens som i løsningen med medlemssystemet. du kan tage udgangspunkt i ét af følgende eksempler - Det er ikke meningen du i denne uge skal lave hele scanneren, men i denne uge blot en Token klasse, der passer med det du er kommet frem til i delopgave 5- klassen skal bruges i næste del5 - eksempel på simpel scanner / leksikalsk analyse - eksempel på scanner / leksikalsk analyse baseret på statepattern |
#comp: Programming Language Processors In Java - compilers and interpreters, David A Watt & Derick F Brown, Printice Hall, ISBN: 0-130-25786-9 |
Uge 21 | |||
Dag | Tidspunkt | Emne | Litteratur / Opgaver |
Mandag | 08:30 - | Sproglære fortsat Scanner / Leksikalsk analyse - vi skal "bygge" første del af inputbehandlingen
|
Note om EBNF grammatik og syntakstyret indlæsning (se tidligere udleverede kopier)
Scanner / Leksikalsk analyse: |
- 10:00 | |||
10:20 - | Opgaveløsning med lærerstøtte - Ruteplansopgave - delopgave 7a |
||
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte - Ruteplansopgave - delopgave 7a |
||
Onsdag | 08:30 - | ||
- 10:00 | Scanner / Leksikalsk analyse
fortsat
|
Om state pattern:
http://en.wikipedia.org/wiki/State_pattern
Scanner / Leksikalsk analyse: |
|
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte - Ruteplansopgave - delopgave 7a og 7b |
||
Fredag | 08:30 - | Introduktion til parseren
Se følgende videoer inden mandag
|
Bottom-up parsing:
|
- 10:00 | |||
12:30 - 14:00 | Opgaveløsning uden lærerstøtte |
|
Afleveringsopgaver (obligatoriske) denne uge: Ruteplansopgave - leksikalsk analyse / scanner: delopgave 5, 6 og 7a |
Oplæg til bredere obligatorisk opgave i sproglære og grafer
- opgaven vil blive opdelt i delopgaver over de næste uger, så der
til sidst gerne skulle kunne ses en samlet løsning. |
Uge 22 | |||
Dag | Tidspunkt | Emne | Litteratur / Opgaver |
Mandag | 08:30 - | Sprogteori / parser - se videoer før undervisningen |
Parser:
Evt. supplement hvis nogen føler særlig trang. Løsning
med tabel-styret parser tættere på beskrivelser i KBH note) |
Opgaveløsning med lærerstøtte - Ruteplansopgave - delopgave 8a |
|||
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte - Ruteplansopgave - delopgave 8a |
||
Onsdag | 08:30 - | Sprogteori / parser |
Lekikalsk analyse og parsing med brug af værktøj (LALR(1) -
Flex+Bisson) Video om brug af Lex/Flex værktæj (C# udgave tilpasset brug med Visual Studio) |
- 10:00 | Sprogteori / parser |
Medlemsliste med brug af "Flex" - "Bisson" lignende værktøj til
C# for Leksikalsk analyse og parsing - Se hvor nemt det
bliver når man "bare" kan beskrive grammatikken med regulære
udtryk til leksikalske analysator og BNF til parseren
|
|
Opgaveløsning med lærerstøtte - Ruteplansopgave - delopgave 8a og 8b |
|||
12:30 - 14:00 |
Opgaveløsning uden lærerstøtte - Ruteplansopgave - delopgave 8a og 8b |
||
Fredag | dagen efter Kr. himmelfart - ingen undervisning | ||
Afleveringsopgaver (obligatoriske) denne uge: Ruteplansopgave - parser - delopgave 8a |
Oplæg til bredere obligatorisk opgave i sproglære og grafer
- opgaven vil blive opdelt i delopgaver over de næste uger, så der
til sidst gerne skulle kunne ses en samlet løsning. delopgave 8b) Der skal laves en Parser analysator med brug af
Lex/Flex værktøjet - du tilretter medlemsliste syntaksen til
ruteplanssyntaksen delopgave 9) Delene du tidligere har programmeret skal nu sammenkobles, så der kommer en samlet løsning på ruteplansopgaven - scanner+parser til ruteplan-model og fra ruteplan-model til graf med løsning af graf-opgaver. |