Apr 27, 2024  
2023-2024 Graduate Academic Catalog-June Update 
    
2023-2024 Graduate Academic Catalog-June Update [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

CSC 5201 - Microservices and Cloud Computing

4 lecture hours 0 lab hours 4 credits
Course Description
This course introduces the concepts, architectural, and practical techniques needed to design and implement cloud-native microservices. Students will design, implement, deploy, and operate a microservice using widely used technologies and current best practices. Emphasis will be placed on scalable web and machine learning services. Students will apply what they learn in a series of hands-on lab exercises and complete a final project using a distributed computing platform. This course is open to qualified undergraduates. (prereq: CSC 5120  or instructor consent based on equivalent software design experience)
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • Leverage containerization to package and run software 
  • Design and implement a basic microservice that interacts through REST APIs, implements access control, uses distributed storage systems, and is deployed in a containerized form 
  • Apply access control patterns using authentication and authorization following security best practices 
  • Analyze and identify potential throughput, scalability, reliability, and consistency issues with distributed microservice architectures 
  • Create and manage continuous integration and deployment to automate software related to microservices and pipelines 
  • Deploy a multi-service distributed application using a container orchestration tool 

Prerequisites by Topic
  • Version control/Git
  • Proficiency in a high-level object-oriented programming language including use of data structures, designing classes, and applications of software design techniques
  • Introductory knowledge of database languages (e.g., SQL) for querying, manipulating, and basic management of databases
  • Design and implementation of simple relational database applications
  • Introductory knowledge of client-server and event-driven programming paradigms, including an example of networked communication
  • Use of web application programming interfaces
  • Design and implementation of simple web services using server-side technologies
  • Familiarity with the Linux command-line or similar

Course Topics
  • Virtual machines and containers and associated best practices for writing containerized, stateless applications 
  • Microservice architectures and implementation patterns including event-driven architectures and designing and implementing REST APIs 
  • Distributed storage systems (e.g., key-value stores, columnar stores, object stores, distributed file systems, and relational databases), tradeoffs between consistency, availability, and partition tolerance, and efficient access patterns 
  • Continuous integration and deployment technologies and usage patterns 
  • Tooling for orchestration and deployment of multi-service systems 
  • Software, Function, Platform, and Infrastructure as service paradigms and implementing systems 
  • Discussion of public cloud services and comparisons of their offerings 

Coordinator
Dr. RJ Nowling



Add to Portfolio (opens a new window)