|

| Distributed
Software Engineering (SWE 622), George Mason University, Fall 2005 and
Spring 2006
Students who successfully complete this course will obtain an
understanding of the fundamental concepts underlying software engineering
for distributed systems. The course material is organized with three
objectives in mind: (1) to convey conceptual understanding of key ideas
underlying software for distributed systems, (2) to provide practical
hands-on design and implementation of software for distributed systems,
and (3) to consider some research related to software engineering for
distributed systems. Students will gain exposure to various issues that
must be addressed when designing and implementing distributed systems, and
will conduct several projects to explore those issues through a simulation
model of Web Services. Throughout the course, students will lead and
participate in design reviews associated with the projects.
The course covers the following topics:
 | Distributed Systems Concepts |
 | Network Interfaces and Protocols: TCP, UDP, and Multicast |
 | WS Messaging: Addressing, SOAP, WDSL, Faults & Messaging Models |
 | WS Resources Framework: Properties, Lifetime, Topics, Notification,
Composition, and Service Groups |
 | Service Discovery: Architectures, Protocols, Service Descriptions,
and Queries |
 | Replication and Load-Balancing |
 | Coordination and Atomic Transactions |
 | Fault-Tolerance |
|
| Distributed
Software Engineering (SWE 622), George Mason University, Spring 2005
Students who successfully complete this course will obtain an
understanding of the fundamental concepts underlying software engineering
for distributed systems. The course material is organized with three
objectives in mind: (1) to provide practical hands-on design and
implementation of software for distributed systems, (2) to convey
conceptual understanding of key ideas underlying software for distributed
systems, and (3) to consider some research related to software engineering
for distributed systems. Students will gain exposure to various
techniques for implementing distributed systems, and will conduct and
demonstrate a (team) project to implement a (small) distributed system. In
the middle portion of the course, students will consider some key issues
facing designers of distributed systems. Throughout the course, students
will lead and participate in discussions about some research papers
related to engineering distributed software systems.
The course covers the following topics:
 | Distributed Systems Concepts
 | Various Programming Models for Distributed Systems: Sockets, RPC,
RMI, Distributed Events, JavaSpaces, SOAP, WSDL, UDDI, and CORBA
 | Fundamentals of Service Discovery: Jini, UPnP, SLP, JXTA
 | Fundamentals of Composition, Synchronization, and Coordination
 | Fundamentals of Replication and Load-Balancing: Replica-Management
Systems and Replica Selection
 | Fundamentals of Fault-Tolerance: Detection and Restoration and
Service Guarantees
 | Fundamentals of Scale: Emergence |
| | | | | |
|
Data
Communications and Distributed Processing (INFS 612), George Mason University,
Fall 2004
Software engineering or information systems students who
successfully complete this course will obtain an understanding of
the fundamental concepts underlying data communications and
distributed processing. The course material is addressed largely
from a programmer's point of view, which includes approaches to
designing and implementing networking software and distributed
applications. The course does not dwell particularly on learning
packet header formats. The lecture material emphasizes concepts,
sometimes from a mathematical point of view. The course does not
emphasize mathematical derivation of equations to predict network
protocol performance; however, students will be expected to learn
how to apply such equations to predict performance for purposes of
network engineering. The course is structured to regularly engage
students in discussion and presentations.
The course covers the following topics:
 | Survey of Issues in Data Communications and
Distributed Processing
 | Fundamentals of Data Transmission and Multiplexing
Techniques
 | Link Synchronization, Error Detection and Correction,
Compression, and Encryption
 | Shared Access Mechanisms in Local Area Networks
 | Network Routing and Performance
 | End-to-End Protocols: Specification, Modeling, and Analysis
 | Directory Services and Remote Procedure Calls
 | Client-Server Applications with the HyperText Transfer
Protocol (HTTP) |
 | Service-Discovery Systems (Jini, UPnP, and SLP) |
