CS 643 102: Cloud Computing, Spring '20

Wednesdays, 6-8:50pm, CKB 215

Instructor

  Cristian Borcea
  Office: GITC 4201A
  Phone: 973 596-2866
  Office Hours: Mondays 4pm-6pm and by appointment
  email

Announcements

Short description

The course presents a comprehensive view of cloud computing, from platforms and services to programming and infrastructure. The topics include: cloud computing platforms, with examples from Amazon Web Services (AWS), Google Cloud, and Microsoft Azure; cloud services for data analytics, machine learning, mobile computing, IoT, edge computing, security and privacy, and devops; programming frameworks for parallel computing in the cloud; distributed storage in the cloud; and virtualization and containerization. The course includes homework, programming assignments, and research paper presentations. The programming assignments will be done in AWS.

Learning outcomes

Upon the successful completion of this course, the student should be able to:

Why take this course?

Cloud computing represents a major paradigm shift in computing from the era of personal computers to the era of computing as utility. Most major Internet services are already deployed in the "the cloud." We store most of our data in "the cloud" and execute most applications from "the cloud." This course is aimed at all graduate students (both M.S. and Ph.D. students) who want to learn how to design and program cloud services and applications as well as how to build and administer cloud systems. By studying real-world systems developed in industry, students will acquire cutting-edge knowledge that may be a major advantage when searching for a job.

Prerequisites

CS 656 or instructor's permission. If you didn't take CS 656, but you would like to take this class, you should come and talk with me about your background. Basic Unix/Linux skills and good programming skills are necessary for the assignment and the project.

Lectures and Readings

There is no book required for this class. Each lecture is based on research papers and/or online documentation covering a specific topic (i.e., readings). The lectures will be posted a few days before each class, and students are advised to familiarize with them before class in order to be able to actively participate in class discussions. The readings should be used as reference material to clarify and add details to lectures.

Exams

There will be two exams: a midterm, and a final exam. Both exams are closed book (i.e., papers, notes). The final exam will cover only the material taught after the midterm. In case of missing an exam, a make-up may be taken only after providing written documentation to the Dean of Students.

Homework

Homework will be assigned 5 times during the semester to prepare students with the type of questions encountered in exams. The solutions will be discussed in class.

Programming Assignments

There will be two individual programming assignments. The first will consists of building, training, and deploying a machine learning (ML) model in Amazon Web Services (AWS). Its goal is to help you learn how to use the AWS platform and how to deploy applications over this platform. The second assignment will consists of building an application using Apache's Spark, MLlib, and HDFS, and running the application in parallel on multiple EC2 instances in AWS. Its goal is to learn how to program and deploy parallel applications in the cloud.

Research Paper Presentations

Students will present, in groups of two or three, one research paper during the semester. These papers cover state-of-the-art research in cloud computing. The presentations (using PowerPoint slides) will be done online: video recordings of voice over slides will be uploaded in Canvas for the whole class to watch. The presentations must be uploaded in the week to which the papers are assigned. Extra-credit is available for asking good questions about the presentations.

Grading

Weekly Schedule

Week Lecture topics Readings Research papers
1 Course overview. Introduction to Cloud Computing. Slides.
2 Cloud Platforms I: Infrastructure as a Service (IaaS), AWS. Slides. Homework 1 handed out.
3 Cloud Platforms II: Platform as a Service (PaaS), Google App Engine, Windows Azure. Homework 1 due. Slides. Assignment of research papers to groups finalized.
4 Cloud Platforms III: Serverless Computing; Function as a Service (FaaS). Slides. Homework 2 handed out. Programming Assignment 1 handed out.
5 Cloud Services I: Data Analytics and Machine Learning. Slides. Homework 2 due. First set of research presentations due.
6 Cloud Services II: Mobile, IoT, and Edge Computing. Homework 3 handed out. Slides.
7 Cloud Services III: Security and Privacy, Devops. Homework 3 due. Slides. Second set of research presentations due.
8 Midterm (material covered in weeks 1-7). Discussion of midterm solutions. Programming assignment 1 due.
9 Parallel Programming in the Cloud I: Google's MapReduce, Apache's Hadoop, Yahoo's Pig Latin. Slides.
10 Parallel Programming in the Cloud II: Apache's Spark, Storm and Zookeper. Second programming assignment handed out. Third set of research presentations due. Slides.
11 Cloud Storage Systems I: Google's GFS and BigTable. Homework 4 handed out. Slides.
12 Cloud Storage Systems II: Amazon's Dynamo and Other Cloud Databases. Homework 4 due. Fourth set of research presentations due. Slides.
13 Virtualization I: VMWare, XEN, Live VM Migration. Homework 5 handed out. Slides.
14 Virtualization II: Containerization, Docker, Kubernetes. Slides. Homework 5 due. Programming assignment 2 due.
15 Final exam (material covered in weeks 9-14).

Academic Integrity

Academic Integrity is the cornerstone of higher education and is central to the ideals of this course and the university. Cheating is strictly prohibited and devalues the degree that you are working on. As a member of the NJIT community, it is your responsibility to protect your educational investment by knowing and following the academic code of integrity policy that is found at this link: University Policy on Academic Integrity.

Please note that it is my professional obligation and responsibility to report any academic misconduct to the Dean of Students Office. Any student found in violation of the code by cheating, plagiarizing or using any online software inappropriately will result in disciplinary action. This may include a failing grade of F, and/or suspension or dismissal from the university. If you have any questions about the code of Academic Integrity, please contact the Dean of Students Office at dos@njit.edu.

Modifications to Syllabus

The students will be consulted and must agree to any modifications or deviations from the syllabus throughout the course of the semester.