The course focuses in teaching the distributed systems concepts through projects. The lectures prepare the students to execute the assignments.

##### Lecture 1

###### January 19th, 2021

Students should understand what the course is about and what is expected from them.

TOPICS- Introduce students to the course format
- Introduce students to Cyberinfrastructure, Airavata, Applied Distributed Systems
- Introduce students to project Themes

##### Lecture 2

###### January 21st, 2021

Students should further understand the expectations from course and project action plan.

TOPICS- Discuss expected time commitments.
- Introduce Cloud Native and Microservice Concepts.
- Introduce students to Lecture Topics.

##### Lecture 3

###### January 26th, 2021

User-Centric Design

TOPICS- User Centric Design
- Napkin Diagrams, Flow Charts, UX Mockups
- Details on Project #1

##### Lecture 4

###### January 28th, 2021

Git Overview

TOPICS- Git Branching Styles
- Open Source Project Governance

##### Lecture 5

###### February 2nd, 2021

Students should understand data models and start defining them for the projects.

TOPICS- Data Serialization: Protocol Buffers, Thrift
- Binary RPC: Thrift, gRPC, Avro

##### Lecture 6

###### February 4th, 2021

Messaging and Microservices

TOPICS- Microservices messaging
- Rabbit-MQ concept overview

##### Lecture 7

###### February 9th, 2021

Students should understand how to use binary data serialization frameworks

TOPICS- Protocol Buffers Data Serialization
- gRPC and Thrift Binary RPC Frameworks

##### Lecture 8

###### February 11th, 2021

Students should understand basic concepts of log centric architectures, fault tolerance, and scaling out messaging throughput by examining Apache Kafka as a case study.

TOPICS- Characteristics of cloud native systems: fault tolerance and configurable scalability
- Basic concepts of log-centric architecture
- Apache Kafka case study

##### Lecture 9

###### February 18th, 2021

Students should understand the basics of the log-centric systems and distributed state machine management

TOPICS- Queue-centric distributed systems
- Log-centric distributed systems

##### Lecture 10

###### February 23rd, 2021

Students should understand the basics of the Raft consensus protocol

TOPICS- Raft basics
- Leader election

##### Lecture 11

###### February 25th, 2021

Containers Introduction

TOPICS- Project 2 Reflections
- Containers

##### Lecture 12

###### March 2nd, 2021

##### Lecture 13

###### March 4th, 2021

##### Lecture 14

###### March 11th, 2021

Container Orchestration

TOPICS- Cluster Management Frameworks
- Kubernetes

##### Midterm Presentations 1

###### March 16th, 2021

Teams will present the project

Project Teams- Panorama, Persona, PingIntelligence

##### Midterm Presentations 2

###### March 18th, 2021

Teams will present the project

Project Teams- PixelGram, Scrapbook, Swishh

##### Lecture 15

###### March 23rd, 2021

Jetstream Overview

TOPICS- Jetstream Cloud Introduction
- Goals for CI/CD

##### Lecture 16

###### March 26th, 2021

Infrastructure as Code

TOPICS- Automating Deployments
- Ansible
- Rancher for Kubernetes

##### Lecture 17

###### March 30th, 2021

Students will understand integration and unit testing for microservices

Topics- Testing pyramid for microservices
- Integration tests
- Unit tests

##### Lecture 18

###### April 1st, 2021

Operational Testing

Topics- Risk Registers
- Load, Stress, Soak testing

##### Lecture 19

###### April 6th, 2021

Control Plane Technologies

Topics- Cloud Native defination
- Zookeeper
- etcd, Consul

##### Lecture 20

###### April 8th, 2021

##### Lecture 21

###### April 13th, 2021

##### Lecture 22

###### April 15th, 2021

##### Lecture 23

###### April 20th, 2021

##### Final Presentations 1

###### April 27th, 2021

Teams will present the project

Project Teams- Swishh, Scrapbook, PixelGram

##### Final Presentations 2

###### April 29th, 2021

Teams will present the project

Project Teams- PingIntelligence, Persona, Panorama