COM 440 Distributed Systems

Home

 

Gediz University, Computer Engineering Department
Spring 2013
Lecture: Tuesday: 10:00 - 12:45, D-114

 
   Instructor: Halûk Gümüşkaya  
   Office: D107  
   Office Hours:  
   Phone: 0232-355 0000 - 2305  
   e-mail: haluk.gumuskaya@gediz.edu.tr  
   
bullet

Course Description

Pages:
bullet

Prerequistes

bullet

Lecture Schedule Page    

bullet

Lecture Schedule

bullet

Policies and Regulations

bullet

Textbooks

 

bullet

Course Technologies and Tools

 

bullet

Grading

 

   Course Description

Catalog Description:
Characterization of distributed systems, system models, networking issues for distributed systems, inter process communication, distributed objects and remote invocation, security, distributed file systems, name services, time and global states, coordination and agreement, transactions and concurrency control, distributed transactions, replication.

Objectives: With the emergence of the Internet as a computing platform, distributed applications are being widely deployed by organizations. Understanding the principles/theory and the technologies underlying distributed computing and systems design is increasingly important. Examples of technologies supporting such deployment include JEE architecture, Web services and Cloud Computing.

This course has three major objectives. First, it is designed to introduce students to the principles underlying Distributed Systems and Computing and the design of distributed systems. Second, it aims to provide students with the opportunity to exercise these principles in the context of real applications by having the students use technologies such as XML, SOAP, Web services, and JEE-based application servers. Finally, it seeks to endow students with the capacity to analyze, design, evaluate and recommend distributed computing solutions skills in response to business problems.

Distributed Systems and Computing Principles:
   Distributed computing architectures: Client server and P2P Inter-process communication
   Distributed objects and remote invocation  
   Naming and Name services
   Time and Global State Management
   Security
   Transactions and Concurrency control
   Distributed Transactions

   Material on principles of distributed systems will be taught from books such as the Coulouris et al. book and Tannenbaum and Steen book on Distributed Systems.

Internet and Java enabled Distributed Computing Technologies:
   Application Server architectures: JEE Extensions of the Java Distributed Object model and the DCOM component-based architectures
   Web Services: WSDL, UDDI, SOAP, XML
   Http-based RPC combined with standards for interface definition and naming.
   Discussion and application of selected API’s from the JEE architecture to illustrate distributed transactions, middleware access protocols (MQ Series API), and Messaging services (JMS).

   Project oriented teaching with implementation components to get students hands on skills with JEE frameworks.

Learning Outcomes:

bullet

Describe the functional and non-functional characteristics of distributed systems, applications and differentiate between different types of middleware systems.

bullet

Design, implement, and deploy distributed systems using the prevalent models of web applications, web services, remote objects, and asynchronous messaging.

bullet

Understand the function and interplay of network protocols from ARP to application protocols that enable distributed systems on the Internet.

bullet

Demonstrate the technical ability to code solutions with core networking protocols.

bullet

Program solutions to run on all ranges of devices, including mobile, desktop, and cloud-based servers.

bullet

Understand the challenge of time in a distributed system, and implement a means of assessing a distributed system's state. 

bullet

Describe the basic network security principles in distributed systems.

   Prerequistes

Minimum: COM 201 Data Structures and COM 201 Algorithms
Ideal: Basic networking concepts given in COM 362 Computer Networks I (e.g., TCP/IP, routing protocols, etc.), basic OS concepts (e.g., processes, threads, synchronization, file systems, etc.), background in systems programming (pthread, socket, etc.)

   Lecture Schedule

bulletThis is the tentative lecture schedule. Please check this page at least once a week during the semester.

   Textbooks

There is no single textbook that adequately covers such a diverse range of topics that are taught in this course. Buying multiple textbooks is clearly not very appealing financially. I therefore will try to prepare my own lecture handouts and slides available as course notes and they will be available on the web site of the course. Here are some textbooks that are helpful for various parts of the course:

Main References

bullet

Distributed Systems, Concepts and Design, 5th Edition, G. Coulouris, J. Dollimore, T. Kindberg, Addison Wesley, 2011.
The course largely follows portions of this textbook.

bullet

Distributed Systems: Principles and Paradigms, 2nd Edition, Andrew S. Tanenbaum, Maarten van Steen, Prentice Hall, 2006.

Other References

bullet

Principles of Computer System Design-An Introduction, J. Saltzer, M. F. Kaashoek, Morgan Kaufmann, 2009.

bullet

Distribued Systems for System Architects, P. Verissimo, L. Rodrigues, Springer, 2001.

bullet

Java Ağ Programcılığı, H. Gümüşkaya, Ö. Boyacı, ALFA, 2003.

   Course Technologies and Tools

bullet

Programming in Java is an important component of the course

bullet

IDE: Netbeans and Eclipse

bullet

Java Web Applications (Glassfish)

bullet

Java Server Side Programming (Servlets, JSP)

bullet

Web Services (JDK 6, Glassfirsh)

bullet

Message Oritented Middleware (JMS)

bullet

Distributed Objects (Java RMI, CORBA, EJBs)

bullet

Mobile Platform (Android)

bullet

..

   Grading

              20
% : Homework Assignments
              20 % : Midterm Exam
              30 % : Project
              30
% : Final Exam

bullet

A TA will normally be assigned to grade the projects.

bullet

Given the number of students in the course, we may sometimes use the common practice of selecting one section of a code or project reflection and grading that carefully and assigning the assignment grade based on that segment.

Home