Learning Outcomes
Knowledge: Understand distributed systems' architectures and communication models. Understand topics on processes of distributed systems. Learn the Blockchain technology and different cryptocurrencies (Bitcoin and Ethereum)
Skills: Use of different protocols for the programming of multi-threaded applications (OpenMP), distributed applications (MPI and ZeroMQ) and GPGPU applications (CUDA)
Course Content (Syllabus)
Introduction to distributed operating systems and their architecture. Processes, vitrualization, the client-server model. Middleware. Multi-tier architectures. The publish-subscribe architecture. Introduction to threads. Context switching. The Amdahl law. Pthreads and OpenMP. The OSI model. TCP/UDP/IP protocols. Types of communication. The RPC protocol. Sockets. ZeroMQ, MPI and the message passing model. Blockchain and bitcoin. GPGPU and processing using graphics processors
Additional bibliography for study
G. Coulouris, J. Dollimore, T. Kindberg, "Distributed Systems, Concepts and Design", 2nd Ed., Addison-Wesley.
P. Sinha, "Distributed Operating Systems, Concepts and Design", IEEE Press.
Nutt, Gary J. Centralized and distributed operating systems, Englewood Cliffs, N.J.: Prentice Hall.
Ben-Ari, M., Principles of concurrent and distributed programming, New York: Prentice Hall