Intro to Cloud Technology & Foundational Cloud/DevOps Concepts Linux, Python, and Cloud Computing with AWS
Instructors: Cam Flowers and Shafan Sugarman
Program Dates: July 6th - August 29th
Class Times: TU, TH, FR 6:00-9:00 p.m. & SA 10 a.m.- 5:00 p.m.
TA Office Hours: Wednesdays 4:00-6:00 p.m.
Some of the most exciting technological developments are occuring via cloud-based services deployed across the full tech stack. In this first phase of our program we will discuss the fundamentals of cloud-based programming using Linux, Python and deploy essential services utilizing AWS.
As a result of participating in this course, you will be able to explain the fundamental architecture of a cloud based tech stack, demonstrate proficiency in the fundamental scripting languages (BASH, Python), and create cloud based applications using modern frameworks in preparation for a healthy career in DevOps and related fields.
By the end of this course, you will be well-versed in the fundamentals of cloud-based programming in Python. You will be introduced to the Linux Operating System and learn to write scripts that communicate with the kernel. Building on this foundation, Python scripting frameworks are introduced; you will learn the concepts, syntax, and benefits of contemporary cloud computing (e.g. Virtualization, Cloud Storage, Cloud Monitoring). You will be able to develop interactive applications by the midterm of the course. The course will also introduce back-end web application concepts such as databases, application servers and cloud based hosting. By the completion of the course, you will be able to develop cloud managed applications and discuss the benefits of various architectures, design patterns, and elements of production-readyness. Specific concepts and technologies are highlighted in the course schedule below.
This course meets three times a week and once on the weekend to facilitate both lecture and lab components of instruction. This course is intended to reflect industry norms as much as possible; to that end, project delivery and collaboration are emphasized over written homework or assessments. Sessions will not be recorded by default, though some materials may be pre-recorded to facilitate instruction.
This course has no prerequisite courses; however, you are expected to expediently learn new programming languages as they are introduced in this course.
There is a guide of recommended precourse work available here
Tasks and assignments are intended to align with the learning outcomes specified above.
Attendance is a weighed component of this class, students are encouraged to attend all lectures to fully benefit from the delivered material and peer discussion.
In adhering to "real-world" industry norms, this class does not have any required texts, as all course material can be obtained through various free online resources. However, various readings will be recommended during the course of this class and will likely be helpful to student learning.
Student evaluations in this course will be assigned as follows:
-
Attendance
- Intents:
- Reinforce readings/lecture content
- Practice writing code
- Practice using GitHub (delivery/submission vehicle)
- Intents:
-
Lab 1 -- Linux Shell Scripting
- Introduction to Linux OS & Bash
- Intents:
- Demonstrate understanding of Operating Systems
- Demonstrate ability to write Shell scripts in Linux
- Add to students' public GitHub portfolios
-
Lab 2 -- Python Fundamentals
- Python Fundamentals
- Intents:
- Demonstrate practical knowledge of Python
- Demonstrate understanding of Object Oriented architecture
- Add to students' programming knowledge
- Practice code collaboration
-
Lab 3 -- Intermediate Python
- Intermediate Python
- Intents:
- Demonstrate ability to develop a full Python application
- Demonstrate ability to import Python modules
- Demonstrate ability to update and retrieve stored data
- Practice code collaboration
-
Project 1 -- Cloud-Managed Application
- Cloud Managed Application
- Intents:
- Demonstrate ability to connect to aws-cli in Python
- Assess student's understanding of AWS Cloud (Storage, Virtualization and Computing)
- Practice code collaboration and documentation
-
Project 2 -- Final Project
-
Intents: Intermediate Cloud
- Demonstrate intermediate knowledge of cloud based architecture
- Develop a fully cloud managed application and basic scripts for monitoring updates
- Practice design thinking, code collaboration and documentation
- Practice pitching and presentational aspect of live interviews
May change to accommodate guest presenters & student needs.
Week | Date | Content | README | Assigned | Due |
---|---|---|---|---|---|
0 | 6/26 - 7/7 | Onboarding | -- | -- | Precourse Work |
1 | 7/9 - 7/11 | Linux OS | Unit 1 | Lab 1 | Lab 1 |
2 | 7/14 - 7/18 | Python Fundamentals | Unit 2 | Lab 2 | Lab 2 |
3 | 7/21 - 7/25 | Python Fundamentals | Unit 2 | Lab 3 | Lab 3 |
4 | 7/28 - 8/1 | Networking Essentials | Unit 3 | Project 1 | Lab 3 |
5 | 8/4 - 8/8 | Intro to AWS | Unit 4 | Project 1 | -- |
6 | 8/11 - 8/15 | AWS Cloud Computing | Unit 4 | Project 2 | Project 1 |
7 | 8/18 - 8/22 | AWS Cloud Computing | Unit 4 | Project 2 | -- |
8 | 8/25 - 8/29 | Final Projects | Project Reqs | -- | Final Project |
Due -- | TBA | -- | -- | -- | Final Showcase
Each student in this course is expected to abide by a policy of Academic Integrity. Any work submitted by a student in this course for credit will be the student's own work. Collaboration is allowed where assignments are designated as group projects.
You are encouraged to study together and to discuss information and concepts covered in lecture and the sections with other students. You can give "consulting" help to or receive "consulting" help from such students. However, this permissible cooperation should never involve one student having possession of a copy of all or part of work done by someone else, in the form of an e-mail, an e-mail attachment file, a diskette, or a hard copy.
Our team is available to discuss appropriate academic accommodations that may be required for student with disabilities or reasonable accommodations.
We understand that our members represent a rich variety of backgrounds and perspectives. The Instructional Team is committed to providing an atmosphere for learning that respects diversity. While working together to build this community we ask all members to:
- share their unique experiences, values and beliefs
- be open to the views of others
- honor the uniqueness of their colleagues
- appreciate the opportunity that we have to learn from each other in this community
- value each other's opinions and communicate in a respectful manner
- keep confidential discussions that the community has of a personal (or professional) nature
- use this opportunity together to discuss ways in which we can create an inclusive environment in this course and across the community