Switch branches/tags
Nothing to show
Find file Copy path
50c32fa Sep 24, 2018
2 contributors

Users who have contributed to this file

@laszewsk @Vafa-Andalibi
380 lines (319 sloc) 24.2 KB

e516: Engineering Cloud Computing

🎓 Learning Objectives

  • This is the syllabus of the class. It will be updated throughout the semester, so look here for changes.
  • Identify if this is the right class for you.
  • Enroll if you want to take this class.
  • Avoid an incomplete.

This is an introductory class. In case you like to do research and more advanced topics, consider taking an independent study with Dr. von Laszewski.

Course Description

This course covers basic concepts on programming models and tools of cloud computing to support data intensive science applications. Students will get to know the latest research topics of cloud platforms, parallel algorithms, storage and high level language for proficiency with a complex ecosystem of tools that span many disciplines.

Course Objectives

The course has the following objectives:

  • Provide a basic introduction to cloud computing
  • Introduce the concept of cloud data centers
  • Get familiar with cloud infrastructure as a Service such as OpenStack, Azure, or AWS
  • Get familiar with cloud infrastructure such as Docker and Kubernetes
  • Program cloud services
  • Understand the differences between virtual machines and containers
  • Develop sophisticated programming language independent REST services
  • Learn advanced programming models for clouds such as Map/Reduce, Messaging, and GraphQl
  • Exploration of Go for cloud computing
  • Demonstrate knowledge of clouds while developing a significant project
  • Explore state-of-the-art cloud technologies and services while providing a tutorial and summary and commenting on its use for the cloud
  • Learn how edge computing is enhancing cloud services and infrastructure
  • Learn how to set up a cloud based on using commodity hardware

Learning Outcomes

  • Be able to explain the concepts of the cloud computing paradigm including its paradigm shift, its characteristics, and the advantages. Contrast them with the challenges and disadvantages.
  • Be able to identify infrastructure and programming models needed to support real world applications.
  • Be able to implement a real world application or deploy a cloud and its services.
  • Be able to conduct sophisticated performance analysis of cloud services.
  • Be able to communicate the results through tutorials, manual, and reports.
  • Be able to work in a team to develop collaboratively software or contribute collaboratively to develop tutorials for clouds.

Course Syllabus

