CSC 4201 - Microservices and Cloud Computing

2 lecture hours 2 lab hours 3 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.
Prereq: CSC 3210   or CSC 3320  (quarter system prereq: CS 3840 or CS 3841 or CS 3860)
Note: None
This course meets the following Raider Core CLO Requirement: None
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 application 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


Print-Friendly Page (opens a new window)