## Weekly Lectures

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

Project report tenmplate

### Lecture 1 - January 11th, 2019

- Goal: Students should understand what the course is about and what is expected from them.
- Topics:
- Introduce students to software as a service life cycle
- Introduce students to Distributed Systems
- Introduce students to Lecture Topics
- Introduce students to project Themes

- Class Overview Slides

### Lecture 2 - January 18th, 2019

- Goal: Students will understand how to make good napkin drawings, map these to their architectures, and keep the two distinct.
- Topics:
- Napkin drawing principles, review and refinement of student team efforts.

### Lecture 3 - January 25th, 2019

- Goal: students will understand the the use of Git and GitHub, open source governance. Students will have firm understanding of their initial microservice system and its communications.
- Topics:
- Git and GitHub
- Microservices: distributed components, APIs, and communications

- Git Lecture Slides

### Lecture 4 - February 1st, 2019

- Goal: students will understand inter-service communication patterns and APIs for microservices.
- Topics:
- Messaging basics, RabbitMQ
- APIs and Data Models with Apache Thrift

- Messaging Slides

### Lecture 5 - February 8th, 2019

- Goal: Students will understand basics of continous integration and deployment concepts and how they apply to microservices
- Topic: Continuous Integration and Deployment
- CI/CD Lecture Slides

### Lecture 6 - February 15th, 2019

### Lecture 7 - March 22nd, 2019

- Goals:Students will understand the basics of log-centric architecture with Apache Kafka; students will understand the basics of container management with Kubernetes.
- Kafka Lecture Slides
- Kubernetes Material

### Lecture 8 - March 29nd, 2019

- Goals: Students will understand the basics of the RAFT consensus protocol for distributed state machines
- RAFT Lecture Slides

### Lecture 9 - April 5th, 2019

- Goals: Students will understand how RAFT clusters are updated and how this may be applied to continuous deployment scenarios; students will understand Byzantine Failures in RAFT and some counter measures.
- RAFT Lecture Slides

### Lecture 10 - April 19th, 2019

- Goals: Students will understand basic security concepts for science gateways and other distributed systems.
- OAuth2 Lecture Slides