Course Preparation
What Software Architect does,
doc
Software Architect's responsibilities.
Breaking Down and Building Up,
ppt
Software Structure Research,
ppt
Murat Gungor's Doctoral Defense slide-deck (2006).
Software Structure Research Excerpts,
ppt
Excerpts from the defense slides relevant to CSE681 - Software Modeling & Analysis.
Parallel Type Analysis,
vsd
A two-pass structure for parallel type analysis.
Enterprise Computing,
ppt
Quick summary of enterprise computing structures
Introduction to the Web,
ppt
World's most interesting highly scalable architecture - the web.
Thinking about Message-Passing Systems,
ppt
Considers server architectures to handle multiple concurrent clients.
A Note on Distributed Computing, Waldo et. al.
This paper argues that communicating with remote objects is intrinsically different than with local objects.
White Paper on Cloud Computing, Jon Oltsik
Basic cloud computing ideas and discussion of required support.
Performance logging XML messages.
Performance of writing to XML log as number of entries increases (log file gets bigger).
Example Size and Time Estimates for File Activities
Examples of estimating memory sizes and operation times for a Repository system.
Queuing Analysis
Analyze performance of queuing versus load factor.
Load Analysis for Queued Subsystems
Estimating service-times for multiple concurrent message queuing processes.
Product Model
Diagram showing relationships of the various software documents.
Class Relationships Diagram, Activity Diagram, Sequence Diagram, State Diagram
Satisfying the Open/Closed Principle,
ppt
Pragmatic discussion of use of the Open/Closed Principle.
What is a Program?, Size Matters, Single Responsibility Principle, Sharing, Robustness, Top-Down, Bottom-up, Partitions, Events, Components
Software Design,
ppt
Design strategy, tactics, and characteristics of a good design.
Common Coding Problems,
ppt
Low-level tips, many specific to C++.
Design Strategies,
ppt
Design and design process: Top Down, Bottoms Up, OO Design, Binding
Design Patterns Introduction,
ppt
How course works and a sample presentation: The Presentation Pattern
Abstract Factory,
ppt
Pattern for creating families of related products.
Bridge,
ppt
Support variations in abstraction and implementation.
Command,
ppt
Pattern for managing callbacks - Hollywood Principle.
Flyweight,
pptx
Pattern for efficiently creating many instances of objects that share partial state.
Iterator,
pptx
Iterate through collections. Will discuss C++ iterators vs. .Net iterators.
Strategy,
pptx
Implement a sequence of strategies that may run sequentially or be selected.
Programming to Interfaces,
ppt
Use of Interfaces and Object Factories to isolate a component's implementation from all its clients.
Scope containment,
vsd
Diagram showing scope containment relationships for C++. C# scope containment relationships are very
similar - just remove the containment of functions by namespaces, as global functions are not supported.
Adapter,
ppt
Mechanism for bringing into an inheritance hierarchy a class that does not derive from the hierarchy base.
Language History,
vsd
Creation dates and relationships between some historically important programming languages.
Scope relationships,
vsd
Inclusion relationships for C++ scopes. C# and Java relationships are nearly identical, just eliminate
the global functions (included directly from Namespaces).
Namespaces,
ppt
Syntax and semantics of namespaces.
Assessment of C++,
ppt
Thoughts about the role of C++.
C & C++ details,
ppt
Summary of language details for C and C++.
C++ Runtime Type Identification,
ppt
Runtime Type Identification is a weak form of reflection - not nearly as powerful as
C# or Java's reflection, but still useful.
C# vs. C++,
ppt
Comparing native C++ with managed C# - more details.
C# Language,
ppt
Overview of the C# Language
C# Language - some details,
ppt
Managed code concepts that are important for C# programming.
C# Syntax - Wikipedia
Broad coverage of syntax.
C# Attributes,
ppt
Attributes are code embellishments that may add predefined code to an application.
Interception,
ppt
Interception is the process of inserting code between a client call and the target invocation on either
the way in, the way out, or both.
Things covered in CSE775 - Distributred Objects,
pptx
Windows Platform Technologies,
vsd
COM and .Net Object Models,
ppt
Comparison of COM and .Net Object Models
Intro to COM - Part I,
ppt
Roadmap to COM
Intro to COM - Part II,
ppt
Survey of COM Technologies
Introduction to COM,
ppt
Introduction to Microsoft's Component Object Model (COM)
COM Types,
COM Types
Automation types: BSTR, Variant, SafeArray
Adding External Tools,
doc
Adding External Tools to Visual Studio Tools Menu - useful for registering controls
Adding GUID Generation to External Tools,
doc
Adding GUID generation to Visual Studio Tools Menu - useful for creating new COM Components.
In-Process Component class diagram,
vsd
Class diagram for DLL-based COM Components
In-Process Component Activation,
vsd
Event-trace diagram for In-Proc activation
In-Process Component Structure Chart,
vsd
Event-trace diagram for In-Proc activation
Out-Proc class diagram,
vsd
Out-of-Process Component class diagram.
Out-Proc Activation Diagram,
vsd
Out-of-Process Activation Diagram.
Out-Proc STA structure chart,
vsd
Out-of-Process structure chart for Single-Threaded-Apartment Component.
Out-Proc MTA structure chart,
vsd
Out-of-Process structure chart for Multi-Threaded-Apartment Component.
COM Threading Rules,
doc
Excerpts from an article on COM Threading by Jeff Prosise.
COM Architecture,
vsd
Architectural diagram showing COM Technologies.
IDL,
ppt
Interface Definition Language (IDL)
COM Apartments,
ppt
A COM Apartment is an execution environment for instances of COM components.
Understanding Apartments - Part I,
Understanding Apartments - Part I
Understanding COM Apartments - Part I, Jeff Prosise
Understanding Apartments - Part II,
Understanding Apartments - Part II
Understanding COM Apartments - Part II, Jeff Prosise
COM Automation,
ppt
COM Automation: generic interface accessible from (select) scripting languages.
COM Object Activation,
vsd
Diagram showing how COM objects are activated.
Connection Points,
ppt
Discussion of Uniform Data Transfer and Connection Points
Structured Storage,
ppt
Structured Storage, Monikers, and Persistance
Late Binding,
ppt
Presentation by Vijay Appaturi on COM late binding.
Late Binding with COM events,
ppt
Vijay's additions to the previous presentation.
Distributed COM,
ppt
COM Remoting technologies
COM+,
ppt
COM+ is the last version of COM before .Net was introduced.
Configure COM+ component,
doc
COM+ components must be configured before they can be used.
Interception,
ppt
Intercepting calls to and from COM and .Net managed code.
WinForm Controls,
ppt
Winform Controls - many are ActiveX controls wrapped in .Net classes
WinForm control class diagram,
vsd
.Net Controls,
ppt
.Net Controls - some are entirely .Net managed code
Windows Registry,
ppt
Presentation by Mario Tayah, former TA for CSE775
Active Template Library (ATL),
ppt
ATL is a library that supports relatively simple creation of COM Components.
ATL class structure,
vsd
ATL class structure diagram
ATL Helper Types,
vsd
ATL Helpers Diagram: CComQIPtr, CComBSTR, CComSafeArray, CComVariant
ATL Sychronization Helper Types,
vsd
ATL Synchronization Helpers Diagram: CCriticalSection, CEvent, CMutex, CSemaphore
ATL Control Architecture,
vsd
Class structure diagram - ATL controls.
ATL Windows Architecture,
vsd
Class structure diagram - ATL dialog and framewindow classes
COM to C#,
doc
Invoking methods of C# classes from C++ COM clients.
C# Language,
ppt
Overview of the C# Language
C# Language - some details,
ppt
Managed code concepts that are important for C# programming.
Graph Blog
Describes a Directed Graph implemented in C++.
M-Ary Tree Blog
Describes an unbalanced tree class developed in C++.
noSQL Database
Discusses implementation of a Key/Value storage facility.
Design of HashTable and Iterators,
ppt
Design of Hashtables using C++ Templates and iterators.
Queuing Analysis,
doc
Pragmatic summary of Queuing Theory with some derivations.
Executable Specification,
ppt
Describes an interesting way to describe specification - with tests. Essentially the test is the specification.
noSQL Database
Discusses implementation of a Key/Value storage facility.
Message-passing systems,
ppt
Discusses the structure of distributed systems that communicate by passing messages.
Code Parser
Blog discussion of the design of a C++ parser. The same ideas apply for a C# parser.
C++ Grammar Detection,
doc
Parser rules for detecting certain C++ grammatical constructs.
Process Structure,
vsd
Windows process structure.
Win32 Threads,
ppt
Low-level details for Win32 threads.
.Net Remoting,
ppt
.Net remoting was a precursor to Windows Communication Foundation. It is a lighter weight
communication framework and is used to communicate between application domains.
Classic Web Services,
ppt
Presents the concepts and top-level structure of web services.
Windows Platform Technologies,
vsd
Process Structure,
vsd
Windows process structure.
Virtual Memory,
vsd
Model of Windows virtual memory processing.
Windows Event Handling,
VSD
Windows message handling diagram - from device to window.
Windows Thread Scheduling,
vsd
Thread scheduling diagram
Win32 Threads and Synchronization,
ppt
Low-level details for Win32 threads.
Windows Registry,
ppt
Presentation by Mario Tayah, former TA for CSE775
Linux Technologies,
vsd
Linux technology stack
Linux Threads,
pptx
Multi-threaded programming for Linux
Linux Libraries,
pptx
Library usage in Linux
.Net Sockets,
ppt
Discusses .Net classes that wrap native sockets.
Windows Technologies Diagram,
vsd
Diagram illustrates the relationships and interoperation between Windows technologies.
Win32 Windows programming,
ppt
Discusses GUI programming using the Windows API.
Win32 CreateFile,
ppt
Windows API "Swiss Army Knife" function CreateFile - Mario Tayah.
Win32 File System,
ppt
Windows API file management - Mario Tayah.
Introduction,
ppt
Introduction to CSE686 - Internet Programming
Introduction to the Web,
ppt
Detailed introduction to the web - history, protocols, ...
C# fundamentals,
ppt
C# and .Net basics with a few comparisons to C++
.Net Framework,
ppt
.Net Framework Class Libraries (FCL)
Static Page Serving Model,
vsd
Client request to Server Process and back with static pages.
Asp Serving Model,
vsd
Client to Server and back using Active Server Pages (ASP).
Asp.Net Serving Model,
vsd
Client to Server and back using Asp.net.
Ajax Serving Model,
vsd
Client to Server and back using Ajax.
Browser and Server models,
ppt
Introduction to Browser and Server programming models.
Active Data Objects,
vsd
Diagram of ADO processing components.
Asp.Net Part I,
vsd
Part I - Introduction to Asp.Net
Asp.Net Part II,
ppt
Part II - Introduction to Asp.Net
Asp.Net MVC,
pptx
Introduction to Asp.Net MVC
Asp.Net Mvc Conventions,
pptx
Asp.Net MVC conventions - naming, folders, routing
Click-Once Deployment,
ppt
By TA Murat Gungor in 2006
Javascript,
ppt
Javascript basics
jQuery,
pptx
Introduction to jQuery Javascript library
Web Services,
ppt
Web service basics
Web Services,
ppt
Introduction to Web services.
Asp.Net Security,
ppt
Asp.Net Security - Basic ideas
.Net Security,
ppt
Basics of .Net security
Asp.Net Roles,
docx
Asp.Net - Role-based authorization
Security Tools,
doc
Security Tools screenshots
Asp.Net Security,
ppt
Security Talk by Scott Guthrie, Microsoft
Web Application Security,
pptx
Excellent web application security presentation - Dusan Palidar
XML,
ppt
XML with a little XPath and XSLT
XML parse tree
XML parse tree for LectureNote.xml example.
LectureNote.xml
LectureNote.xml - an example of XML syntax
Relational Model,
ppt
Relational database model
SQL Cheat Sheet
SQL Summary Chart - Dennis Cassoe
SQL Query Joins,
ppt
Join syntax and semantics in SQL Queries - Murat Gungor
.Net Security,
ppt
Summary of .Net security.
.Net Deployment,
ppt
Using configuration files to tailor a deployment to the target environment.