COURSE SYLLABUS

 

Course Title:††††††† Distributed Computing

Course No:†††††††††† CS 4253

Level:††††††††††††††††††† Undergraduate†††††††††††††††††††††††

Course Prereq:††† Programming skills in C/C++; JAVA, CS 3243/5243 (OS concepts)

Textbook: 1) Distributed Computing: Principles and Applications, M. L. Liu, Pearson/Addison-Wesley, ISBN: 0-201-79644-9

2) Further reading: (follow citations at end of each chapter)

Course Coverage:

A.                Catalog description Ė This course introduces students to the fundamental principles common to the design and implementation of programs that run on two or more interconnected computer systems. The subtopics, which are based on these principles, include: distributed operating systems, network protocols for process communication, and synchronization using message queues; understanding of client-server paradigms, web-based group or collaborative communication systems; advanced distributed computing paradigms for parallel computing and handling concurrency issues; and socket APIís for distributed application development as well as APIís for Java RMI are discussed and used in developing experimental projects in a cluster of networked computers.

B.                 Course Focus Ė The course content addresses issues that can be solved within the framework of distributed systems. The course describes successful distributed computing paradigms in the form of abstract models, algorithms and detailed case studies of widely-used systems, e.g., the Internet. Distributed computing is different from communications and computer networks and traditional distributed operating systems. As such the course covers aspects (uppermost layers) of computer networks architecture relevant to distributed computing, including underlying technologies for the Internet - WANs, LANs, and wireless networks. The course builds on basic knowledge of programming paradigms, APIís, fundamentals of operating systems and protocols and standards for net-centric computing.

C.                Course Project:The course is culminated with a project that focuses on distributed computing design, implementation, testing, and demonstration/deployment using such technologies as: Internet TCP/IP, UDP, or Java RMI.

 

Course Policies:

Each student is expected to be in attendance every class-period.The textbook is required and each student must have a copy during class time.Assignment due dates must be adhered to.

 

Dishonesty/Cheating: Any student who is found, or reported, cheating or exercising any form of dishonesty will receive an automatic F grade in the course. Such student(s) will also be subject to summarily disciplinary action in accordance with the University and School of Computing and Software Engineering policies.

 

Program Outcomes:

1.      The course will allow students to apply problem solving (analysis, design, and development) skills to distributed applications

2.      Student will be able to identify and decompose complex systems into its components parts

3.      Students will be able to integrate OS and programming language concepts to solve/implement the (distributed) components of the systems

4.      Students will be able to develop suites of networking protocols for implementing the communicating components

5.      Students will be able to evaluate or validate their implementations via simulations and/or realistic projects

 

 

 

 

Major Topics:

1. Distributed computing

1.1. History

1.2. Forms of computing

1.2.1. Monolithic

1.2.2. Distirbuted

1.2.3. Parallel

1.2.4. Cooperative

1.3. Strengths and weaknesses of distrubuted computing

1.4. OS basics

1.4.1. Programs and processes

1.4.2. Concurrent programming

1.5. Network basics

1.5.1. Protocols

1.5.2. Architecture

1.5.3. Architecture protocols

1.5.4. Connection vs connectionless communication

1.5.5. Network resources

1.5.6. Host ID and IP addressing

1.5.7. Protocol ports

1.5.8. URL, email addressing

1.6. Software Eng basics

1.6.1. Procedural vs object oriented

1.6.2. UML

1.6.3. Architecture of distributed applications

1.6.4. Toolkits, frameworks and components

2. Interprocess communication

2.1. Archetypal IPC program interface

2.2. Event synchronization

2.3. Timeouts and threading

2.4. Deadlock and timeouts

2.5. Data representation

2.6. Data encoding

2.7. Text based protocols

2.8. Request response protocols

2.9. Event and sequence diagram

2.10. Connection vs connectionless IPC

3. Distributed computing paradigms

3.1. Paradigms

3.1.1. message passing

3.1.2. client server

3.1.3. peer to peer

3.1.4. message system

3.1.5. remote procedure call model

3.1.6. distributed objects

3.1.7. object dspace

3.1.8. mobile agent

3.1.9. network services

3.1.10. collaborative application ( groupware)

3.2. Abstraction

3.2.1. Tradeoffs: abstraction vs overhead

3.2.2. scalability

3.2.3. cross-platofrm

4. Soket API

4.1. socket metaphor

4.2. diagram socket API

4.3. stream mode socket API

4.4. sockets with non-blocking I/O

