This course will cover both fundamental concepts in distributed computing and discuss system designs enabling distributed applications. The objectives of the course include: In-depth understanding of core concepts of distributed computing, including study of both abstract concepts and practical techniques for building system support for distributed applications; construction of distributed system components by doing project work; and understanding of the current state of the art in several areas of distributed systems.
There are several learning outcomes of this course, centered around the following main topics:
- Distributed systems concepts, protocols and mechanisms: Upon successful completion of this course, students will be able to understand the core concepts in distributed computing, such as logical clocks, consistent cuts, consensus, replication and fault tolerance, etc., as well as the common techniques to implement them, so as to build correct and performant distributed systems and applications.
- State-of-the-art developments in distributed systems: Upon successful completion of this course, students will be familiar with multiple practical distributed systems which underpin popular real-world distributed applications and services and will be able to understand how such systems are realized by relying on core distributed computing concepts.
- Interplay of emerging technologies and paradigms and distributed systems: Upon successful completion of this course, students will be able to understand how emerging technology trends concerning new hardware and applications, influence the designs and implementations of distributed systems.
- Practical experience with implementing distributed computing techniques: Upon successful completion of this course, students will be able to solve distributed computing problems and to develop distributed services and applications, by gaining practical experience through a series of programming assignments.
Note: Sample syllabi are provided for informational purposes only. For the most up-to-date information, consult the official course documentation.
Before Taking This Class...
Suggested Background Knowledge
No pre-requisites are enforced. However, you are expected to enter the course with graduate-level understanding of computer systems and/or computer networking, such as you would receive from CS6200, CS6210, or CS6250.
Technical Requirements and Software
- High-speed Internet connection
- Laptop or desktop computer with a minimum of a 2 GHz processor and 2 GB of RAM
- Windows for PC computers OR Mac iOS for Apple computers.
- Complete Microsoft Office Suite or comparable and ability to use Adobe PDF software (install, download, open and convert)
- Mozilla Firefox, Chrome and/or Safari browsers (Note: HonorLock requires students to use Chrome)
All Georgia Tech students are expected to uphold the Georgia Tech Academic Honor Code. This course may impose additional academic integrity stipulations; consult the official course documentation for more information.