DM1402DK - 3. semester

Ugeplan for Programmering
 - bemærk at der ikke i denne plan indgår generel opgaveløsning/projekter onsdag & fredag

Tema: Intro og socket programmering  - Gå til uge: 34, 35, 36, 37, 38

Sidst ændret: 2015.09.08

 

Uge 34 - Afklaring og introduktion til 3. sem. programmering
Målsætning for denne uge:
  • at afklare niveauet af programmeringskompetence for den enkelte studerende og få repeteret basale elementer, så der opnås en vis parathed.
  • at du får et foreløbig overblik over hvad semesteret kommet til at indeholde i faget, samt hvordan det er planlagt at forløbe, herunder undervisningsformer og eksamensformen.
Dag Tidspunkt Emne Litteratur / Eksempler/opgaver
Torsdag 08:30 - Introduktion til 3. semester programmering
- om materiale / litteratur / fotokopier mm
- forventningsafstemning (herunder 10 ects = 275 arbejdstimer for gennemsnitsstuderende)
- praktiske ting om visual studio versioner mm
- tilstedeværelse og studiegrupper

Opsamling fra 1. år
- lille programmeringsopgave/prøve   -  følger i fronter - aflevering aktiveres når klar.
 
fronter struktur




 
  - om tråde - problemstilling med inkonsistens og behov for synkronisering Slides om tråde og synkronisering
Trådeksempel4 - trådmetode i egen klasse - flere tråde - join - viser også synk fejl
Trådeksempel5_Sync - synkronisering - primitiv uden resource-monitor - fællesdata
  - om tråd design og synkronisering samt "sikker" stop Den designmæssige gode løsning: 
Trådeksempel10_TrådOgResourceMonitor - med tråd klasse og resource-monitor - det gode design
   EVT: Producer-Consumer mønsteret (push - pull)
   * flere producer/consumer til samme ressource - med bounded buffer problem
   * Guarded suspention

Trådeksempel_Parkeringshus_wait_notify (korrekt behandling)
     
12:30 - 14:00 Opgaveløsning uden støtte fra underviser


 

Simpel basistræning af

- Basis_DatoOpgaver.htm (metoder, selektion, loops mm - en consol aftestning)

- Basis_SeachAlgo.htm (loop, lister, algortimer, afvikling af unittest)

Basis trådopgaver

- Basis_ThreadOpgaver_1_6.htm

Design med tråde og synkronisering

- Basis_ThreadOpgaverTermometer.htm (også simpel model)
  Indeholder også videolink til en løsning

- Trådopgaver (7-8) - mere kompleks producer/consumer - brug af guarded suspention

Du kan få hjælp ved at se på løsningen hvis du går helt i stå, men brug denne mulighed med omtanke og prøv selv at løse opgaven først og hvis du ser løsningen, så prøv bagefter på egen hånd forfra.
Løsning af trådopgave 7.1 P-HUS: Producer-Consumer & Guarded Suspention

- Opgave 10 med øl-sodavand soteringsanlæg  - som PDF - mere kompleks trådopgave med producer/consumer

Du kan evt. bruge elementer fra:
TrådEksempel9_ProducerConsumer_Buffer

Fredag 08:30 - Opgaveløsning med delvis støtte fra underviser - sammen med den anden danske 3. sem. klasse Opgaver se torsdag
 
     
12:30 - 14:00 Opgaveløsning uden støtte fra underviser

 
 
 
Supplerende materiale for dem, som måtte ønske mere læsestof om tråde
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

-Threading Objects and Features
-Thread Pooling
-Timer
-Monitor
-Interlocked
-ReaderWriterLock

Mere om tråde i C#:
- http://www.albahari.com/threading/


 

 

Uge 35

Målsætning for denne uge:

  • at du får en viden om simpel distribution ved brug af socket, herunder viden hvad der ligger bag client-server arkitektur og om hvad en protokol indebærer i relation hertil.
  • at du får programmeringserfaring med at lave simple distribuerede client-server løsninger med brug af socket og simpel selvdefineret protokol.

 

 
Dag Tidspunkt Emne Litteratur / Opgaver
Torsdag 08:30 - Netværksprogrammering med Socket

Eksempel på socket-klient og socket-server
- det essentielle
- designforbedring på server med udskillelse af håndtering af klient (Clienthandler klasse)

