Software architecture and distributed programs (SODP)

This page is subject to change. Keep an eye on the plan - and don't print it (a printed copy will soon be outdated).

Week Dates Topics Readings Exercises
35

25.08 - 29.08

  • Introduction to the course
  • ReSharper
  • Unit testing
  • Exceptions
  1. Make sure you have a new version of Microsoft Visual Studio (version 2012 or 2013).
  2. Install ReSharper (a plug-in for Visual Studio).
    An installation key can be found in Fronter
  3. Unit Test Generator (a plug-in for Visual Studio)
  4. Unit testing, getting started (again) | Solution
36 01.09 - 05.09
  • Exceptions (continued)
  • Contract based programming
  • Code Contracts
  • Concurrency: Threads (getting started)
  1. Parameter checking, test first | Solution
  2. Boundary values testing | Solution
  3. Library, with homemade exception | Solution
  4. Code contracts: Book | Solution
  5. Extra: Other unit testing frameworks
  6. Extra: LayeredLibrary needs more features
37

08.09 - 12.09

  • Concurrency: Threads
  • Concurrency:
  • Parallel architectures: Task + data parallelism (starting)
  1. First thread (again?) | Solution
  2. Adding threads to an existing program | Solution
  3. Producer-Consumer | solution
38

15.09 - 19.09

  • Parallel architectures: Task + data parallelism (continue)
  • Logging
  • Trial exam
  • In the exercise Adding threads ... (Find Smallest) make sure you did the "Use Task with Result" part
  • In the exercise Adding threads ... use Parallel.For(...) to start the tasks.
  • In the exercise Adding threads ... use Parallel.ForEach(...) to start the tasks.
  • In the Producer-Consumer exercise start Producer, Consumer etc. using Parallel.Invoke(...)
  • Partitioner: Find smallest
39 22.09 - 19.09
  • Program documentation
  • Profiling
  • Thursday: No programming lessons
  • Add logging to one (or more) of your previous exercises like Producer-Consumer.
  • Download and install Doxygen
  • Document some of your previons projects and try to extract documentation using Doxygen
40

29.09 - 03.10

  • HTTP server
  • Program your own HTTP server.
  • A very simple version (empty + test class) can be forked from GitHub https://github.com/RO133050dc3i/httpserver
  • Your final group solution to the HTTP server must pushed to GitHub no later than Friday 3 October at 15:00.
41

06.10 - 10.10

  • Data structures for concurrency
  • Mid-term evaluation
  • Tuesday + Friday: No programming lessons
42 13.10 - 17.10
  • Autumn holidays all week
   
43 20.10 - 24.10
  • Architecture project
44 27.10 - 31.10
  • Architecture project, continued
 
45

03.11 - 07.11

  • Generics
  • Interfaces
  • Responsiveness: async + await
  • Types in programming languages
  • Friday: Presentation of password cracking results
46

10.11 - 14.11

  • Collections: Algorithms and data structures
47

17.11 - 21.11

 

  • Refererence types and value types: struct + enum
  • Delegates
  • Lambda expressions
  • Events
  • Trial exam
48

24.11 - 28.11

  • LINQ + Anonymous types
  • Extension methods
  • PLINQ
  • Trial exam

49

01.12 - 06.12

  • Design patterns
  • Trial exam
50

08.12 - 12.12

  • Refactoring
  • More refactoring examples

No new exercises.

You have already done some refactorings in previous exercises

  • Adding Threads to an existing program
  • Producer-Consumer
  • MultiValueDictionary: Strategy + Template method

 

51

15.12 - 19.12

  • SOLID designDependency injection
  • The Repository pattern
  • Going through selected exercises
  • Trial exam
         
52 - 1 22.12 - 02.01
  • Christmas + New year
  • Read the curriculums: Computer network + programming
 
january

Tuesday 13.01

  • Questions
  • Ask Anders
   
january 14.01 - 16.01
  • Exams
 
january 21.01 - 22.01
  • Re-exams
   
5 26.01  
  • Monday: Next semester starts (I guess)