|
|
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 |
|
|
|
|
Pages: |
|
|
|
|
|
|
|
|
|
|
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 APIs 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:
|
Describe the functional and
non-functional characteristics of distributed systems, applications and
differentiate between different types of middleware systems.
|
|
Design, implement, and
deploy distributed systems using the prevalent models of web
applications, web services, remote objects, and asynchronous
messaging. |
|
Understand the function and
interplay of network protocols from ARP to application protocols
that enable distributed systems on the Internet. |
|
Demonstrate the technical
ability to code solutions with core networking protocols.
|
|
Program solutions to run on
all ranges of devices, including mobile, desktop, and cloud-based
servers. |
|
Understand the challenge of
time in a distributed system, and implement a means of assessing a
distributed system's state. |
|
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
| This 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
|
Distributed Systems,
Concepts and Design,
5th Edition, G. Coulouris, J. Dollimore, T. Kindberg, Addison Wesley,
2011.
The course largely follows portions of this textbook. |
|
Distributed Systems: Principles and Paradigms,
2nd Edition, Andrew
S. Tanenbaum, Maarten van Steen, Prentice Hall, 2006. |
Other References
|
Principles of Computer
System Design-An Introduction, J. Saltzer, M. F. Kaashoek, Morgan
Kaufmann, 2009. |
|
Distribued Systems for
System Architects, P. Verissimo, L. Rodrigues, Springer, 2001. |
|
Java Ağ Programcılığı,
H. Gümüşkaya, Ö. Boyacı, ALFA, 2003. |
Course
Technologies and Tools
|
Programming in Java is an important
component of the course |
|
IDE: Netbeans and Eclipse
|
|
Java Web Applications (Glassfish)
|
|
Java Server Side Programming (Servlets, JSP)
|
|
Web Services (JDK 6, Glassfirsh)
|
|
Message Oritented Middleware (JMS)
|
|
Distributed Objects (Java RMI, CORBA, EJBs)
|
|
Mobile Platform (Android)
|
|
.. |
Grading
20 % : Homework Assignments
20 % : Midterm Exam
30 % :
Project 30 % : Final Exam
|
A TA
will normally be assigned to grade the projects. |
|
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. |
|