This course provides a practical and programming-oriented introduction to cloud computing with Amazon Web Services (AWS). Students will learn how to build applications using a variety of AWS services, including S3, EC2, Lambda, and ECS. The course will culminate in a final resume-worthy project that will be built, deployed, and demoed.
Check out the final projects that came out of this class last semester!
There are two primary goals of this class:
- To help you become comfortable using and interconnecting AWS services.
- To help you build a project from scratch on AWS, which can be demoed to prospective employers.
A secondary goal of this class is to introduce you to scalable design patterns that can be used to design more efficient systems.
By the end of the semester, the above diagram should make sense to you and you will have all of the necessary skills to be able to replicate it!
- Course: CMSC389L
- Links: [Testudo] [GitHub] [GitBook] [Piazza]
- Prerequisites: C- or better in CMSC330 and CMSC250
- Credits: 1
- Seats: 30
- Lecture Time: Fridays, 3-3:50PM
- Location: CSI 3118
- Semester: Spring 2018
- Textbook: None
- Course Facilitators: Colin King, Andrej Rasevic, Isaac Lockwood
- Faculty Advisor: Neil Spring
Here is the tentative schedule for this semester. Learn more about these services in plain English or from AWS.
Keep in mind that once the final project is released, the length of the codelabs will decrease.
Week | Topic | Codelab |
---|---|---|
1/26/2018 | Introduction and AWS 101 | Codelab 1: Python |
2/2/2018 | Object Storage: S3 | Codelab 2: S3 |
2/9/2018 | Content Delivery Networks: CloudFront | Codelab 3: S3 + CloudFront |
2/16/2018 | Compute 1: EC2 | |
2/23/2018 | Compute 2: EC2 | Codelab 4: EC2 (w/ Wordpress!) |
3/2/2018 | Wind Day 💨🍃 (Campus Closed) | |
3/9/2018 | Now You're Thinking with Queues: SQS | Codelab 5: EC2 + SQS |
3/16/2018 | Load Balancers: ALBs | Codelab 6: EC2 + ALB |
3/23/2018 | Spring Break (Campus Closed) | |
3/30/2018 | FaaS: Lambda | |
4/6/2018 | APIs: API Gateway | Codelab 7: API Gateway + Lambda |
4/13/2018 | Databases: DynamoDB | Codelab 8: DynamoDB + Lambda |
4/20/2018 | Microservices: ECS | Codelab 9: ECS |
4/27/2018 | Search: Elasticsearch Service | |
5/4/2018 | Infrastructure as Code: CloudFormation |
The final project will be an opportunity to apply all of the knowledge that you have gained into an application that you will build from the ground up. The final project is explained in detail here.
You will be required to record and submit a 2-5+ minute video detailing how their project works (this is for posterity purposes, so that you can send it to recruiters!).
You will receive a codelab roughly every week. These codelabs are modeled off of the codelabs that Google uses internally (and externally) to train their employees on the various tools and services that their engineers regularly use. The goal of the codelabs is to help you get your hands dirty working with a wide variety of AWS services. However, there is a vast amount of content that we won't be able to cover so you're encouraged to branch out and explore other parts of these services!
These codelabs will be released at the end of class and will be due at 11:59:59PM the day before class the following week. Codelabs can be submitted via submit.cs.umd.edu.
Students will have access to AWS resources via the AWS Free Tier, which should be more than enough to cover all of the programming assignments in this course. Students may need to create a new AWS account if they have already used their credit. Students will also have access to AWS Educate.
% Total | Assignment | Description |
---|---|---|
40% | Codelabs | Graded for completion (1 can be dropped) |
20% | In-class worksheets | Graded for completion (1 can be dropped) |
40% | Final Project + Demo | A free-form final project with a video demo. |
instructor | Hours | Location |
---|---|---|
Colin King | Wednesday 1-2PM, Fridays 2-3PM, or by appt. | CSIC 3107 (Sandbox) |
Andrej Rasevic | Wednesdays 11:30AM-12:30PM, Fridays 11:30AM-12:30PM, or by appt. | AV Williams 1124 |
Isaac Lockwood | Mondays 1-2PM, Thursdays 445-545PM or by appt. | ESJ 1204 Huddle Room |
Codelabs must be submitted electronically following the instructions given in each codelab assignment. codelabs may not be submitted by any other means (e.g., please do not email your codelabs to us). It is your responsibility to test your program and verify that it works properly before submitting. All codelabs are due at 11:59:59 PM on the day indicated in the assignment.
Unlike lower-level programming classes, we will not always provide you with test cases (e.g., public tests) before codelabs are due. You will be responsible for developing your own tests and for using appropriate testing techniques. We also expect your codelabs to use proper style and documentation.
Grades will be maintained on the CS department grades server.
You are responsible for all material discussed in lecture and posted on the class repository, including announcements, deadlines, policies, etc.
Any request for reconsideration of any grading on coursework must be submitted within one week of when it is returned. No requests will be considered afterwards.
Up to one in-class worksheet may be dropped, for any reason. If you can document that you were at a hackathon or on-site interview, or had to miss class for any university-approved reason, then notify the course instructor in advance and you will be allowed to turn in the worksheet during the following class.
Students can get in contact with the instructors in-person during office hours or online via Piazza. Email should only be used for emergencies and not class related questions (e.g., codelabs).
If you need to reach us directly, we recommend sending a private message on Piazza, but you can also email any of us:
- Andrej Rasevic: arasevic@terpmail.umd.edu
- Colin King: colink@umd.edu
- Dr. Neil Spring: nspring@cs.umd.edu
- Isaac Lockwood: ialock@terpmail.umd.edu
See the section titled "Attendance, Absences, or Missed Assignments" available at Course Related Policies.
See the section titled "Accessibility" available at Course Related Policies.
Note that academic dishonesty includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. In short, all submitted work must be your own. Cases of academic dishonesty will be pursued to the fullest extent possible as stipulated by the Office of Student Conduct.
It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit: http://www.shc.umd.edu.
If you have a suggestion for improving this class, don't hesitate to tell the course staff during the semester in-person, over email/Piazza, or through the weekly feedback surveys. At the end of the semester, please don't forget to provide your feedback using the campus-wide CourseEvalUM system. Your comments will help make this class better.