CIS501 Lectures: Software Architecture

Week 1

Reference material: Using C# with Visual Studio and Nclass
Lecture 1: Introduction to software architecture; using Visual Studio
Exercise | VS folder | Exercise postmortem
Lecture 2: Classes model reality; unit testing
Exercise | VS folder
Assignment 1: Implement a card game.

Week 2

Lecture 3: Storage and object diagrams; using a debugger
Exercise | VS folder | sample solution | object diagram for sample solution
Lecture 4: Class diagrams
Exercise | VS folder
Assignment 2: Rebuild card game to match class-diagram design

Week 3

Lecture 5: Interfaces and Delegates
Tuesday Exercise
Thursday Exercise | Thursday VS folder

Week 4

Lecture 6: Coupling and the MVC software architecture
Tuesday Exercise | Tuesday VS folder
Thursday Exercise in folder
Assignment 3: Rebuild card game in MVC architecture

Week 5 (code-review meetings)

Week 6

Lecture 7: Use cases and realizations via communication and sequence diagrams
Lecture 8: State diagrams and controllers
Exercise | VS folder
Assignment 4: design distributed banking system with UML diagrams

Week 7

Lecture 9: Multi-threaded execution and locks
Exercise | VS folder
Design-patterns prelude: Review of interfaces and delegates

Week 8 (exam) | Week 9 (spring break) | Week 10 (design-review meetings)

Week 11

Design Patterns I: Factories and Iterators
Exercise | VS folder
Design Patterns II: Virtual Proxies
Exercise | VS folder
Assignment 5: implement banking system

Week 12

Design Patterns IV: Composite pattern and Visitor pattern
Exercise | VS folder | Sample solution
Final project: Assignments 6 and 7: design and implement cloud-storage-based file-system app

Week 13

Design Patterns II again: Remote Proxies
Exercise | Remote Proxy VS folder | Use-case diagram of what you must do
Design Patterns III: Various Wrappers

Week 14 (no class meetings - work on project)

Read me: Wrapup on design patterns and introduction to version control
Read me too: Software architecture concepts

Week 15 (project-review meetings) | Week 16 (dead week) | Week 17 (finals week - upload project implementation)


David Schmidt   das at

Creative Commons License This work is licensed under a Creative Commons License.