Course Syllabus

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

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 reimplemented 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.

The hard copy of the syllabus can be found here.

A hard copy of the work-in-progress calendar can be found here

An iCalendar file can be found here and used for importing into other applications.

Piazza

Your first stop for almost all questions should be Piazza. This will allow your peers to benefit from your questions and they may even be able to provide feedback or help faster than the instructor or TAs.

If you are asking about something that is personal please either use a private post to the "instructors" on Piazza or email the instructor directly.

For more information please see the Syllabus PDF and the link below.

Start Here - Instructor Information & Communication Policy

Instructor Contact Info

Eric Ianni (iannie@oregonstate.edu)

TA Contact Info

Doshna Reddy (ummaredd@oregonstate.edu)

Office Hours - Tuesday 3-4 PM Pacific

Hima Muralidhar (gotlurmh@oregonstate.edu)

Office Hours - Thursday 12-1 PM Pacific

Tools

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. 

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

Course Summary:

Date Details Due