This course covers the fundamental concepts in the design and implementation of distributed computer systems, and its major branch of Cloud Computing. First, the course gives an overview of the basic concepts in the field of distributed computing, including distributed operating systems, distributed programming models, and design principles of computer clusters. Cloud computing is a major branch of distributed computing in which computing is delivered as a service over a network, whereby resources are rented, rather than owned, by an end user as a utility. The course then covers Cloud Computing with in-depth study of its enabling technologies and main building blocks. Students will gain hands-on experience solving relevant problems through projects utilizing public cloud infrastructures including Amazon Web Services (AWS), Google App Engine, and Microsoft Azure. Topics include distributed system models and enabling technologies, computer clusters for scalable computing, virtual machines and virtualization of clusters and datacenters, design of cloud computing platforms, cloud programming and software environments (Workflow Systems, MapReduce, Spark, Google App Engine, Amazon AWS, Microsoft Azure, and emerging cloud software stacks), grid computing and resource management, and data-intensive distributed computing.
- Recall and explain the fundamental concepts of distributed computing including distributed operating systems, distributed file systems, and design principles of computer clusters.
- Identify and compare virtualization structures and tools, CPU, memory, and I/O virtualization techniques
- Explain and give examples of the motivations behind cloud computing, the evolution of the paradigm, its applicability, benefits, as well as current and future challenges.
- Define and illustrate the basic principles in data center design; cloud management techniques and cloud software deployment considerations.
- Experiment and differentiate cloud storage technologies and relevant distributed file systems, NoSQL databases and object Storage.
- Use and contrast different cloud programming models including MapReduce and Spark
- Experiment and compare the programming support of major cloud service providers including Google App Engine, Amazon Web Services (AWS), and Microsoft Azure.