ECE 428 - Distributed Systems

Semesters Offered

Official Description

Course Information: Same as CS 425. See CS 425.

Prerequisites

Credit in CS 241 or ECE 391

Subject Area

Computer Engineering

Course Directors

Description

Covers topics needed for a basic understanding of distributed computer systems: Protocols, specification techniques, global states and their determination, reliable broadcast, transactions and commitment, security, and real-time systems.

Notes

Same as CS 425.

Goals

To teach software principles involved in computer networks.

Topics

  • Introduction: Examples of computer networks and distributed systems; concept of layered architecture; ISO reference model of Open System Interconnection
  • Overview of communication subnetworks: Physical layer protocol issues; data link layer protocols; network layer protocol issues (virtual circuits vs. tachogram; local-area network architectures; satellite and packet radio networks; point-to-point packet switched networks; models of network interconnection; standard network access protocols)
  • Transport and session protocol design issues: Transport and connection and connection establishment; flow control and buffering; synchronization in distributed environment; multiplexing; crash recover; networking facilities in well-known systems.
  • Presentation layer protocols: Terminal handling and protocols; file transfer protocol design issues; network security and privacy; standard for presentation of layer protocols
  • Distributed operating system design: Models and primitives of distributed computing; distributed resource management and scheduling (file allocation, load sharing, task assignment, etc.; current topics)
  • Distributed database systems: Distributed database systems; concurrency control and synchronization; current topics; examples of distributed database systems

Detailed Description and Outline

To teach principles involved in the design distributed systems.

Topics:

  • Introduction: Examples of computer networks and distributed systems; concept of layered architecture
  • Overview of communication protocols: Network layer protocols, transport layer
  • Presentation layer protocols: Terminal handling and protocols; file transfer protocol design issues; network security and privacy; standard for presentation of layer protocols
  • Distributed operating system design: Models and primitives of distributed computing; distributed shared memoery.
  • Distributed database systems: Distributed database systems; concurrency control and synchronization; current topics; examples of distributed database systems

Same as CS 425.

Computer Usage

Programming assignments, each of which is a problem statement to be solved by writing and debugging a computer program.

During 2015-2016 academic year, only the 4-hour section was required to perform programming assignments. In future semesters, we plan to require one programming assignment for the 3-hour section, and three programming assignments for the 4-hour section.

Topical Prerequisites

  • Data structures
  • Systems programming concepts

Texts

Coulouris, Dollimore, Kindberg, Blair, Distributed Systems: Concepts and Design, 5th Edition, Addison-Wesley.

ABET Category

Engineering Science: 67%
Engineering Design: 33%

Course Goals

This course is a technical elective for ECE majors, and attracts a diverse set of students from the ECE and CS departments, ranging from juniors to graduate students. The objective of this course is to provide students with a foundation in distributed systems, with a basic introduction to computer networks. This course complements ECE/CS 438, which focuses on the fundamental concepts in computer networks. Through a combination of theoretical studies, practical protocol design, analytical problem solving, and open ended design problems, students develop the ability to critically evaluate distributed systems, understand the fundamental concepts in distributed systems, and design new solutions to adapt existing distributed systems to emerging technologies.

Instructional Objectives

A. By the time of exam #1 (after 13 lectures) the students should be able to do the following:

  1. Basics: Understand the basics of time synchronization, causality, logical timestamps, vector timestamps, etc. (a)
  2. Classical Problems: Understand seminal solution to classical distributed computing problems such as global snapshots, mutual exclusion, leader election, multicast, and failure detectors, etc. (a)
  3. Impossibility Results: Understand impossibility results such as for distributed consensus. (a)
  4. Large-Scale Systems: Understand the design of large-scale distributed systems such as peer-to-peer and sensor networks. (a,e)
  5. Networking Basics: Understand the basics of networking, including the concept of protocol layering, the functions of each layer, and the relationship between the different layers. Understand the basic concepts of packet-switching and circuit-switching, broadcast and point-to-point networks. Understand the concepts of IP addressing and routing. Design the addressing scheme for simple IP networks with multiple subnetworks. (a,c,k)

B. By the time of exam #2 (after 32 lectures) the students should be able to do the following:

  1. RPCs: Understand the basics of Remote Procedure Call, and different flavors of it. Understand the concepts of stubs, stub generators, and marshalling parameters. (a)
  2. Transactions and Concurrency Control: Understand and prove the necessity of the ACID criteria for transactions: atomicity, consistency, isolation, and durability. Solve problems involving serialization and consistency of interleaved transactions. Understand handling of concurrent transactions. Understand distributed transactions. Understand Replication Control. (a,e)
  3. Distributed File Systems: Understand the concepts and design of distributed file systems. Compare different types of file systems. Understand solutions for distributed file systems for different practical environments, such as a file system for partially connected operation, a file system for low bandwidth connectivity, and a web file system. (a)
  4. Security: Understand authentication protocols using the public key/private key and shared key cryptosystems, and variants of the Needham Schroeder protocols. Study the Kerberos security protocol and design implementation variations of Kerberos. Study PGP and its applications. Understand the RSA key generation algorithm, and solve problems relating to the generation of public/private keys using RSA. (a,c,k)
  5. Distributed Shared Memory: Understand the basics of distributed shared memory, update vs. invalidate rules. (a,k)

In addition to the above topics, students are also exposed to the latest developments in networking and distributed systems. The reading material for these topics may be drawn form Internet Drafts and protocol standards, or published literature, thereby introducing students to current day developments and also building the bridge between the fundamental design principles in distributed systems to state-of-the-art applications of these principles. (e,j)

Last updated

3/8/2016by Nitin H. Vaidya