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.
Prereq: CSC 5120 , CSC 1120, or instructor consent based on equivalent software design experience (quarter system prereq: CS 2852)
Note: This course is open to qualified undergraduate students. If a student has relevant industry experience as determined by the program director, an elective may be substituted for this course.
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


Print-Friendly Page (opens a new window)