MPCS 56550 Introduction to DevOps (Summer 2025)

Section 1
Instructor(s) Almhana, Rafi (ralmhana)
Location Online
Meeting Times Thursday 5:30pm - 8:30pm
Fulfills Elective Specialization - Software Engineering (SE-2)

Syllabus

This course provides an in-depth introduction to DevOps principles, practices, and tools for modern software development and operations. Students will learn how to integrate development (Dev) and operations (Ops) to enhance software delivery, automation, and scalability. The course covers continuous integration (CI), continuous deployment (CD), infrastructure as code (IaC), monitoring, cloud-native applications, and security. By the end of this course, students will have hands-on experience with tools like Docker, Kubernetes, Terraform, Jenkins, GitHub Actions, Prometheus, and AWS/Azure/GCP.

Learning Objectives

By the end of this course, students will be able to:

  • Understand the core principles of DevOps and its impact on software development and operations.
  • Implement version control and collaboration workflows using Git and GitHub/GitLab.
  • Create and manage CI/CD pipelines with Jenkins, GitHub Actions, or GitLab CI.
  • Use containerization technologies like Docker and container orchestration with Kubernetes.
  • Apply Infrastructure as Code (IaC) using Terraform or Ansible.
  • Monitor applications and infrastructure using Prometheus, Grafana, and ELK Stack.
  • Implement cloud-based DevOps solutions using AWS, Azure, or GCP.
  • Enhance security practices within DevOps, including secrets management, vulnerability scanning, and compliance.
  • Understand site reliability engineering (SRE) principles and incident response best practices.
  • Implement a real-world DevOps project integrating multiple DevOps tools and concepts.

Course Outline

Module 1: Introduction to DevOps & Culture

  • What is DevOps?
  • DevOps vs. Traditional IT
  • DevOps lifecycle
  • DevOps principles

Module 2: Version Control & Git Workflows

  • Git basics and branching strategies
  • GitHub/GitLab workflows (Forking, Branching, Merging, Pull Requests)
  • Managing repositories with Git

Module 3: Continuous Integration & Continuous Deployment (CI/CD)

  • What is CI/CD?
  • Setting up Jenkins, GitHub Actions, GitLab CI/CD
  • Building CI/CD pipelines
  • Deployment strategies

Module 4: Containerization & Orchestration

  • Introduction to Docker and containerization
  • Building and managing Docker containers
  • Introduction to Kubernetes
  • Kubernetes architecture & deployment strategies

Module 5: Infrastructure as Code (IaC)

  • What is IaC and why it matters?
  • Introduction to Terraform, Ansible, and CloudFormation
  • Provisioning infrastructure with Terraform
  • Managing configurations with Ansible

Module 6: Cloud Computing & DevOps

  • DevOps in the cloud (AWS, Azure, GCP)
  • Cloud-native DevOps tools
  • Serverless computing basics

Module 7: Monitoring & Logging

  • Observability and logging in DevOps
  • Introduction to Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana)
  • Setting up monitoring and alerts

Module 8: Security & Compliance in DevOps

  • DevSecOps and security best practices
  • Secrets management (Vault, AWS Secrets Manager)
  • Vulnerability scanning (Trivy, SonarQube)
  • Compliance and auditing in DevOps

Module 9: Site Reliability Engineering (SRE) & Incident Management

  • Introduction to SRE principles
  • Error budgets and SLIs/SLOs/SLAs
  • Incident response and on-call strategies
  • Chaos engineering basics

Grading & Assessment

Assignments

40%

Topic Presentation

10%

Final Project

40%

Participation & Engagement

10%

Tools & Technologies

  • Version Control: Git, GitHub/GitLab
  • CI/CD: Jenkins, GitHub Actions, GitLab CI/CD
  • Containerization: Docker, Kubernetes
  • Infrastructure as Code (IaC): Terraform, Ansible
  • Cloud Services: AWS, Azure, GCP
  • Monitoring & Logging: Prometheus, Grafana, ELK Stack
  • Security: HashiCorp Vault, Trivy, SonarQube

Course Prerequisites

MPCS Students: Core Programming completed (MPCS 51036, or 51040, or 51042, or 51046, or 51100) or Core Programming Waiver.

Non-MPCS Students: Must have completed CMSC 14200, CAPP 30122 or MACS 30122 or MPCS Programming Placement Exam I.

Course request information for non-MPCS students: https://masters.cs.uchicago.edu/student-resources/non-mpcs-student-course-requests/

Other Prerequisites

• Basic knowledge of Linux/Unix systems
• Familiarity with Git version control
• Knowledge of scripting languages (Python, Bash, etc.)

This course requires competency in Unix and Linux. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 51132-1 -- Full Stack Software Engineering
  • MPCS 51260-1 -- Human-Computer Interaction

Eligible Programs

MS in Computational Analysis in Public Policy (Year 1) MS in Computational Analysis in Public Policy (Year 2) MS in Molecular Engineering MA in Computational Social Science (Year 1) MA in Computational Social Science (Year 2) Masters Program in Computer Science Undergraduate - CS Minor Undergraduate - CS Major