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

A weekly course schedule is available as a pdf file.

Grade Weighing

  • Assignments - 65%
    • 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 - 30%
  • 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

Instructional Staff

Instructor: Nauman Chaudhry chaudhrn@oregonstate.edu

GTA: Sheekha Jariwala jariwals@oregonstate.edu

GTA: Zheng Liu liuzhen@oregonstate.edu

Communication Policy

Grading or Regrading

 We will attempt to grade the assignments within 7 days of the due date. For questions related to grading or regrading please directly email the TA who graded your assignment. TA's are assigned to grade assignments based on student last names as follows:

Student's last name Grader
Ahmed to Shi Sheekha Jariwala
Shumer to Zhang Zheng Liu

You can request a regrade on an assignment by contacting your grader within 48 hours of receiving your grade. Include what points were taken off and why you feel your assignment/project does in fact meet the requirements you were penalized for not meeting.

When requesting a regrade the grade will NEVER be lower than when you made the request. We will not lower a grade for finding something else wrong. That said, please note that while reviewing your request we discover we made a mistake in taking points but also made a mistake in not deducting points it is possible your grade will remain the same.

Assignment Extensions, Escalated Grading Questions & General Course Info

For Assignment extensions, escalated grading questions, and other general course information, please email me.

Assignments & Course Content

Ask questions about assignments and course content, on Piazza, as opposed to direct messages to myself or the TAs, in order to help make these questions and answers available to everyone. You will also get an answer to your question far faster by posting in Piazza than by emailing or sending a private message, as there are more than a hundred people looking at those discussion boards.

Personal Questions

For personal questions, you can email me from your OSU email account or via private posts on Piazza for the instructors.

Office Hours & Real-Time Communication

The official OSU Slack workspace for this class is: https://class-cs493-400-sp20.slack.com Slack is a fantastic resource for real-time communication. I and the TAs will conduct office hours on Slack. You can also ask questions of other students on Slack. However, if I or the TAs are not on Slack, don't count on us reading the scroll back to find a question you asked earlier: your primary method for getting help is still Piazza.

Emails

If you email me or the TAs, use your OSU email account. You must put CS493 in the subject line, or else we may miss it.

Response Time

We will strive to respond to email and Piazza posts within two business days. We will aim to have the assignments graded within 7 days of the due date. Please note that we may not be accessible over the weekend and on holidays.

Office Hours

The best place to ask questions and get help is on Piazza. If you'd like direct, personal help, our Office Hours for this course will be held on our Slack channel. Office hours will not be held during Finals Week, or on days that the University has off (holidays, inclement weather days, etc.). The Instructor and TAs reserve the right to cancel or move office hours, but will give appropriate warning, if possible. The times for the office hours are given below. All times are Pacific.

Note: You can request additional office hours with the instructor by appointment.

Day Time Person
Monday 10 am - 11 am Nauman
Monday 2 pm - 3 pm Nauman
Tuesday 10 am - 11 am Nauman
Tuesday 1 pm - 2 pm Zheng
Wednesday 2 pm - 3 pm Nauman
Thursday 4 pm - 6 pm Sheekha

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 3 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