SWE 622: Distributed Software Engineering (3 credits)


Objective

The objective of this course is to introduce the student to techniques and programming interfaces of distributed software engineering. The first part of the course covers protocols and interfaces to upper layer protocols and libraries of the TCP/IP protocol stack including application level interfaces such as HTTP, TELNET, FTP, SNMP and their secure analogs, and the next level libraries such as TCP/UDP and IP. The second part of the course covers how these are used by distributed and concurrent software systems. That part discusses details and interfaces of remote procedure calls including CORBA, D-COM and JAVA RMI interfaces. The third phase applies these techniques to the emerging applications of the semantic web including UDDI, SOAP and DAML-S services. During each phase, corresponding software libraries will follow theoretical foundations.

Rationale

Due to the recent developments in network centric computing, such as novel web-based distribution of data and remote access methods, well-established communication paradigms are being used in new applications in new ways. This course is a topic-by-topic introduction that fills in the gaps left behind between traditional networks, distributed systems and web-based programming courses with the aim of brining them together under the software engineering curriculum.

Prerequisites

SWE foundation classes

Course Administration

  1. Class Meetings:Monday 4.30 - 7.10 pm in E 201
  2. Calss Work: An introductory course in distributed software engineering will have homeworks, projects and examinations.
  3. Instructor: Duminda Wijesekera, email: dwijesek@gmu.edu, duminda@ise.gmu.edu
  4. Instructor Office Hours: M from 3.45 to 4.15 pm, and 7.15-7.45 pm in ST II Rm 351

Announcements


A very preliminary class schedule (will be changed as the summer progresses)

Date
Topic
Readings
Notes
Week 1:
Aug 30
Introductory Material
  1. Definition of a distributed system
  2. Networks and operating systems
  3. The client server model
  4. IP address classes
Distributed computing
Week 2:
Sept 06
Underlying Paradigms and Services I: Networks (6 weeks)
The TCP/IP Protocol stack
  1. The TCP/IP Protocol stack
  2. TCP/IP addressing overview
  3. TCP/UDP/IP Header formats
  4. Assigning port numbers in TCP/IP
  5. Flow control in TCP/UDP
TCP/IP
Week 3:
Sept 13
The IP Addressing schema.
  1. Subnet addresses
  2. Subnet masks
  3. Broadcasts
IP addressing
Week 4:
Sept 13
Layers supporting Internet Applications
  1. Network addressing
  2. Packet transfer and forwarding
  3. Data security
pkt transfer
Week 5:
Sept 20
Routing on the Internet
  1. Routing algorithms
  2. Routing network control
  3. Static vs. dynamic routing
routing
Week 6:
Sept 27
Application layer protocols: HTTP, TELNET, Rlogin, FTP, SMTP, NFS and SNMP
  1. Format and mechanisms of HTTP - sending request and receiving response.
  2. How TELNET, FTP works [running commands remotely]
  3. SMTP with POP & IMAP - sending messages between servers
  4. Authenticated Rlogin using Kerberos
  5. NFS, SNMP - client/server kernel
Application level
Week 7:
Oct 04
Mid term examination Covers networing aspects of distributed systems Application level
Week 8:
Oct 11
Introduction to Distributed Network programming.
  1. PC protocol stack - NFS, RCP, XDR, UDP, IP
  2. Networked applets
  3. Datagram networking
nw programming
Week 9:
Oct 18
Underlying Paradigms and Services II:
Operating Systems (5 weeks)Threads & Streams.
  1. System calls and library functions
  2. Streams, examples and benefits
  3. Opening a streams device file
system calls
Week 10:
Oct 25
HTTP, Java and CGI.
  1. Java HTTP requests
  2. How web servers communicate
  3. Examples of CGI forms
HTTP Requests
Week 11:
Nov 01
Introduction to Servlets
  1. Server side of Java
  2. Why servelets?
Servlets
Week 12:
Nov 08
CORBA and other RMIs.
  1. Server object implementation
  2. Overview of CORBA objects and IIOP [internet inter-orb protocol]
  3. Introduction to IDL [interface definition language]
  4. Overview of RMI applications
  5. Making an RMI server
RMI
Week 13:
Nov 15
Distributed Knowledge sharing and computing on the Web (2-3weeks)
Syntax and semantics of web-based computing
  1. More HTTP
  2. Browser server interaction
knowledge
Week 14:
Nov 22
The semantic web and layering
  1. Why layered semantic web?
  2. XML and RDF
  3. Ontologies DAML+OIL and/or OWL?
  4. SWRL, RuleML and policies
The semantic web