Skip to content


Repository files navigation

CMSC389L: Practical Cloud Computing with AWS

AWS Diagram

Course Description

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!

Course Goals

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 Details


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

Final Project

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

Computing Resources

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.


Office Hours

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

Codelab Submission

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.

Grading Fine Print

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.

Course Staff Communications

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:

Excused Absence and Academic Accommodations

See the section titled "Attendance, Absences, or Missed Assignments" available at Course Related Policies.

Disability Support Accommodations

See the section titled "Accessibility" available at Course Related Policies.

Academic Integrity

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:

Course Evaluations

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.

Inspired by the CMSC389K syllabus.


Syllabus for CMSC389L, a project-oriented introduction to cloud computing (UMD Spring 2018)






No releases published


No packages published