| | | | | | |
|
| Software
Project Lab (SWSE 626), George Mason University, Spring 2004
This course revolves around a hands-on project
intended to integrate concepts learned in previous courses on
software requirements, software design, software construction,
software testing, and software project management. The course will
be organized to reflect the realities of system specification,
design, and development in the workplace. Students will
organize into groups to specify, design, implement and test a
concurrent, distributed system built on top of a framework of
existing software. Each group will specify the
requirements for a system, and will become the customer of another
group. Each group (acting as a supplier) will design and implement
a software system satisfying the requirements specified by their
customer. The customer will design and implement a test campaign
to determine if its requirements are satisfied. Groups will be
involved in scheduling, organizing, and controlling their work,
including negotiations between customers and suppliers. Groups
will also evaluate outcomes. Each group will describe and evaluate
the contributions of its customers and suppliers. Each group will
also describe and evaluate its own contributions as both customer
and supplier. Finally, each member in each group will describe and
evaluate their own contributions as well as the contributions of
the other members of their group. Half of the course grade will be
based on the instructor's evaluation of deliverables (including
evaluations); one-quarter of the course grade will be based on the
evaluation of a group's customers and suppliers - taking into
account the group's self evaluation as well; one-quarter of the
course grade will be based on the evaluation by members of your
own group - taking into account your self evaluation as well.
|
Data
Communications and Distributed Processing (INFS 612), George Mason University,
Fall 2003
Software engineering or information systems students who
successfully complete this course will obtain an understanding of
the fundamental concepts underlying data communications and
distributed processing. The course material is addressed largely
from a programmer's point of view, which includes approaches to
designing and implementing networking software and distributed
applications. The course does not dwell particularly on learning
packet header formats. The lecture material emphasizes concepts,
sometimes from a mathematical point of view. The course does not
emphasize mathematical derivation of equations to predict network
protocol performance; however, students will be expected to learn
how to apply such equations to predict performance for purposes of
network engineering. The course is structured to regularly engage
students in discussion and presentations.
The course covers the following topics:
 | Survey of Issues in Data Communications and
Distributed Processing
 | Fundamentals of Data Transmission and Multiplexing
Techniques
 | Link Synchronization, Error Detection and Correction,
Compression, and Encryption
 | Shared Access Mechanisms in Local Area Networks
 | Network Routing and Performance
 | End-to-End Protocols: Specification, Modeling, and Analysis
 | Directory Services and Remote Procedure Calls
 | Client-Server Applications with the HyperText Transfer
Protocol (HTTP) |
 | Service-Discovery Systems (Jini, UPnP, and SLP)
