"Design is where science and art break even."
- Robin Mathew
- Robin Mathew
Resources:
Course Scope:
This course is concerned with modeling software - especially large distributed systems - including architecture, design, and implementation. To do this we introduce:- UML diagrams: activity, dataflow, class, event-trace, structure charts, and state.
- Analysis based on goals, ownership, communication patterns, and application specific critical issues.
- Prototype code, using C# and the .Net Framework Class Libraries.
- Discover the needs for specific functionality - analysis of use.
- Understand how software parts must communicate in order to meet project requirements - analysis of structure.
- Explore dependency relationships and use of shared data - analysis of information.
- Predict and measure performance, e.g., latency and throughput as a function of load - analysis of operation.
What do I gain by taking this course?
- Ability to design and implement complex systems
- Proficiency with C# and the .Net Framework
- Experience with multi-package systems that use threading, Graphical User Interfaces, and Inter-process communication with message passing
- Preparation for more advanced courses in the CE Software Track
Prerequisites:
Students are expected to have a good working knowledge of the C Programming Language or Java.
No prior knowledge of C# is required. You will need to use the latest version of Visual Studio on Windows.
Visual Studio Community Edition can be downloaded at no cost. If you are a Mac or Linux user you will
need to use a virutal machine, like Parallels or Virtual Box, hosting Windows 10.
Required and Supporting Texts, Notes, and Projects:
-
C# 6.0 in a Nutshell, Albahari & Albahari, O'Reilly, 2016 (Text) - Required for this course
Covers C# and the .Net Framework very effectively. It covers all of the code specific things you will need for this course except for Windows Communication Foundation (WCF) and Windows Presentation Foundation (WPF). For those we will provide presentations, sample code, and web resources. - Class Notes, available on www.ecs.syr.edu/faculty/fawcett
-
Four projects are required:
- Project #1 requires creation of an Operational Concept Document (OCD). This will be discussed in the first lecture.
- Project #2 implements the concepts you developed in Project #1, using C# and the .Net Framework.
- Project #3 develops some prototype code for a distributed system we build in Project #4.
- Project #4 will lead you through the construction of software for a server and its clients, requiring multi-threaded programming, and building client user interfaces.
Grading:
Grades are based on one examination and the four projects, cited above. The Exam counts one third of your grade and the four projects, weighted equally, count for the remaining two thirds of your grade. You will find sample project descriptions linked here and an example exam with solutions linked here.Secondary Resources:
These are not required, but if you have access to the Andrew Troelson book, you will spend less time looking at web tutorials.-
Pro C# 6.0 and the .Net 4.6 Platform
, Andrew Troelsen, Apress, 2015 (PCS)
This supplementary text covers WCF and WPF as well as C# and the .Net Framework. -
CLR via C#, Fourth Edition,
Jeffrey Richter, Microsoft Press, 2012
Very technically competent discussion of the internal workings of the .Net Common Language Runtime (CLR). - Writing with Style, Third Edition, John Trimble, Prentice-Hall, 2010, ISBN 978-0205028801 This is the best book on writing I've ever used - highly recommended. This would be useful for Projects #1 and #4.
- High Scalability Website
- Tutorial links:
- Other useful links:
OnLine Software Modeling & Analysis Syllabus:
Syllabus for On-Line CSE681 - Software Modeling & Analysis | |||
---|---|---|---|
Lecture | Topic | Resources | Project |
Week #1a | Introduction: Discuss Syllabus, Assignments, Examination, class text, What is analysis? software architecture, Handouts | UML notes, Package notes, Text chap 1 |
Pr1 |
Week #1b | Operational Concept Document (OCD) | UML notes, OCD Notes, Package notes, Text chap 1 |
Pr1 |
Week #2a |
Software Architecture, Architectural Models, Design Principles, Packages, UML |
SW Arch Presentation,
ppt, UML notes, Package notes, Text chap 2 |
Pr1 |
Week #2b | Packages, code structure |
UML notes, Package notes, Text chap 2 |
Pr1 due |
Week #3a | C# Programming Language, .Net platform, Delegates, lambdas, LINQ |
Text chaps 3-4, 7-9 example code |
Pr2 |
Week #3b | Review of Delegates, lambdas, LINQ example code Review of Project2 Helper code |
Example code Text chaps 3-4, 7-9 |
Pr2 |
Week #4a | System Structure: Three-Tier, MVC and MVVM, ... Structures |
Software Structure,
pptx, Class notes, example code |
Pr2 |
Week #4b | Help with Project2 structure |
Project helper sample code, Software Structure Presentation, pptx |
Pr2 due |
Week #5a | Message-Passing Communication Systems, Windows Communication Foundation (WCF) |
WCF Presentation,
ppt, WCF example code |
Pr3 |
Week #5b | Review WCF example code |
WCF example code WCF Presentation, ppt |
Pr3 |
Week #6a | Designing Graphical User Interfaces (GUI)s, Windows Presentation Foundation (WPF) |
WPF Presentation,
pptx, WPF example code |
Pr3 |
Week #6b | Review WPF example code |
WPF example code WPF Presentation, pptx |
Pr3 |
Week #7a | windows Processes, Threads, Kernel Objects, .Net Thread and Synchronization |
Threads Presentation,
pptx, .Net thread example code, Text chap 14 |
Pr3 |
Week #7b | Review .Net Threads, Locks, and Lambdas |
.Net thread example code Threads Presentation, pptx, Text chap 14 |
Pr3 due |
Week #8a | Review for MidTerm Examination |
Instr Sol Prev Midterms, All previous notes and code demos |
Pr4 |
Week #8b | MidTerm Examination | You may use one page of notes, written on both sides, if you wish. You may not use any other resources, e.g., web, books, ... | Pr4 |
Week #9a | Asynchronous Systems and Message-Passing Communication |
Asynchronous notes,
ppt, Text Chap 22 |
Pr4 |
Week #9b | Help with Message-Passing Communication Channel |
Communication Channel demo code Text Chap 22 |
Pr4 |
Week #10a | Enterprise Computing, Pr#4 Topics |
Enterprise Computing notes, Project #4 Statement |
Pr4 |
Week #10b | Help with Project #4 |
Project #4 helper code, Project #4 Statement |
Pr4 due |
This syllabus covers the first asynchronous lecture of each week, which presents topic material, and the second lecture, presented in a synchronous session, which covers project work and answers questions about the core material.