DM131 - 2. semester

Plan for Softwarekonstruktion

Tema: Abstraktion  - Gå til uge: 34-35(test), 36-38(databaser), 39, 40, 41, 43, 4445,

Sidst ændret: 2013.11.07

Uge 39
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 Arv og Polymorfi

Programmerings opgave findes sidst i slides (Slides: ArvOgPolymorfi.ppt)

 

 

Slides: ArvOgPolymorfi.ppt

Generelt eksempel  med  arv og polymorfi (ArvTester.zip)
Et et mere konkret eksempel (KundeArv.zip)
Endnu et et eksempel med figurer (Vs_Eng_Inheritance.zip)

C# Pocket ref. side 71-89
Supplerende læsning C# for Studens kap 11 og 24 (se Fronter SK->Materiale for detaljer)

Net tutorials:
http://www.csharp-station.com/Tutorials/Lesson08.aspx
http://www.csharp-station.com/Tutorials/Lesson09.aspx

A Comparative Overview of C# - interface
The C# Station Tutorial - interface 

 
     
- 14:00    
Torsdag 08:30 Jeg planlægger små prøveopgaver - som der afleveres - disse vil blive lagt ud onsdag.

Der vil ikke være understøttelse fra underviser denne dag, da jeg er til damatatikerlærer årsmøde torsdag-fredag.

Prøven findes her: SmaaOpgave01.zip
Aflevering skal ske i Fronter afleveringsmappe.

 
 
     
- 14:00    
 
 
 

 

 

Uge 40
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 Vi skal samle op på prøven fra torsdag uge 39

 

 

Vi skal desuden samle op på Arv og Polymorfi

 

Vi opdeler nok klassen en del af dagen, for at se på noget grundlæggende - jeg vil dog også stille med en udfordring for de der har behov for noget nyt (jeg har her noget i tankerne om arv hvor det er funktionalitet der er det centrale i tankerne - generalisering af udskrift - skablon). Dette præciseres mandag.

Opgaveteksten som Visual Studio Solution: SmaaOpgaver01SolutionUdenSvar.zip
Vedr. lidt grundlæggende se også her:
- Eng_Pp_Variables.zip
- Eng_Pp_Methods.zip
- Eng_Pp_SelectionAndRepetition.zip
 



For de der ikke har problemer med stoffet til nu er her en udfordring:
Skabelon og algoritme for udskrift af samling som tekst: Udskab01.zip
Her kan opgaven være at lave en generel udskriftklasse for skabelonen, hvor man kan nedarve fra og implementere det specifikke. Du kan her skele til løsningen i java
- skabelon kodet i java: Udskab02.zip

En anden mulig udfordring er dels at lave en løsning for modellen/kernen af SleepWare eller kaste sig over denne case:  Edelharts_Hoejfjeldshotel.zip

 

     
- 14:00    
Torsdag 08:30 Vi vil herudover se på algoritmer for søgning i array / List (datastruktur med direkte access)
- linær søgning
- binær søgning

Vi vil i forbindelse med binær søgning også berører begrebet recursion, der til visse algoritmer kan være et stærk redskab til såvel definition/beskrivelse som metode til programmering.


Du kan her byde ind på komme med oplæg på C# kode eksempel

http://en.wikipedia.org/wiki/Binary_search_algorithm  

SekventialSeach_bjbu_V02.mht (NY indsat efter ugen)
BinarySeach_bjbu_V02.mht  (NY indsat efter ugen)


http://en.wikipedia.org/wiki/Recursion

 
  Opgaver med søgealgoritmer SeachOpgaveSolution.zip

Ekstra opgaver med udgangspunkt i prøven fra sidste uge:
- udvid Cirkelklassen med et IComparable<Cirkel> interface og implementer metoden CompareTo så sammenligner på Radius.
- udvid med en metode der kan returnere en Cirkel med angivet Radius som parameter (null hvis den ikke findes) - du kan antage der ikke er dubletter og ellers er det ligegyldig hvilken du tager hvis der er flere.
Du kan her starte med at bruge Sort på listen, så den er sorteret (via CompareTo) og herefter laver binær søgning.

 

Afleveringsmappe findes i fronter
- 14:00    
 
 
 

 

 

Uge 41
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 Opsamling på opgaver

Recursion tages op igen, da kun perifert berørt sidste torsdag


Sorteringsalgoritmer
Vi skal se på nogle algoritmerne ud fra dels hvad er selve idéen og også hvad det indebærer for effektivitet m.m.
Vi vil måske også prøve at udlede skitser enkelte, der kan danne baggrund for at kode dem.
- Bubblesort (den har vi tidligere også haft i brug - fx på klodsopgaven)
- Insertion sort
- Selection sort
- Merge sort
- Quick sort
SekventialSeach_bjbu_V02.mht (NY Note)
BinarySeach_bjbu_V02.mht (NY Note) 
http://en.wikipedia.org/wiki/Recursion
 

Danske dækker ikke alle:
http://da.wikipedia.org/wiki/Sorteringsalgoritme
Engelske med flere:
http://en.wikipedia.org/wiki/Sorting_algorithm

