Syllabus

Instructor

Xiaohui Helen Gu, gu AT csc.ncsu.edu, EB-II rm 3274, 919-513-7578

Text Books

There are no assigned textbooks for this course. Topics will be covered during in-class lectures, and through course notes made available on this web page.
Links to the supplementary material in the form of research papers related to each topic are included in this syllabus. PDF for most papers is available through the NCSU library web site, which has full-text access to most recent ACM and IEEE journals and conferences. A number of supplemental distributed system textbooks are also available:

Distributed Systems: Concepts and Design, (4th Edition), G. Coulouris, J. Dollimore, and T. Kindberg
Distributed Systems (2nd Edition), Sape Mullender
Distributed Systems: Principles and Paradigms, Andrew S. Tanenbaum, Maarten van Steen

Prerequisites

CSC501, CSC 246 or equivalents. Programming in C++ or Java in Unix environment.

Course purpose

Distributed systems have become the fundamental computing infrastructure for many important real-world applications such as Internet search engine, media streaming servers, online file sharing, information analytics, and scientific exploration. This course explores design and implementation principles in modern distributed systems. In particular, the course will emphasize on recent techniques used by real-world distributed systems such as peer-to-peer file sharing (e.g., BitTorrent), enterprise data center, and Internet search engine (Google). Students will learn the state of the art in distributed system architectures, algorithms, and performance evaluation methodologies.

Course objectives

This course explores design and implementation principles in modern distributed systems. In particular, the course will emphasize on recent techniques used by real-world distributed systems such as peer-to-peer file sharing (e.g., BitTorrent), enterprise data center, and Internet search engine (Google). Students will learn the state of the art in distributed system architectures, algorithms, and performance evaluation methodologies. Topics include canonical distributed concepts such as remote procedure call, distributed objects, replication, distributed system security, concensus protocol, and recent distributed system technologies such as peer-to-peer/Grid/overlay systems, autonomic computing, distributed massive data processing/Google map-reduce, system machine learning,  distributed system debugging, multi-core systems, distributed virtualization. On completing this course, the student should be able to the following:

  • Identify research problems and challenges in distributed systems, (assessed by review and presentation);
  • List the state-of-art tools and techniques for addressing research problems and challenges in distributed systems (assessed by review and presentation);
  • Develop and implement new ideas to solve open problems in  distributed systems (assessed by project);
  • Conduct technical reviews, technical writing, and technical presentations (assessed by review, project, paper, presentation).
gu AT csc.ncsu.edu