|
| | | | | | |
|
| Software
Project Lab (SWSE 626), George Mason University, Fall 2003
This course revolves around a hands-on project
intended to integrate concepts learned in previous courses on
software requirements, software design, software construction,
software testing, and software project management. The course will
be organized to reflect the realities of system specification,
design, and development in the workplace. Students will
organize into groups to specify, design, implement and test a
concurrent, distributed system built on top of a framework of
existing software. Each group will specify the
requirements for a system, and will become the customer of another
group. Each group (acting as a supplier) will design and implement
a software system satisfying the requirements specified by their
customer. The customer will design and implement a test campaign
to determine if its requirements are satisfied. Groups will be
involved in scheduling, organizing, and controlling their work,
including negotiations between customers and suppliers. Groups
will also evaluate outcomes. Each group will describe and evaluate
the contributions of its customers and suppliers. Each group will
also describe and evaluate its own contributions as both customer
and supplier. Finally, each member in each group will describe and
evaluate their own contributions as well as the contributions of
the other members of their group. Half of the course grade will be
based on the instructor's evaluation of deliverables (including
evaluations); one-quarter of the course grade will be based on the
evaluation of a group's customers and suppliers - taking into
account the group's self evaluation as well; one-quarter of the
course grade will be based on the evaluation by members of your
own group - taking into account your self evaluation as well.
|
Software
Design (SWSE 621), George Mason University, Spring 2003
This course helps
students to learn object-oriented design, using the Unified Modeling Language
(UML)
notation. The course emphasizes student practice in place of professorial lectures.
Students engage in the incremental analysis and design of a fairly large software system
for a distributed, concurrent application. During the design, students must consider the
characteristics of hardware devices, as well as performance requirements for the
application. We devote ample class time to walk-throughs of incremental assignments and to
review of major deliverables.
|
| Software
Project Lab (SWSE 626), George Mason University, Fall 2002
This course revolves around a hands-on project
intended to integrate concepts learned in previous courses on
software requirements, software design, software construction,
software testing, and software project management. The course will
be organized to reflect the realities of system specification,
design, and development in the workplace. Students will
organize into groups to specify, design, implement and test a
concurrent, distributed system built on top of a framework of
existing software. Each group will specify the
requirements for a system, and will become the customer of another
group. Each group (acting as a supplier) will design and implement
a software system satisfying the requirements specified by their
customer. The customer will design and implement a test campaign
to determine if its requirements are satisfied. Groups will be
involved in scheduling, organizing, and controlling their work,
including negotiations between customers and suppliers. Groups
will also evaluate outcomes. Each group will describe and evaluate
the contributions of its customers and suppliers. Each group will
also describe and evaluate its own contributions as both customer
and supplier. Finally, each member in each group will describe and
evaluate their own contributions as well as the contributions of
the other members of their group. Half of the course grade will be
based on the instructor's evaluation of deliverables (including
evaluations); one-quarter of the course grade will be based on the
evaluation of a group's customers and suppliers - taking into
account the group's self evaluation as well; one-quarter of the
course grade will be based on the evaluation by members of your
own group - taking into account your self evaluation as well.
|
|
Software
Design (SWSE 621), George Mason University, Fall 2001
This course helps
students to learn object-oriented design, using the Unified Modeling Language
(UML)
notation. The course emphasizes student practice in place of professorial lectures.
Students engage in the incremental analysis and design of a fairly large software system
for a distributed, concurrent application. During the design, students must consider the
characteristics of hardware devices, as well as performance requirements for the
application. We devote ample class time to walk-throughs of incremental assignments and to
review of major deliverables.
|
|
Data
Communications and Distributed Processing (INFS 612), George Mason University,
Spring 2001
Software engineering or information systems students who
successfully complete this course will obtain an understanding of
the fundamental concepts underlying data communications and
distributed processing. The course material is addressed largely
from a programmer's point of view, which includes approaches to
designing and implementing networking software and distributed
applications. The course does not dwell particularly on learning
packet header formats. The lecture material emphasizes concepts,
sometimes from a mathematical point of view. The course does not
emphasize mathematical derivation of equations to predict network
protocol performance; however, students will be expected to learn
how to apply such equations to predict performance for purposes of
network engineering. The course is structured to regularly engage
students in discussion and presentations.
The course covers the following topics:
 | Survey of Issues in Data Communications and
Distributed Processing
 | Fundamentals of Data Transmission and Multiplexing
Techniques
 | Link Synchronization, Error Detection and Correction,
Compression, and Encryption
 | Shared Access Mechanisms in Local Area Networks
 | Network Routing and Performance
 | End-to-End Protocols: Specification, Modeling, and Analysis
 | Directory Services and Remote Procedure Calls
 | Client-Server Applications with the HyperText Transfer
Protocol (HTTP)
|
| | | | | | |
|
|
Data
Communications and Distributed Processing (INFS 612), George Mason University,
Fall 2001
Software engineering or information systems students who
successfully complete this course will obtain an understanding of
the fundamental concepts underlying data communications and
distributed processing. The course material is addressed largely
from a programmer's point of view, which includes approaches to
designing and implementing networking software and distributed
applications. The course does not dwell particularly on learning
packet header formats. The lecture material emphasizes concepts,
sometimes from a mathematical point of view. The course does not
emphasize mathematical derivation of equations to predict network
protocol performance; however, students will be expected to learn
how to apply such equations to predict performance for purposes of
network engineering. The course is structured to regularly engage
students in discussion and presentations.
The course covers the following topics:
 | Survey of Issues in Data Communications and