Aftestning af server kan starte med brug af Telnet der også kan køres fra kommandoprompt
- vælg kør og cmd
- herefter startes: TELNET ip port
- hvor ip og port angives svarende til den opsatte servers ip adresse og port
 

.Net app(**) kap 4.4 (Socket)
- se desuden senere i ugeplanen for yderligere læsestof

Slides om socket part 1 (nokn)

Eksempel på simpel socket server og klient
Eksempler på socket echo servere og klient

Programmer til test af socketforbindelser:
Telnet_win98 - gui telnet klient

PuTTY - telnet & ssh klient
Program til test af tekst kommunikation over socket 

  Opgaveløsning med støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 
 du forventes at arbejde med socket opgave 1-4
 
Opgaver med socket server og socket-klient
  Evt. opsamling og præsentation af de første opgaver
 
 
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
 - diskuter og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt 
 du forventes at arbejde med socket opgave 1-6

Fredag vil der være støtte noget af tiden - du forventes også her at bruge noget af tiden på socket-programmering.
Opgaver med socket server og socket-klient
 
(*) Core C# and .NET, Stephen C. Perry - se Fronter
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se Fronter
(***) C# To the point -.., Hanspeter Mössenböck -   - se Fronter
Supplerende materiale for dem, som måtte ønske mere læsestof om socket:
An Introduction to Socket Programming in .NET using C# - CodeProject
Socket Code Examples   (MSDN)
Using TCP Services  (Socket server og klient - MSDN)
How to C# Socket programming  (csharp.net-informations.com)
Network socket - Wikipedia, the free encyclopedia

 
Supplerende materiale for dem, som måtte ønske mere læsestof om tråde
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

-Threading Objects and Features
-Thread Pooling
-Timer
-Monitor
-Interlocked
-ReaderWriterLock


 

Uge 36

Målsætning for denne uge:

  • at du har viden om hvordan du kan lave en socket server der kan kommunikere med flere klienter med et hensigtsmæssigt design.
  • at du har viden om hvordan du kan broadcaste til flere klienter, samt forståelse for synkroniserings behov.
  • at du kan bruge observer mønster for lav kobling og herunder kender problemstilling omkring GUI og event fra tråde

Forberedelse: du bedes forud specielt have sat dig ind i materialet om delegater/event, observer og tråde, som i hvert fald delvis skulle være kendt stof fra 1. år

Vi vil bruge en del af tiden på at se på og diskutere design - i Socket-projekterne vil du finde slides/pdf beskrivelser som vil være udgangspunktet - du finder også færdigkodede løsninger svarende hertil.

 
Dag Tidspunkt Emne Litteratur / Opgaver
Torsdag 08:30 - Opsamling  fra socket server og klient
 og evt. gennemgang af opgave 3+4  fra sidste gang (en/flere studerende fremlægger)
 

Kodeeksempel på trådet server   - opgave 4 løsning
  Opsamling? om delegate/event og observer

- Generelt om delegate,

- Observer mønster med delegate / event

 

C# to the point (***) kap 11.1 om delegater
C#(*) kap 3.7 (Delegater)
Delegater eksempler 

ObserverPattern
ObserverPattern_CascadeEvent

Ekstra læsestof fra wikipedia (publish/subscribe):
http://en.wikipedia.org/wiki/Publish/subscribe

  Opsamling? om tråde og synkronisering
 


- Tråde og problematik med GUI

 

Core C# (*) kap 13.1 (Thread intro)
.Net app(**) kap 4.3.1-4.3.3
(Thread)

Slides om tråde og synkronisering

ObserverPattern_Tråde_og_Gui_Winform_og_WPF  (Ny erstatning)
Tråde-og-GUI  (Det centrale - tricket i ovenstående)
 
  Designovervejelser
- de første spæde forsøg på yderligere forbedringer af behandling af klient (på serversiden)
- adskillelse af kommunikation og forretningslogik
SocketEchoComandBased (eksempler med opdeling i kommunikation og behandling)
Indeholder tekstfil med indholdsbeskrivelse og PowerPoint
Medtages:
- SocketServerCmdBasedStatic
- SocketServerCmdConnected
- SocketServerCmdDisconnected_V01
  - Proxy mønsteret  (samme grænseflade på server og klient) Slides om Proxy mønster
Eksempel på brug af proxy-mønster til echoservice'en fra tidligere
Indgår også i næste eksempel
 
  - Design med windows og console klient