4.5. secure socket api

5. Client server paradign

5.1. Issues

5.1.1. service session

5.1.2. protocol for a service

5.1.3. Interprocess communications & event syncronization

5.1.4. data representation

5.2. Software engineering for a network service

5.2.1. software architecture

5.2.2. ips Mechanism

5.2.3. Daytime client server

5.3. Connection oriented and connectionless servers

5.3.1. Echo client server

5.4. Iterative server and concurrent server

5.5. Stateful servers

5.5.1. global state information

5.5.2. session state information

6. Group communication

6.1. Unicasting, Multicasting

6.2. Archetypal Multicast API

6.3. Connection oriented and connectionless

6.4. Reliable, Unreliable multicast

6.5. Java Basic Multicast API

6.5.1. IP Multicast addresses

6.5.2. Joining/sending multicast group

7. Distributed Objects

7.1. message passing vs distributed objects

7.2. archetypal distributed object architecture

7.3. distributed object systems

7.4. remote procedure calls

7.5. Java RMI architecture

7.5.1. client side

7.5.2. server side

7.5.3. object registry

7.6. API for Java RMI

7.6.1. Remote interface

7.6.2. server side software

7.6.3. client side software

7.6.4. RMI vs socket API

8. Advanced RMI

8.1. Client callback

8.1.1. Client side

8.1.2. Server side

8.2. Stub downloading

8.3. RMI Security manager

8.3.1. Instantiation of a Security manager

8.3.2. Java security policy file

8.3.3. Specifying stub downloading and a security policy file

8.3.4. Algorithms for building RMI application

8.4. Allowing for Stub downloading

9. Internet applications

9.1. HTML

9.2. XML

9.3. HTTP

9.3.1. Client request

9.3.2. Server response

9.3.3. Content type and MIME

9.3.4. HTTP: connection oriented, stateless protocol

9.4. Dynamically generated web contents

9.5. Common gateway interface

9.5.1. Web form

9.5.2. Query string processing

9.5.3. Encoding and decoding query strings

9.5.4. Environment variables in CGI

9.6. Web session and session state data

9.6.1. hidden form feeds for transferring session state data

9.6.2. cookies for transferring session state data

9.6.3. HTTP header lines

9.6.4. Data privacy and security concerns

10. Internet Applications 2

10.1. Applets

10.2. Servlets

10.2.1. Architectural Support

10.2.2. Servlet programming

10.2.3. State information maintenance

10.3. Web services

10.4. Simple Object Access Protocol

10.4.1. SOAP request

10.4.2. SOAP response

10.4.3. Apache SOAP

10.4.4. Invoking web service

10.4.5. Implementing web service

11. Advanced Distributed Computing Paradigms

11.1. Message Queue system paradigm

11.1.1. Point to point

11.1.2. Publish/Subscribe

11.2. Mobile Agents

11.2.1. Basic architecture

11.2.2. Advantages

11.2.3. Mobile agent framework systems

11.3. Network services

11.4. Object spaces COURSE LOAD DESCRIPTION and POLICIES:

Term Project: The term project will be assigned in 2 phases. Phase 1 is focused on simulation project on the core network protocols (UDP and TCP/IP), and Phase 2 is an implementation of a discrete distributed simulation problem using either protocol. Opportunity to incorporate some of the newly learned protocols like RMI (with or without callback), may be explored. Phase 1 will be worth 15% points and the Phase 2 will be worth 25% points.

Exams: There will be two regular exams, and a final exam, each worth 20% of the total score.

Academic Responsibility: You are to work alone, or in designated groups, on all assigned tasks and labs. You are encouraged to consult with other students on assignments. However, any submitted work must be yours or your groupís work.

 

 

 

Attendance:Attendance is required for all classes.

Grades: The course grade will be distributed as follows:

†† Phase 1 (15%), Phase 2 (25%)††† †††††††††††††††††††††††††††††††† 40%
†† 1st & 2nd Exams (20% each)†† ††††††††††††††††††††††††††††††††††††††††††††††††††††††††† 40%
†† Final Exam††††† ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††† 20%

 

NOTES: "Students with disabilities who believe that they may need accommodations in this class are encouraged to contact the counselor working with disabilities at (678) 915-7226 as soon as possible to better ensure that such accommodations are implemented in a timely fashion."

 

"If you are majoring in Computer Science and have questions about your schedule or you are having registration problems, please contact the CS Student Services office located at J 393 or call (678) 915-7406 and ask for an appointment."