Course Syllabus

NOTE: Some links in this syllabus page may only be accessible to currently enrolled students.

A Word From the Course Designer

Introduction

This course focuses on cloud API development. Those represent the two major components of the class: cloud based computing and API development. Cloud computing is basically computing that is done on distributed computers all over the world. Web API development involved creating applications that internet connected devices can interact with to accomplish certain tasks. The combination will mean that we are creating applications on cloud based computers which we can interact with over the internet.

Major Class Components

The early portion of the class will primarily focus on individual assignments which take one or two weeks. The emphasis will be on using the tools, technologies and standards to interact with and make cloud hosted web APIs.

Much of this content will come from 1st party sources. For example, you will use a lot of documentation from an actual web API provider to learn how to interact with their specific web API. The course will give you the big picture concepts, but you will be spending at least as much time, if not more, on sites maintained by the providers of the actual APIs.

The same will generally be true when it comes to creating your own web APIs. The course will give you some big picture guidance into web API development, but the actual technical documentation will come from the providers of the cloud hosting services you are using.

Expectations

This might be somewhat different than the typical class you have taken where most of the content was contained within the course itself. Generally this class is taken by students who will be graduating very shortly and moving out into professional programming positions.

The expectation is that you treat this similar to how you will be expected to work in your first job. In other words the expectation is that you use external resources to answer your questions about programming and how to do the technical portions of the development.

The course will then provide the sort of support and guidance you would expect to get from a good company. The instructor and TAs will serve as mentors whom you can ask questions of when you get stuck and the course will provide the big picture guidance on what sort of software you will be developing and what techniques you will be using to develop it as well as training on what it looks like to implement some basic solutions using those techniques.

If you are looking for a course that will teach you the specifics of the most current cloud technologies, this is not that course. We will use current cloud technologies, but you will be learning how to use them from the developers of those technologies. The instructor and TAs of the course will be there to support you and help you as you go through this process. But ultimately, developers like Google or Amazon are going to have the most complete and up to date guides on how to use their tools. A course like this would always be versions behind and simply rewording what they said.

By the end of the course you should feel confident that you could then go on and learn the basics of other technologies.

Conceptual Components

With all of that said, there are some major conceptual topics that this course will teach. These are larger, typically programming language independent, processes or architectures which are re-implemented time and time again in web APIs.

REST APIs

The biggest of these concepts is the REST API architecture. This is a set of principles that makes it easy for both humans and machines to parse and understand the structure and contents of an API. It is generally seen in HTTP based APIs. So when you are working with Tweets from Twitter or Documents from Google Docs there is a good chance that you are doing so over HTTP in a way that is consistent with the major REST principles. They have been around for several years and don’t appear to be going anywhere.

Security

Security is a huge topic in the cloud. This course cannot give it any sort of thorough treatment. However, it will look at some of the bigger aspects of security and we will look at ways that we can do things like securely allow only particular users to view or access content using current web standards. Again these are generally independent of programming language and tend to change a good bit less than the actual cloud platforms they are based on so they are good topics to cover in the actual class material.

The Project

Finally you will have a project where you can put all of the things you learned together. Whereas the first assignments were structured in terms of the contents of the database the final project will be more open ended. There will be a set of technical requirements that need to be met at a minimum but you will have a great deal of flexibility to draft the requirements for the contents and purpose of the API.

Review

This should give you a good idea of what this course will look like. To reiterate, if you are expecting a course that will lead you step by step using a particular cloud technology, you will likely be frustrated with the balance of content and the course structure. You can expect that you will get help when you are unable to figure out how to find/how to interpret 1st party documentation, but it will still be your responsibility to go out and read that documentation and do their tutorials.

You will still learn a lot, you will learn how to go through that process, but in addition you will learn some bigger picture things that the course teaches directly, like REST or some security topics. Just be aware that these are not the big technical challenges in the class.

Course Instructor Introduction

Course Syllabus

A syllabus document is available as a pdf file.

Course Schedule

The following course schedule is also available as a pdf file.

Dates

Module (available Monday, 8:00 am)

Day assignment out (by 8:00 am)

Day assignment is due (@ 11:59 pm)

Sep 25 to Sep 29

Rest Architecture Explained

Syllabus Quiz

Th: A1 GAE

ASAP: Syllabus Quiz, required to proceed

Sep 30 to Oct 6

RESTful - API Usage

Th: A2 Use a Web API

Th: A1 GAE

Oct 7 to 13

RESTful – API Design

Th: A3 Build a RESTful API

Th: A2 Use a Web API

Oct 14 to 20

Add Functionality to REST API

 

 

Oct 21 to 27

Advanced Functionality

Mon: A4 Intermediate REST API

Mon: A3 Build a RESTful API

Oct 28 to Nov 3

Security & OAuth

Tu: A5 Advanced REST Features

Tu: Quiz: REST APIs

Tu: A4 Intermediate REST API

Nov 4 to 10

Security & Verification

Tu: A6 OAuth 2.0

Tu: A5 Advanced REST Features

Tu: Quiz: REST APIs

Nov 11 to 17

Docker

Tu: A7 More Authentication & Authorization

Tu: A6 OAuth 2.0

Nov 18 to 24

Non-relational Databases

Tu: A8 Contanarize It

Tu: Final Project

Tu: A7 More Authentication & Authorization

Nov 25 to Dec 1

 

 

Tu: A8 Contanarize It

Dec 2 to 8

Wrap Up

 

 

Dec 9 to 13

Final Exam Week

 

Mon: Final Project

Grade Weighting

  • Assignments - 60%
    • 8 programming assignments
    • All assignments have equal weight
    • We will drop the grade of your lowest scoring assignment and count the 7 assignments with the best grades
  • Final Project - 35%
  • Quizzes - 5%

Grading Policy

Grade letter Percentage floor
A 93
A- 90
B+ 87
B 83
B- 80
C+ 77
C 73
C- 70
D+ 67
D 63
D- 60
F 0

Syllabus Quiz

Please don't forget to take the syllabus quiz so you can continue onto the learning modules: Syllabus Quiz

Contacting People for Help

You can always contact me for any reason! However, in order to speed up communications, the TAs are assisting with the smooth running of this course. Contact info for me and the TAs are given on the Home page.

In addition to email, we also use Piazza and Slack for communication. You can find details on the communication policies (e.g., when to use Piazza, email or Slack) on the Home page.

Office hours will be held on Slack. The office hours schedule and Slack details are also given on the Home Page.

Here's a link to the Home page.

Tools

Cloud Platform

We will use Google Cloud Platform (GCP) in this course.

Programming Languages

For implementing the assignments, you will have the choice of using either Python with Flask or Node.js. The Instructor, at his discretion, may allow use of additional languages/platforms beyond these two choices.

Postman

Setting this one up is pretty straight forward. Go to https://www.getpostman.com/, download Postman for your OS and you are good to go. 

Google App Engine for Node.js

This changes a bit from term to term. So you can head over to the Google Node.js Standard Environment documentation and check it out, but you may want to wait for the first week of class to make sure you don't get the wrong stuff setup

Google App Engine for Python 3

This changes a bit from term to term. So you can head over to the Google Python 3 Standard Environment documentation and check it out, but you may want to wait for the first week of class to make sure you don't get the wrong stuff setup

Course Summary:

Date Details Due