CS 455 covers fundamental issues involved in building distributed systems. The course examines issues related to concurrent programming, thread pools and safety, non-blocking I/O, scalable server design, file system design, distributed mutual exclusion and deadlock detection, consensus and consistency, pipelining schemes, distributed objects, MapReduce, and Spark.
CS455 is geared towards senior undergraduate students and also first-year graduate students who have not taken such an introductory course. Introduction to distributed systems builds upon system concepts related to processes, storage management and critical sections in centralized single-CPU systems.
By the end of the course, students should be able to:
- Build scalable servers using thread pools that leverage lightweight concurrency primitives
- Understand the role of overlays in content disseminations
- Write MapReduce programs that execute concurrently on multiple machines
- Design complex analytic tasks using Spark
- Understand the design of file systems from the ground up
- Design efficient data representation formats for communications between distributed components
Extensive experimentation through programming assignments in Java is a principal activity of this course. These assignments will focus on developing skills that are immediately transferrable to building real-world systems.
This course can be applied toward:
CS 370 (Operating Systems) with a C or better.
Computer Science majors and minors only.
Textbooks and Materials
The subject matter covered in this course will reference several textbooks and papers. There are two optional textbooks for this course.
Distributed Systems: Principles and Paradigms. Andrew S. Tanenbaum and Maarten van Steen. 2nd Edition. Prentice Hall. ISBN: 0132392275/978-0132392273.
Distributed Systems: Concepts and Design. George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair. 5th Edition. Addison Wesley. ISBN: 978-0132143011
Dr. Pallickara is a Professor in the Department of Computer Science at Colorado State University. He does research in distributed systems and predictive analytics with a focus on using machine learning, probabilistic, ensemble, and statistical techniques to address scaling, autonomy, forecasting, and tractability issues.
Agencies in the United States and United Kingdom have funded his research. He is a recipient of the National Science Foundation's CAREER award and funded through the Department of Homeland Security's Long Range program. Other sponsors include the Environmental Protection Agency, Department of Agriculture, and the U.K's e-Science program.
His research has been harnessed in domains such as healthcare, epidemiological modeling, brain computer interfaces, agriculture, earthquake science, high-energy physics, environmental and ecological monitoring, defense applications, geosciences, GIS, and commercial internet conferencing systems.