Eksempel på sortering med indbyggede Sort metoder
- Cs001_Sortering.zip (Vare liste - set tidligere)

Graf-kurver for funktioner (kompleksitet)
- big-o-complexity.png
-
Complexity.gif

Induktions_beviser.htm kan bruges som bevis på virkemåde

Der vil her være mulighed for at byde ind med oplæg på en af algoritmerne, herunder med kode der viser brugen af algoritmen

  Ekstra note-materiale på dansk (relativ kortfattet)
- Sortering_AlmAlgoritmer_KortNote_Af_UkendtPetra.doc
- Sortering_AlmAlgoritmer_Med_Kode_af_NOKN.pdf
   Med kode - kopier ikke bare for løsning af opgave
     
- 14:00 Opgaver med sortering SortOpgaveSolution.zip
 - indeholder tekstfil med kort opgaveoversigten
 - opgaverne er lavet som C# metoder, der skal kodes færdig,
    med unit-test som verificerer resultaterne
 
 
Torsdag 08:30 Opsamling på opgaver m.m.

Lige som sidste gang, skal der gerne være en/flere som melder sig til at vise løsninger for klassen.

Individuelle studiesamtaler

Opgaveløsning

Løsninger fra undervisningen i fronter - SK->Materiale mappen
 
     
- 14:00    
 
 
 

 

 

Uge 43
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 Opsamling på opgaver

Opstart på datastrukturer (flere detaljer følger)

Dem vi skal se på er:
- Array og Lister baseret på Array (C# List)
- Linkede lister
- Hashtabeller
- Binære træer
- Stack
- Queue

Vi vil starte op med et overordnet overblik og herefter se på nogle af dem, herunder implementering af nogle simple - denne dag fokuseres på List / Array

Opgave med simpel liste (baseret på array) - denne anvender / løser vi i undervisningen
- SimpleListOpgaveSolution.zip
 

Oversigt over datastrukturer:
http://da.wikipedia.org/wiki/Kategori:Datastrukturer (dansk - ikke så udbygget)
http://en.wikipedia.org/wiki/List_of_data_structures (engelsk - flere detaljer)

http://en.wikipedia.org/wiki/Array_data_structure

.NET (C#) datastrukturerne:
http://msdn.microsoft.com/en-us/library/System.Collections.aspx
http://msdn.microsoft.com/en-us/library/System.Collections.Generic(v=vs.110).aspx

Ulla's noter om datastrukturer kan bruges som supplement, hun har også eksempler på noget implementering.
- findes i fronter Navigationssti: DM131 1. skoleår > SK > Materiale > Datastrukturer

 

C# 5.0 Pocket Reference
- om Array side 33-36

 

- 14:00 Hjemmeopgave til torsdag - opgave med 2-dimensional array
-
Opgave2DimArray.pdf
 

C# 5.0 Pocket Reference om multidimensional Array side 34 

Torsdag 08:30 Datastrukturer fortsat
Vi skal denne dag gøre vores Liste lidt mere generel og herunder se på at gøre de muligt at anvende foreach på listen.

Vi vil herefter fortsætte med at se på Linkede lister og Hashtabeller.

Opgave med linkede lister -  - denne anvender / løser vi i undervisningen
- LinkedListOpgaveSolution.zip

 

Hvis vi kan nå det vil vi evt. også se på en Stack og Queue

Træer bliver først næste uge, da de er lidt mere komplicerede.

 

C# 5.0 Pocket Reference
- om Array side 33-36
- om Enumeration & Iterator side 126-131
- om Generic side 93-98

Generiske datastrukturer (template baserede) - her en dårlig stak 173_StackTemplate 

IComparable og IComparer interfaces:- Eksempel med brug af IComperable og Collections.Comparer til sortering af varer i list på forskellige kriterier (varenr, betegnelse og pris)

Oversigt over datastrukturer:
http://da.wikipedia.org/wiki/Kategori:Datastrukturer (dansk - ikke så udbygget)
http://en.wikipedia.org/wiki/List_of_data_structures (engelsk - flere detaljer)

http://en.wikipedia.org/wiki/Array_data_structure

.NET (C#) datastrukturerne:
http://msdn.microsoft.com/en-us/library/System.Collections.aspx
http://msdn.microsoft.com/en-us/library/System.Collections.Generic(v=vs.110).aspx
 

- 14:00 Hjemmeopgave til mandag - opgave med Dictionary (Hashtabel....)
-
DictionaryOpgaveSolution.zip
Prøv evt. også at se på en Sorted List - kan man i personkartoteket skifte Dictionary ud
med en Sorted List og hvilke fordele / ulemper vil det give
Om Dictionary klassen
http://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx
Om Sorted List klassen
http://msdn.microsoft.com/en-us/library/ms132319(v=vs.110).aspx

 

 
 
 

 

 

Uge 44
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 Opsamling på opgaver

Datastrukturer fortsat
- Stack, Queue (skubbet fra sidste uge)

 

 


- Binære (søge) træer (opstart - begreber)

 


 

Fra sidste uge:
.NET (C#) datastrukturerne:
http://msdn.microsoft.com/en-us/library/System.Collections.aspx
http://msdn.microsoft.com/en-us/library/System.Collections.Generic(v=vs.110).aspx

Generiske datastrukturer (template baserede) - her en dårlig stak 173_StackTemplate 

IComparable og IComparer interfaces:- Eksempel med brug af IComperable og Collections.Comparer til sortering af varer i list på forskellige kriterier (varenr, betegnelse og pris)

NYT denne uge
Vigtige begreber i forbindelse med binære træer

Om binær søgetræ
http://da.wikipedia.org/wiki/Bin%C3%A6rt_s%C3%B8getr%C3%A6
http://en.wikipedia.org/wiki/Binary_search_tree

- 14:00 Opgave i begreber for binære træer
BinaryTree_OpgaverBegreber-1-4.pdf

Programmeringsopgave med Queue, Stack (her bruges datastrukturerne fra Ms Generic):

  • Programmer et lille testprogram, der kan oprette en Queue, indsætte 10 tal og herefter udskrive elementerne samtidig med køen tømmes
  • Programmer et tilsvarende eksempel med brug af en Stack
  • Hvis du skulle bruge din linked list løsning, hvilke metoder skulle så bruges for at få samme løsning (rækkefølge) som henholdsvis brugen af Queue og Stack
     

Programmeringsopgave med Binær søgetræ:

  • Lav en klasse med navnet BinIntSeachTree
  • Oprette en private indre klasse i ovenstående med navnet Node.
    Node skal kunne indholde data for en node i et binær træ, dvs selve de data der skal opbevares i træet (her en int) samt referencer til henholdsvis en venste node og en højre node
  • Definer de data der skal være i BinIntSeachTree for at klassen kan indeholde et træ
  • Lav en metode Insert, der skal have et tal som skal indsættes som parameter og som indtil videre blot giver en NotImplementedException.
  • Programmer nu et lille testprogram (Console) der kan bruges til at afprøve Insert metoden, som vi så næste gang ser på. Du skal nok have flere udgaver for at teste ordentlig.

 

 
Torsdag 08:30 Opsamling på opgaver
Datastrukturer fortsat

Programmeringsopgave med Binær søgetræ - fortsat - løses i undervisningen:

1)  Programmer InsertMetoden (den kan løses med loop uden recursion)

2)  Programmer en metode med navnet UdskrivRecursivPreorder (ingen parameter),
     der udskriver træet på console'en inde fra træet i preorder ved brug af recursion.
      - der skal laves en privat hjælpemetode der kan udskrive for at løse opgaven - en første starter kun.

3)  Programmer en metode med navnet UdskrivRecursivInorder (ingen parameter),
     der udskriver træet på console'en inde fra træet i inorder ved brug af recursion.

4)  Programmer en metode med navnet UdskrivUdenRecursionInorder - ingen parameter. Denne gang skal løsningen være uden recursion.
vi ændrede det til Levelorder med Queue, Preorder med Stack og
med besvær også en InOrder - den var drilsk med Stack

