Lectures

On-Line CSE681 - Software Modeling & Analysis

Constructing Software Systems on the .Net Platform

"Design is where science and art break even."
- Robin Mathew

Resources:

Syllabus, Lectures, Intro to Website, pptx

Course Scope:

This course is concerned with modeling software - especially large distributed systems - including architecture, design, and implementation. To do this we introduce: One major focus is the representation of software and software systems with means other than code, although we do develop code in this course.

The purpose of modeling software is to understand its intended operations, even before committing to code, and to enable critical analysis of its structure and operations at a level higher than code. This is especially important for large systems where no one individual will understand every line of code.

By analysis we mean: We will emphasize the first three of these. We will discuss the performance consequences of some design choices, but will not explore detailed analyses of them. That would take another course to cover enough to be useful.

Four projects are required that are progressively more challenging. The first and second projects are concerned with describing an architecture for, then implementing, a relatively small but interesting software system. The third project develops some prototype code for a more complex, distributed, system. The final project requires the creation of an architecture for this system, followed by its implementation.

The use of C# and the .Net Framework Class Libraries are required. This is covered by the class text and in sychronous sessions conducted by the instructor. A lot of work outside of class is expected. Students that complete this course with good grades will understand how to lay the foundations for the successful development of large, distributed systems.

What do I gain by taking this course?

  1. Ability to design and implement complex systems
  2. Proficiency with C# and the .Net Framework
  3. Experience with multi-package systems that use threading, Graphical User Interfaces, and Inter-process communication with message passing
  4. 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:

  1. 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.
  2. Class Notes, available on www.ecs.syr.edu/faculty/fawcett
  3. 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.
  1. 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.
  2. 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).
  3. Writing with Style, Third Edition, John Trimble, Prentice-Hall, 2010, ISBN 978-0205028801
  4. This is the best book on writing I've ever used - highly recommended. This would be useful for Projects #1 and #4.
  5. High Scalability Website
  6. Tutorial links:
  7. Other useful links:

OnLine Software Modeling & Analysis Syllabus:

Syllabus for On-Line CSE681 - Software Modeling & Analysis
LectureTopicResourcesProject
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.

campus at night