L T B H P N L Lectures

CSE681 - Software Modeling & Analysis

Constructing Software Systems on .Net Platforms

"Start where you are, use what you have, do what you can."
- Arthur Ashe

Resources:

Syllabus, Lectures, SG - SMA, SG - OCD, SG - Arch
Submitting Projects, Academic Integrity and Grading Policy

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 emphasize the first three of these. We will discuss 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, documented with an OCD, then 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 help sessions conducted by the instructor and teaching assistants. 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.

Lecture and Help Session Videos

Lecture and Help Q&A Session videos are taped during sessions in CST 4-201. The videos are not substitutes for coming to class. Their purpose is to let you go back over material that you didn't fully understand during the lecture.

This link brings up the first video made for this class, during a help session near the end of the course. It will give you a good idea of the kinds of things we do in this class. In the first five minutes of the video we talk about grading, but it gets much more interesting after that.

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. No prior knowledge of C# is required.

Required Text, Notes, and Projects:

  1. C# 7.0 in a Nutshell, Albahari & Albahari, O'Reilly, 2016 (Text) - Required for this course. Buy the latest version available.
  2. Class Notes, available on www.ecs.syr.edu/faculty/fawcett/handouts/cse681
  3. Four projects are required:
  4. Grading Process:

Supporting Texts and Links:

  1. CLR via C#, Fourth Edition, Jeffrey Richter, Microsoft Press, 2012
  2. Pro C# 5.0 and the .Net 4.5 Platform , Andrew Troelsen, Apress, 2012, ISBN 978-1-4302-4233-8 (PCS)
  3. Writing with Style, Third Edition, John Trimble, Prentice-Hall, 2010, ISBN 978-0205028801
  4. High Scalability Website
  5. Tutorial links:
  6. Other useful links:

Syllabus - Fall 2018:

Syllabus for CSE681 - Software Modeling & Analysis
Lecture Topic Resources Project
Lecture #1
Mon Aug 27
Introduction:
Discuss Syllabus, Assignments, Examination, class text
What is analysis? software architecture,
Handouts
UML notes
Package notes
Text chap 1
Pr1 & Pr2
Lecture #2
Wed Aug 29
Software Architecture:
Architectural Models, Packages, UML
UML notes
Package notes
Text chap 2
Pr1 - OCD
No Class
Mon Sep 03
Labor Day Holiday Celebrate by not working!
Lecture #3
Wed Sep 05
Software Architecture
Help with Projects #1 and #2
UML notes
Package notes
Text chap 2
Pr1 - OCD
Lecture #4
Mon Sep 10
C# Programming Language
.Net Platfrom
Text chaps 3-4 Pr1 - OCD
Lecture #5
Wed Sep 12
C# Programming Language
.Net Platfrom
Text chaps 5-6 Pr1 OCD due
Lecture #6
Mon Sep 17
Advanced C# Features:
Delegates, LINQ, prototype code, .Net Platfrom
Text chaps 4, 7-9 Pr2
Lecture #7
Wed Sep 19
Project #2, Creating and Parsing XML Text chaps 8-11, XMLPlus.pdf, XMLParseTree.pdf Pr2
Lecture #8
Mon Sep 24
Language INtegrated Query (LINQ) Text Chap 10-11, XML Notes, prototype code Pr2
Lecture #9
Wed Sep 26
Processes and Threads:
Processes, Threads, Kernel Objects
Text chap 14, prototype code Pr2
Lecture #10
Mon Oct 01
Processes and Threads:
Multi-threaded systems, queues
Text chap 14, 22, prototype code Pr2
Lecture #11
Wed Oct 03
Windows Communication Foundation (WCF)
Concepts and Examples
PCS Chap 25, class notes, prototype code Pr2 code - due
Lecture #12
Mon Oct 08
Windows Communication Foundation (WCF)
More Examples
PCS Chap 25, class notes, prototype code Pr3
Lecture #13
Wed Oct 10
Windows GUI programming
WinForms programming, .Net Platfrom
PCS chaps 19, 20, Appendix A, Class notes Pr3
Lecture #14
Mon Oct 15
Windows Presentation Foundation (WPF), Handouts PCS Chaps 27, 28, Class notes, prototype code Pr3
Lecture #15
Wed Oct 17
Windows Presentation Foundation (WPF), Handouts PCS Chaps 27, 28, Class notes, prototype code Pr3
Lecture #16
Mon Oct 22
Projects #3 and #4
Integrating GUI, Comm, and Servers
Class notes Pr3
Lecture #17
Wen Oct 24
Asynchronous Systems Asynchronous notes, Text Chap 22, prototype code Pr3
Lecture #18
Mon Oct 29
C# and C++ Test Harness Prototypes:
Code Examples and discussion
Text Chaps 18, 19, 24, Class notes, code prototype Pr3
Lecture #19
Wed Oct 31
Review for Midterm All previous notes, code demos Pr3 code due
Lecture #20
Mon Nov 05
Midterm Examination You may bring in one page of notes,
with entries on both sides, if you wish.
Lecture #21
Wed Nov 07
Common Language Runtime (CLR):
Assemblies, Reflection, Context, and Application Domains
Text Chaps 18, 19, 24, Class notes Pr4 Code & OCD
Lecture #22
Mon Nov 12
C# Interop with Native Code, .Net Sockets, Web Services Text Chap 16, Sockets & Service Notes, prototype code Pr4 Code & OCD
Lecture #23
Wed Nov 14
System Structure:
Peer-To-Peer, and Federations
Class notes, prototype code Pr4 Code & OCD
Holiday
Mon Nov 19
No classes Thanksgiving
Holiday
Wed Nov 21
No classes Thanksgiving
Lecture #24
Mon Nov 26
Midterm Exam Results Class notes Pr4 Code & OCD
Lecture #25
Wed Nov 28
Demonstration of Electron Framework and MongoDB,
Queuing Theory
class notes, prototype code Pr4 Code & OCD
Lecture #26
Mon Dec 03
Enterprise Computing, Pr#5 Topics class notes Pr4 Code & OCD
Lecture #27
Wed Dec 05
Enterprise computing - web model,
Help with Pr4
Course Summary, what next?
class notes, prototype code Pr4 Code & OCD due

campus at night