Updates on the campus response to coronavirus (COVID-19)

ECE Course Syllabus

ECE6102 Course Syllabus


Dependable Distributed Systems (3-0-3)

Technical Interest
Computer Systems and Software



Catalog Description
Concepts, theory, and practice of dependable distributed systems. Techniques for tolerating hardware and software faults.

No Textbook Specified.

Indicators (SPIs)
SPIs are a subset of the abilities a student will be able to demonstrate upon successfully completing the course.

Outcome 1 (Students will demonstrate expertise in a subfield of study chosen from the fields of electrical engineering or computer engineering):
1.  Explain the concepts of consistency, availability, and network partitioning as they relate to distributed systems and explain the interrelationships and dependencies among them.
2.  Explain the modern distributed system design paradigm called REST (Representational State Transfer) and be able to design a Web service using the REST paradigm.

Outcome 2 (Students will demonstrate the ability to identify and formulate advanced problems and apply knowledge of mathematics and science to solve those problems):
1.  Design and analyze fault-tolerant and secure distributed storage systems to meet given confidentiality, integrity, and availability requirements.

Outcome 3 (Students will demonstrate the ability to utilize current knowledge, technology, or techniques within their chosen subfield):
1.  Build a multi-component cloud-based service using different cloud computing models such as infrastructure-as-a-service, platform-as-a-service, and software-as-a-service within a commercial cloud platform such as AWS or Google Cloud.

Topical Outline
1.	Fundamentals of Distributed Systems

States, events, event ordering, system models, failures, and failure detectors.

2.	Software Replication
Active, passive, and hybrid replication of software.

3.	Group Communication

Properties of different multicasts, causal atomic multicast, and introduction to virtual synchrony.

4.	Global States and Checkpointing

Snapshot algorithms, coordinated checkpoint and rollback, and message logging approaches.

5.	Software Diversity

Operating system, compiler, and algorithmic diversity. Security and robustness through software diversity.

6.	Secure Storage

Byzantine quorum systems; secret sharing techniques, confidentiality and integrity vs. consistency

7.	Distributed Object Systems

Introduction to JAVA RMI, CORBA, and .NET; Fault-Tolerant CORBA.

8.	Distributed Embedded Systems

Algorithms and systems for aerospace, automotive, and manufacturing applications. Mobile computing.

9.	Clustering for Dependability

Availability clusters, resource sharing, failover, network failures, and the split brain problem.