DM1302DK - 3. semesterUgeplan for Softwarearkitektur og Distribuerede Programmer
|
Sidst ændret: 2014.12.02
Uge 46 | |||
Dag | Tidspunkt | Emne | Materialer |
Tirsdag | 08:30 - | Vi tager fat på nyt tema med
datastrukturer og algoritmer, hvor hoved temaet vil være træer og grafer. Da i allerede har
set på en del datastrukturer, herunder binære træer på 1.
studieår (uge 9-10) vil denne uge være tale om delvis
gentagelse af stof fra 1. år. Du forventes at have forberedt dig godt jvf. vejledningen i dybden ---------->
Øvrige vi lige kort vil samle op på (flere af dem skal vi
flittigt bruge i forbindelse med algoritmer på træer og grafer): Binære træer |
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 Graf-kurver for funktioner (kompleksitet): (NY!! - manglede på ugeplanen) - BigO_Complexity.pdf Læses - Induktionsbeviser - bevis for korrekt virkemåde at algoritmer
Læses: intens:
Noter til binære træer koncentrat om begreber |
10:30 - 12:00 |
Grupperne, der har
arbejdet projekter for Leisner, præsenterer løsningerne for Sune
Leisner, Bjørk og hinanden FynBus grupperne løser
opgaver uden støtte fra underviser i loungen? |
||
12:30- 14:00 | Opgaveløsning uden
støtte fra underviser Opgaver med binære træer ( løs opgave BT01,BT02,BT03 og BT04 - laves inden onsdag) Opgaverne løses manuelt "på papir" Diskuter løsningerne og prøv herefter at kontrollere fremgangsmåde og resultatet med programmet Visualisering af Binær træ |
|
|
Onsdag | 08:30 - |
Opsamling på datastrukturer og algoritmer på Array, Lister, Linkede Lister, Hashtabeller, Stack og Queue Opsamling på opgaverne BT01,BT02,BT03 og BT04 - diskussion af hvad der kan udledes Binære søgetræer fortsat. |
Video fra tidligere forløb om datastruktur, indsættelse og
traversering af binær træ Suplement: |
12:30- 14:00 | Opgaveløsning uden
støtte fra underviser Opgaver med binære træer ( løs opgave BT05) |
||
Torsdag | 08:30 - | Binære søgetræer fortsat -
opsamling og det vi evt. ikke nåede onsdag En del tid vil blive brugt på opgaveløsning, hvor man kan få hjælp |
se onsdag |
12:30- 14:00 | Opgaveløsning uden
støtte fra underviser |
Afleveringsopgaver denne uge: opgave BT05 - (BT01-04 skal laves til onsdag, men ikke afleveres) |
Uge 47 | |||
Dag | Tidspunkt | Emne | Materialer |
Tirsdag | 08:30 - | 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 |
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 (manuelt med hånden på papir), der svarer til ruteplanen. Når du får lavet et grafprogram, kan du bruge ruteplan-grafen som testdata. |
|||
10:20 - | Opsamling på køreplansopgave - delopgave 1) |
Gennemgang
af datastrukturen graf ift. implementering se
evt. video igen i forbindelse med opgaveløsningen. |
|
12:30- 14:00 |
Opgaveløsning uden lærerstøtte |
||
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 Se evt. Grafalgoritmer Define og Bredde først - C# med matrix |
10:30-12:30 | Grupperne, der har arbejdet
projekter for FynBus, præsenterer løsningerne for Michael
Dydensborg, Bjørk og hinanden. Dette foregår hos FynBus (Tolderlundsvej 9, 5100 Odense C)
Leisner grupperne løser opgaver uden støtte fra underviser |
||
12:30- 14:00 |
Opgaveløsning uden lærerstøtte
|
Se evt.
Grafalgoritmer Define og Bredde først - C# med matrix
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.
|
|
Torsdag | 08:30 - | Opsamling og opgaveløsning med støtte | |
Opgaveløsning uden lærerstøtte |
|||
12:30- 14:00 | Opgaveløsning uden
støtte fra underviser (se oven for) |
Afleveringsopgaver denne uge:
Ruteplansopgave - frem til delopgave 2b - Bredde først traversering NB: Bemærk krav om deltagelsespligter i overordnet semesterplan - 2 afleveringer inden for emnet grafer og sprogteori - for at kunne gå til eksamen |
Oplæg til bredere 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 48 | |||
Dag | Tidspunkt | Emne | Materialer |
Tirsdag | 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 se video før undervisningen Prims algoritme: applet for simulering af algoritme
Kruskals algoritme på graf - minimum spanning tree
se video før undervisningen |
Opgaveløsning med lærerstøtte - se sidst i ugens plan |
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 - se sidst i ugens plan |
|
|
Onsdag | 08:30 - | Graf algoritmer, opsamling til nu 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 |
Opgaveløsning med lærerstøtte - se sidst i ugens plan |
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 - se sidst i ugens plan |
||
Torsdag | 08:30 - | Graf algoritmer, opsamling og
afrunding Fra domain-model med data til graf |
- mulig model (EBNF_Ruteplan_Datamodel_for_Regionskoereplan.ppt) |
Opgaveløsning med lærerstøtte - se sidst i ugens plan |
|||
12:30- 14:00 | Opgaveløsning uden lærerstøtte - se sidst i ugens plan |
Afleveringsopgaver
denne uge:
Ruteplansopgave - frem til delopgave 2c -
Minimum spanning tree NB: Bemærk krav om deltagelsespligter i overordnet semesterplan - 2 afleveringer inden for emnet grafer og sprogteori - for at kunne gå til eksamen |
Oplæg til bredere 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) - 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. |
Uge 49 | |||
Dag | Tidspunkt | Emne | Materialer |
Tirsdag | 08:30 - | Introduktion til sprogteori - Grammatikker og sprog - Compiler - regulære udtryk - BNF + EBNF
|
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 |
En lille smule om Assembler (symbolsk
maskinsprog), maskinsprog og afvikling på cpu Vi kommer her også ind på faserne i en oversættelse (illustreret ved manuelle løsninger) |
Compilering_af_symbolsk_maskinsprog med brug af
Symboltabel |
||
Opgaver med EBNF (løs opgave 1-5) Ruteplansopgave - delopgave 3, 5 og 6 |
|||
12:30- 14:00 |
Opgaver med EBNF (løs opgave 1-5) Ruteplansopgave - delopgave 3, 5 og 6 |
|
|
Onsdag | 08:30 - | Sproglære fortsat Opsamling på BNF, EBNF og regulære
udtryk og EBNF opgaver
|
Note om EBNF grammatik og syntakstyret indlæsning (se tidligere udleverede kopier)
Scanner / Leksikalsk analyse: |
Opgaveløsning med
lærerstøtte - ruteplanopgaver - se sidst i ugens plan |
|||
12:30- 14:00 | Opgaveløsning uden
lærerstøtte - ruteplanopgaver - se sidst i ugens plan |
||
Torsdag | 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: |
12:30- 14:00 | Opgaveløsning uden
lærerstøtte - ruteplanopgaver - se sidst i ugens plan |
Afleveringsopgaver
denne uge:
ingen, bemærk at der allerede er næste
tirsdag (Ruteplansopgave - leksikalsk
analyse / scanner: delopgave 5, 6 og
7a) NB: Bemærk krav om deltagelsespligter i overordnet semesterplan - 2 afleveringer inden for emnet grafer og sprogteori - for at kunne gå til eksamen |
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 delopgave 7a) Der skal laves en Scanner / Leksikalsk analysator, der
kan lave Tokens ud fra en tekstfil og aflevere disse i en passende
datastruktur Parseren senere kan bruge som input. Du skal teste med en
udskrift af de tokens du finder. Du skal lave passende fejludskrift,
hvis der er fejl i den leksikalske analyse (input ikke passer til
tokens), hvis du prøve om du kan scanne videre og "komme på sporet
igen". |
Supplerende / alternativ litteratur for de der måtte ønske at anskaffet sig dette - primært kap. 1 og 4. #comp: Programming Language Processors In Java - compilers and interpreters, David A Watt & Derick F Brown, Printice Hall, ISBN: 0-130-25786-9 |
Uge 50 | |||
Dag | Tidspunkt | Emne | Materialer |
Tirsdag | 08:30 - | Scanner / Leksikalsk analyse
fortsat
|
Om state pattern:
http://en.wikipedia.org/wiki/State_pattern
Scanner / Leksikalsk analyse: |
Opgaveløsning med
lærerstøtte - ruteplanopgaver - se sidst i ugens plan |
|||
12:30- 14:00 | Opgaveløsning unden
lærerstøtte - ruteplanopgaver - se sidst i ugens plan |
||
13:30-15:00 |
FynBus fremlæggelser -
runde 2 - tirsdag den 9. december kl. 13:30-15:00 hos FynBus |
||
Onsdag | 08:30 - | Introduktion til parseren
Se følgende videoer som forberedelse før undervisningen |
Bottom-up parsing:
|
Opgaveløsning med
lærerstøtte - ruteplanopgaver - se sidst i ugens plan |
|||
12:30- 14:00 | Opgaveløsning uden lærerstøtte |
||
Torsdag | 08:30 - | Sprogteori / parser - opsamling på onsdagen |
Evt. supplement hvis nogen føler særlig trang. Løsning
med tabel-styret parser tættere på beskrivelser i KBH note) |
12:30- 14:00 | Opgaveløsning uden
støtte fra underviser |
Afleveringsopgaver
tirsdag denne uge:
Ruteplansopgave - leksikalsk analyse / scanner: delopgave 5, 6 og
7a NB: Bemærk krav om deltagelsespligter i overordnet semesterplan - 2 afleveringer inden for emnet grafer og sprogteori - for at kunne gå til eksamen |
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 7a) Der skal laves en Scanner / Leksikalsk analysator, der
kan lave Tokens ud fra en tekstfil og aflevere disse i en passende
datastruktur Parseren senere kan bruge som input. Du skal teste med en
udskrift af de tokens du finder. Du skal lave passende fejludskrift,
hvis der er fejl i den leksikalske analyse (input ikke passer til
tokens), hvis du prøve om du kan scanne videre og "komme på sporet
igen".
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. |
Uge 51 | |||
Dag | Tidspunkt | Emne | Materialer |
Tirsdag | 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) |
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 unden lærerstøtte - Ruteplansopgave - delopgave 8a og 8b |
||
Onsdag | 08:30 - | Sprogteori - opsamling - løsning af opgaven | |
Opsamling / repetition af
semesterets pensum og opgaver |
|||
12:30- 14:00 | Opgaveløsning uden
støtte fra underviser |
||
Torsdag | 08:30 - | Opsamling / repetition af
semesterets pensum og opgaver |
|
12:30- 14:00 | Opgaveløsning uden
støtte fra underviser |
Afleveringsopgaver
tirsdag denne uge:
Ruteplansopgave - parser - delopgave
8a NB: Bemærk krav om deltagelsespligter i overordnet semesterplan - 2 afleveringer inden for emnet grafer og sprogteori - for at kunne gå til eksamen |
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. |