5)  Programmer en metode med navnet Find, der tager en søgeværdi som input.
     Metoden skal returnere true hvis der findes et element med værdien i træet og ellers false.
     Løsningen kan laves uden recursion.

6)  Programmer en metode med navnet FindRecursiv, der tager en søgeværdi som input.
     Metoden skal returnere true hvis der findes et element med værdien i træet og ellers false.
     Løsningen laves med brug af recursion.
     
Programmeringsopgave med Binær søgetræ - Hjemmeopgave:
a)  Programmer en metode med navnet UdskrivRecursivPostorder (ingen parameter),
     der udskriver træet på console'en inde fra træet i postorder ved brug af recursion.
b)  Programmer en metode med navnet UdskrivUdenRecursionPreorder (ingen parameter).
     der udskriver træet på console'en inde fra træet i preorder.
    Denne gang skal løsningen være uden recursion - løses med brug af en Stack

Programmeringsopgave med Binær søgetræ - ekstra udfordring for dem der kan:
c)  Programmer en metode med navnet Remove (med et tal der skal slettes som parameter).
     Metoden skal fjerne et element med den angive værdi (hvis det findes).
     Tips du kan erstatte med et "passende" element i bunden (et blad),
     hvis det der skal slettes har 2 grene.
     Start med at tegne senarierne.
 

 
- 14:00    
 
 
 

 

 

Uge 45
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag 08:30 Opsamling på opgaver og afrunding af datastrukturer  
- 14:00    
Torsdag 08:30 Tekstfiler - et emne vi lige bør ofre nogle få minutter, da man fx kan have brug for at udveksle data med et et andet system - det kunne ske med tekstfiler.

Sikkerhed
- login på Microsoft Internet Service Server (ISS)
TekstfilerEksempler.zip


Pp_VsASP_Sikkerhed_Nokn.ppt
How To: Use Forms Authentication with SQL Server in ASP.NET 2.0
- http://msdn.microsoft.com/en-us/library/ff649314.aspx

- 14:00   Videoer om Sikkerhed og mere om ASP.NET findes her