- Design med fortsættelse af kommunikation uden blokeret tråd på server (brug af session)
I klienteksemplerne er der ikke taget det sidste designskridt
- at lave en generisk klasse til socket kommunikation og brug at interface for proxy
- de er derfor blot baseret på hvad vi kan stadig kan kalde "Remote Facade" 
- man kan dog droppe facadeklasserne kodet i client projekterne og i stedet bruge klasserne fra "SocketEchoServiceLibrary".
 

SocketEchoComandBased (eksempler med opdeling i kommunikation og behandling)
Indeholder tekstfil med indholdsbeskrivelse og PowerPoint
Medtages
- SocketClientMedRemoteFasade_ConsolApplikation
- SocketClientMedRemoteFasade_WindowsApplication
- SocketServerCmdSessionOnOff
  Socket-chatserver design: Broadcasting
- push / observer
Eksempel på design-muligheder:
Chat server design i trin mod observer-mønster
 
     
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
 
 
 
(*) Core C# and .NET, Stephen C. Perry - se Fronter
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se Fronter
(***) C# To the point -.., Hanspeter Mössenböck -   - se Fronter
Supplerende materiale for dem, som måtte ønske mere læsestof om socket:
An Introduction to Socket Programming in .NET using C# - CodeProject
Socket Code Examples   (MSDN)
Using TCP Services  (Socket server og klient - MSDN)
How to C# Socket programming  (csharp.net-informations.com)
Network socket - Wikipedia, the free encyclopedia

 
Supplerende materiale for dem, som måtte ønske mere læsestof om tråde
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

-Threading Objects and Features
-Thread Pooling
-Timer
-Monitor
-Interlocked
-ReaderWriterLock

 

Uge 37

Målsætning for denne uge:

  • at du får tilstrækkelig viden og erfaring med tråde til at kunne løse problemstillinger i projekt 1.
  • at du får tilstrækkelig viden om tråde til at kunne lave en simpel klient der både kan håndtere både trafik fra GUI til server og fra server til GUI parallelt.

Forberedelse: du bedes forud have gjort dig helt klart på hvad du måtte mangle af viden omkring tråde i forhold til behov i projekt 1.
 

Dag Tidspunkt Emne Litteratur / Opgaver
Torsdag 08:30 - Trådmønstre / design skabeloner

- trådmetode

- fælles resource

- producer-consumer

- observer (event)
 

 

Slides om tråde og synkronisering  (vi ser på lock og producer-consumer)

Synkronisering/låsning - design med resource-monitor og trådmetode objekt 
Trådeksempel10_TrådOgResourceMonitor

Simpel producer-consumer eksempel
Trådeksempel_Parkeringshus_wait_notify (korrekt behandling)
ObserverPattern_Parkeringshus 

ObserverPattern_Tråde_og_Gui_Winform_og_WPF  (Ny erstatning)
Tråde-og-GUI  (Det centrale - tricket i ovenstående)

  Simpel klient der både kan sende og modtage parallelt (flertrådet)
- evt. kodning af simpel chat-klient
 
Program der kan bruges som test-server, så klient dialog kan testes
Program til test af tekst kommunikation over socket 
Vi vil nok tage afsæt i dele fra dette eksempel (dog uden proxy interface)
Eksempel på brug af proxy-mønster til echoservice'en fra tidligere
12:30 - 14:00 Opgaveløsning uden støtte fra underviser
 
 
 
(*) Core C# and .NET, Stephen C. Perry - se Fronter
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se Fronter
(***) C# To the point -.., Hanspeter Mössenböck -   - se Fronter
Supplerende materiale for dem, som måtte ønske mere læsestof om socket:
An Introduction to Socket Programming in .NET using C# - CodeProject
Socket Code Examples   (MSDN)
Using TCP Services  (Socket server og klient - MSDN)
How to C# Socket programming  (csharp.net-informations.com)
Network socket - Wikipedia, the free encyclopedia

 
Supplerende materiale for dem, som måtte ønske mere læsestof om tråde
Multithreaded Programming Using C# - CodeProject

MSDN
-Thread Class

-Threading Objects and Features
-Thread Pooling
-Timer
-Monitor
-Interlocked
-ReaderWriterLock

 

 

Uge 38
Dag Tidspunkt Emne Litteratur / Opgaver
Torsdag 08:30 -  - 12:00 Projektarbejde - socketprojekt (vejledning - bjbu) Se fronter
12:00 - Projektarbejde