Courses


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.

 

Home Resume Selected Publications Projects Other Work Research Collection Courses Unpublished Papers Photo Album Random Thoughts

Modified on: January 05, 2007
Modified by: mills Mills
Comments: kmills@nist.gov