Distributed Processing
 | Fundamentals of Data Transmission and Multiplexing
Techniques
 | Link Synchronization, Error Detection and Correction,
Compression, and Encryption
 | Shared Access Mechanisms in Local Area Networks
 | Network Routing and Performance
 | End-to-End Protocols: Specification, Modeling, and Analysis
 | Directory Services and Remote Procedure Calls
 | Client-Server Applications with the HyperText Transfer
Protocol (HTTP)
|
| | | | | | |
|
|
Data
Communications and Distributed Processing (INFS 612), George Mason University, Spring
2000
Software engineering students who successfully complete this
course will obtain an understanding of the fundamental concepts underlying
data communications and distributed processing. The course material is
addressed largely from a programming point of view, which includes the
creation of programs that perform data communications and networking
functions and the creation of distributed systems programs that operate
across networks. The lecture material emphasizes concepts, often from a
mathematical point of view. The course is structured to regularly engage
students in discussion and presentations.
The course covers the following topics:
 | Survey of Issues in Data Communications and Distributed
Processing
 | Fundamentals of Data Transmission and Multiplexing Techniques
 | Link Synchronization, Error Detection and Correction, Compression,
and Encryption
 | Shared Access Mechanisms in Local Area Networks
 | Network Routing and Performance
 | End-to-End Protocols: Specification, Modeling, and Analysis
 | Multimedia and Multicast Protocols
 | Directory Services and Remote Procedure Calls
 | Client-Server Applications with the HyperText Transfer Protocol
(HTTP)
 | Distributed Object Systems: CORBA and Java RMI
 | Service Discovery Protocols: Jini, the Service Location Protocol,
and Universal Plug-and-Play
 | Networking Techniques for Mobile Computing
|
| | | | | | | | | | |
|
|
Software
Design (SWSE 621), George Mason University, Spring 1999
This course helps
students to learn object-oriented design, using the Unified Modeling Language
(UML)
notation. The course emphasizes student practice in place of professorial lectures.
Students engage in the incremental analysis and design of a fairly large software system
for a distributed, concurrent application. During the design, students must consider the
characteristics of hardware devices, as well as performance requirements for the
application. We devote ample class time to walk-throughs of incremental assignments and to
review of major deliverables.
|
Software
Design (SWSE 621), George Mason University, Spring 1998
This course helps students to learn object-oriented design, using the Unified Modeling
Language (UML) notation. The course emphasizes student practice in place of professorial
lectures. Students engage in the incremental analysis and design of a fairly large
software system. In addition, students undertake an independent research project. We
devote ample class time to walk-through of incremental assignments and to review of major
deliverables.
|
Software
Design (SWSE 621), George Mason University, Spring 1997
This is a course in concepts and methods for the architectural design of software
systems of sufficient size and complexity to require the effort of several people for many
months. The course emphasizes the design of concurrent systems. Concurrent systems are
growing in importance as a result of the introduction of multi-threading within popular
languages, most notably Java. The course introduces design concepts and design notations
used in a number of design methods. In addition, several design methods are presented,
compared, and applied to example problems. Students will undertake a term project working
in small teams to design a relatively complex software system.
|
Computer
Networking Systems (CS 455), George Mason University, Spring 1996
The course presents data communications fundamentals and computer networking methods,
using the ISO 7-layer reference model to organize the study. Attention will be focused on
the protocols of the data link control, network, and transport layers, for local- and
wide-area networks. Students will program simplified versions of the protocols as part of
the course project. |
|

|

|