The knowledge of distributed computing and
middleware has become essential in today's network-centric computing
environment. The course aims at conveying the insight into, and knowledge
of, the fundamental concept, principles, and state-of-the-art practice
underlying the design of distributed systems. The topics covered in this
course include fundamentals of distributed computing, software agents,
naming services, distributed transactions, Blockchain, security management, distributed
object-based systems, middleware-based application design and development,
case studies of middleware, and important Internet applications (such as
VoIP, P2P file sharing, etc.).
Upon completing this course, the students are
expected to understand the basics of distributed systems and middleware and
hands-on experience, and to be prepared for active research at the
forefront of these areas.
Please keep an eye on this news box for the latest.
Spring 2020
|
1.
Kick-off meeting held in Howe 1344.
3.
More to be added.
|
The knowledge of distributed computing and
middleware has become essential in today's network-centric computing
environment. This course will give the undergraduate and graduate students
both the fundamental knowledge and hands-on practice, make the students to
be more current with the industry practices, and prepare the students for
active research at the forefront of these areas.
The topics covered in this course include fundamentals of distributed
computing, software agents, naming services, distributed transactions,
security management, distributed object-based systems, Blockchain, secure microkernel OS, middleware-based
application design and development, and case studies of middleware. More
details can be found in the course outline.
The course will consist of three challenging programming projects (i.e.,
machine problems), two exams (mid-term and final exams), and one term
paper. We will have a small number of homework, demonstrations (on your
course projects), and presentations (on your term papers). Both
undergraduate and graduate students should finish the required programming
projects.
For term paper, a list of selected topics/problems
will be given. You can also propose your own one. But we will have
different requirements for undergraduate and graduate students:
·
Undergraduate
students: Write a 6-pages literature survey on a
specific topic based on the reading of at least 10 papers published within
the past five years.
·
Graduate
students: Write a 8-pages term paper, including
defining a specific problem, surveying existing work, developing a (better)
solution, and evaluating your results.
The paper format will be double column and single
space and should conform to the standard format for IEEE transactions. You
can use either Latex or WORD. More information please refer:
http://www.ieee.org/organizations/pubs/transactions/stylesheets.htm.
For each topic covered in the class, I will provide
you a suggested reading list including a number of selected classical
papers and some recent papers published on the top distributed systems
conferences/journals (within the past five years). Please see the suggested
reading list on Canvas.
Required Textbook:
·
S.
Tanenbaum and M. V. Steen, Distributed Systems: Principles and Paradigms,
Second Edition, Prentice Hall, 2006, ISBN: 0132392275.
Reference Books:
·
G. Coulouris, J. Dollimore, and
T. Kindberg, Distributed Systems: Concepts and
Design, 3rd Edition, Addison-Wesley, 2000, ISBN: 0201619180.
·
R.
Anderson, Security Engineering: A Guide to Building Dependable
Distributed Systems, John Wiley & Sons, 2001, ISBN: 0471389226.
·
Alberto
Leon-Garcia and Indra Widjaja,
Communication Networks: Fundamental Concepts and Key Architectures,
First Edition, McGraw-Hill Companies, Inc., 2000, ISBN 0-07-022839-6.
·
W.
Richard Stevens, Advanced Programming in the UNIX
Environment, First Edition, Addison-Wesley Pub Co., 1992, ISBN 0201563177.
·
R. Otte, P. Patrick, and M. Roy, Understanding CORBA,
Prentice Hall, 1996, ISBN: 013459884-9.
·
Nancy Lynch, Distributed
Algorithms, Morgan Kaufmann Publishers,
San Mateo, CA, 1996.ISBN: 1-55860-348-4.
In addition, for each topic covered in the class, I
will select a number of papers (most were published within the past five
years). Please see the suggested
reading list on Canvas
Lecture slides will be available before class at
Canvas.
Familiarity with the basic concepts in operating
systems (CprE 308 or ComS
352). It will be good if you have taken a general networking course (CprE 489), or any equivalent.
The total point is 100 and will be based on the
following grading criteria:.
1.
Mid-term & Final Exam: 30%
2.
Course Projects: 40%
3.
Term Papers: 20%
4.
Quizzes and Presentation: 10%
Academic Policy:
·
All
incidents of academic dishonesty will be dealt with according to the
university policy. No exceptions.
a.
All
references must be properly cited, including
internet web pages (URL must be provided). If plagarism
is detected, i.e. without proper citation and quotation, you will
automatically receive an F. When in doubt, please ask the instructor
if it is reasonable to include other's work in your assignments.
·
Due
dates for term papers and course projects are hard except that you have
reasonable reason. However, for the whole semester, you can have at most one time three-day extension.
·
If
you have a disability and require accommodations, please contact the
instructor early in the semester so that your learning needs may be
appropriately met. You will need to provide documentation of your
disability to the Disability Resources (DR) office, located on the main
floor of the Student Services Building, Room 1076, 515-294-7220
Dr. Yong Guan, Department of Electrical and
Computer Engineering, Iowa State University, Ames, IA 50011. Office: Coover 3219. Email: yguan@iastate.edu. Phone: (515)
294-8378. Fax: (515) 294-8432.
Lecture: Tuesday & Thursday, 9:30-10:45am, 1344
Howe.
Instructor Office Hours: Tuesday,
11:00-11:59am, Durham 309. You are welcome to
drop by or email me to schedule a longer time to meet after class.
In this course, we will study fundamental concepts
and theory in the design of distributed operating systems. Throughout the
course, we will try to relate the material covered to the support of
large-scale applications and services on the Internet. We will tentatively
discuss the following topics:
·
Introduction
o
Characterization
of Distributed Systems
o
Network
OSs vs. distributed OSs
o
Middleware
o
Research
and design issues
·
Inter-process
Communication, Remote Procedure Call, and Remote Object Invocation
o
Issues
in message passing
o
Client-server
communication
o
Case
study: Pipe, Shared Memory, and Message Queue
o
Design
issues for RPCs and RMIs
o
Case
study: Sun RPC and Java RMI
·
Distributed
Naming Services
o
Names,
addresses, routes, capabilities
o
Naming
facilities, name distribution, name resolution
o
Migration
·
Synchronization
o
Event
ordering / synchronization
o
Centralized
vs. distributed schemes
o
Election
Algorithms
o
Mutual
Exclusion
·
Group
Communication
o
Ordered,
reliable, and casual multicast
o
Group
membership
o
Atomic
group multicast
o
Virtual
synchrony
o
Case
study: ISIS
·
Consistency
and Replication
·
Distributed
Shared Memory
o
Shared
memory
o
Consistency
models
o
Design
issues
o
Case
studies: Ivy/Munin/Treadmarks
·
Blockchain
·
Distributed
Object-based Systems
o
CORBA
o
DCOM
o
Globe
·
Distributed
File Services
o
Model
o
Case
study: NFS, AFS, CODA
o
Modern
Systems: OceanStore
·
Supporting
Internet Applications of the Future
o
Issues
o
Active
networks
o
Peer-to-Peer
o
VoIP
o
IPTV
o
Cloud
Computing
·
Fault
Tolerance and Failure Recovery in Distribute Systems
·
Security
in Distribute Systems
o
Issues
o
Secure OS, seL4, seLinux
o
Key
Management
o
Secure
Group Management
o
Case
Study: KERBEROS, Electric Payment Systems, such as latest development of
VISA's on-line payment protocol, etc.
Further Information
For further information, please contact Yong Guan
(yguan@iastate.edu) by email or drop by office Durham 309.
|