Course Description:
This course teaches cloud computing concepts and cloud programming skills
on the real cloud platforms(AWS/Openstack).
The course will be mixed between labs and lectures.
The goal of this class is to let you be able to implement a diverse range
of applications in a short period time by taking advantage of a cloud
platform.
Therefore, a final project will be taken place in the form of a semi-
hackathon event.(Explain in details below.)
Some coding assignments will also be given after each lab, so the loading
won't be light, and be prepared to spend time and efforts on this course.

Course Agenda:
PartI: Introduction (All lectures: 2.5 weeks)
(1)Cloud Computing Intro
(2)BigData & IoT Intro

PartII: Public Cloud Platform: AWS (All labs: 6.5 weeks)
(1) Compute: EC2, Beanstalk, Lambda
(2) Management: Auto-scaling, Load-balancer, Cloud Watch, SQS, Cloud
Formation
(3) Storage: S3, EBC, RDS, Elastic Cache
(4) Data analysis: CloudSearch, Kinesis
(5) Mobile & IoT: Cognito, API Gateway, Mobile SDK, IoT platform

PartIII: Private Cloud Platform: Openstack (All labs: 3 weeks)
(1)Compute: VM, Container
(2)Storage: object store, Elastic Block Storage
(3)Management: Monitoring, Scaling

PartIV: Distributed computing frameworks (2 weeks)
(1)MapReduce (Lecture)
(2)Hadoop (Lecture)
(3)Spark (Lecture)
(4)AWS EMR, Openstack Sahara (Labs)


Grading:
70% Lab assignments
30% Final Project (Start from the last month of the semester)
Part I(10%): Hackathon(A topic will be given, and you(as a team) need to
implement its application on one of the cloud platform in 12 hours.)
Part II(15%): You are given 3 weeks to refine your work
Part III(5%): Presentation & Demonstration in the class

Prerequisite:
None. But you should be good at programming, and the main programming
language in this class will be Python (with some Jave and Scala).

(All information above is still tentative and subject to changes.)