Dates Unit Title Description
08/24 1 Introduction Gregor von Laszewski☁️
08/24 [Class summary](E516 Summary)☁️
08/24 Definition of Cloud Computing☁️
08/31 2 Tools Tools and Services
08/31 - Virtual Box☁️
08/31 - Vagrant☁️
08/31 - Github☁️
08/31 - Linux☁️
08/31 3 Python Python
08/31 - Introduction☁️
08/31 - Installation☁️
08/31 - [Interactive Python](#interactve python)☁️
08/31 - Editors☁️
08/31 - Basic Language Features☁️
08/31 - Modules☁️
08/31 - Data Management☁️
08/31 - Matplotlib☁️
08/31 - Cloudmesh Commandshell CMD5☁️
09/13 - OpenCV☁️
09/13 - Secchi Disk☁️
09/03 Data Center
09/10 4 Architectures - NIST Big Data Reference Architecture☁️
09/13 - Cloud Architectures ☁️
09/15 - NIST Big Data Reference Architecture☁️
09/24 5 Virtualization Virtualization, Qemu, KVM, Virtual machines☁️
09/24 5 Virtualization I - Qemu☁️
09/15 6 Infrastructure Infrastructure as a Service☁️
09/17 - Azure ☁️
09/17 - AWS ☁️
09/17 - OpenSTack ☁️
09/17 Chameleon Cloud - Chameleon Cloud
09/17 - Resources☁️
09/17 - Hardware☁️
09/17 - Charge☁️
09/17 - Quick start☁️
09/17 - KVM user guide☁️
09/17 - CLI☁️
09/17 - Horizon☁️
09/17 - Heat☁️
09/17 - Baremetal☁️
09/17 - FAQ☁️
⭕️ 10/01 Virtualization II Containers, Docker, Kubernetes
10/08 8 Programming Python for Cloud Computing,
10/08 - Libcloud☁️
10/08 - Github as a Cloud Service☁️
09/11 - REST Services☁️
09/11 - Rest Services with OpenAPI☁️
09/11 - OpenAPI Spec☁️
09/11 - OpenAPI Codegen☁️
⭕️ 10/22 9 Map/Reduce Map/Reduce, Hadoop, Spark
10/29 10 Messaging Messaging
10/29 11 Messaging - MQTT☁️
⭕️ 11/05 - Graphql
⭕️ 11/19 12 Go Go Introduction☁️
⭕️ 11/19 - Go Links☁️
⭕️ 11/19 - Go Install☁️
11/19 - Go Editors☁️
⭕️ 11/19 - Go Language☁️
⭕️ 11/19 - Go Libraries☁️
⭕️ 11/19 - Go cmd☁️
⭕️ 11/19 - Go Cloud☁️
⭕️ 11/19 - Go REST:cloud
⭕️ 11/19 - Go for the Cloud:cloud
⭕️ 12/03 13 Edge Computing Edge Computing and the Cloud


Dates Unit Title Description
09/13-11/02* A1 Tutorial Contribute a significant tutorial. Do not develop redundant or duplicated content.
09/13-11/02* A2 Chapter Contribute a significant chapter that may use your tutorial to the class documentation. Do not develop redundant or duplicated content.
09/24-11/26* A3 Project Type A Build a cloud out of Raspberry PIs
09/24-11/26* Kubernetes, Hadoop, SLURM + OpenAPI Service,
09/24-11/26* Project Type B Build a Significant OpenAPI REST Service
09/24-11/26* Project Type C Build an Edge Service Interfacing with a Cloud
09/24-11/26* Project Type D Contribute to the new Cloudmesh code
09/24-11/26* Project Type E Your own Project Type A, B, C, D [upon approval)

Legend markings

  • Class released |
  • Class under development ⭕️

Students need only to do one project. The project is conducted thought the entire semester.

  • Dates may change as the semester evolves

  • The project is a long term assignment (and are ideally worked on weekly by residential students). It is the major part of the course grade.

(*) Tutorials prepare you for documenting a technical aspect related to cloud computing. It is a preparation for a document that explains how to execute your project in a reproducible manner to others.

  • all times are in EST

Additional Lectures will be added that allow easy management of the project. These lectures can be taken any time when needed

Date Unit Title Description
anytime 1 Scientific Writing I
anytime Plagiarism How to avoid plagiarism and cheating
anytime Markdown How to use markdown
anytime 1 Scientific Writing II
anytime Writing a Project Report How to write a high quality Project report following our template
anytime Bibliography Management How to easily manage bibliographies for your Project Report
anytime 1 Class Communication
anytime Class Github How to use the class Github
anytime Class Piazza How to use the class Piazza

If you follow our template writing the report is like filling out a simple form.


This course is focusing on the principal "Learning by Doing" which is assessed by simple graded and non-graded act-ivies. The assessment may include comprehension of the material taught, programming assignments, participation in online discussion forums, or the contribution of additional material to the class showcasing your comprehension.

The comprehension is also measured by the development of a tutorial in markdown that can be distributed and replicated to other students. This is done in preparation for the project that must include a simple deployment and runtime instruction set.

The main deliverable of the class is a project. The project is assessed through the following artifacts:

  1. Deployment and install instructions,
  2. Project report (typically 2-3 pages per month, tutorial and chapters can be reused if possible),
  3. Working project code that can be installed and executed in reproducible manner by a third party
  4. Code developed by the project team distributed in
  5. Project progress notes checked into github throughout the semester. Each week the project progress is reported and will be integrated into the final grade.
  6. three discussions or progress reports with the instructors about your project

The grade distribution is as follows

  • 10% Comprehension Activities
  • 10% Tutorial
  • 10% Chapter
  • 70% Project

As the project is the main deliverable of the course it is obvious that those starting a week before the deadline will not succeed in this class. The project will take a significant amount of time and fosters the principal of "Learning by Doing" at all stages throughout the semester.

The class will not have a regular midterm, but it is expected that you have worked on your project and can provide a snapshot of the progress outlining the goals of the project and how you will achieve these goals till the end of the semester.

The final Project is due Dec. 1st. Issues with your project ought to have been discussed before this deadline with the TA's The TAs will in the next 14 days go over the projects and evaluate mayor and minor issues that you may be able to fix without penalty. Larger changes will receive a grade penalty. The last fix (upon approval) possible will be Dec 7th.


Please see the university regulations for getting an incomplete. However, as this class uses state-of-the-art technology that changes frequently, you must expect that an incomplete may result in significant additional work on your behalf as your project may need significant updates on infrastructure, technology, or even programming models used. It is best to complete the course within one semester.


Assignment # Event Date
Full Term 16 Weeks
Begins Mon 08/20
1, 2 Bio, Notebook assigned Mon 08/20
1, 2 Bio, Notebook due Mon 08/27 9am
3 Tutorial assigned Mon 09/03
4 Chapter assigned Mon 09/03
5 Project selection or proposal Mon 09/03
Labor Day Mon 09/03
5 Project update 10/05 9am EST
Fall Break 10/05 - 10/07
Auto W Sun 10/21
5 Project update 11/02 9am EST
3 Tutorial due 11/02 9am EST
4 Chapter due 11/02 9am EST
Thanksgiving 11/18 - 11/25
5 Project due 11/26 9am EST
5 Project (no penalty) improvements 11/26 - 12/03 9am EST
5 Project (with penalty) improvements 12/04 - 12/07 9am EST
Final Deliverables due 12/07 9am EST
Grading 12/01 - 12/14
Ends Fri 12/14
grade submission to school Fri 12/14
grade posting by registrar 12/31
  • TA's must be available till all grades have been submitted.
  • Bio: a formal 3 paragraph Bio
  • Notebook: a markdown in which you record your progress of this class in bullet form
  • All times are in EST
  • Dependent on class progress Comprehension Assignments may be added