Course Syllabus

  Course Syllabus & Information

 Syllabus

Last Updated January 26, 2016

 

CSCI E-64 (24228) (4 Credits)
Mobile & Cloud Computing


Instructor:

Joseph Ficara, ASEE, Architect, Senior Software Engineer, Architect Predictive Index.

Course Meeting

Thursday evening’s beginning: Jan. 28th, 2016
Location: Maxwell-Dworkin G125
Held: 7:40-9:40 PM EST

About this course:
Mobile computing has become ubiquitous with over a billion devices in use every day. Although these devices are quite powerful on their own, their real power comes from their ability to connect people, entertain, and drive e-commerce by leveraging the enormous computing infrastructure and computing services in the cloud. Internet of Things (IOT) devices such as the Raspberry Pi offer a low cost and power friendly alternative to traditional computing devices. The capability of IOT devices to interact with the real world by providing purpose-built devices as well as control appliances, and machinery is an area of explosive growth. Combine all of this with cloud computing and a very attractive option for startups and well-established business such Pintrest, Netflix, Box, Blue Cross, SAP, and Pfizer has emerged. The combination of these key technologies provides a canvas to create solutions with almost limitless power, innovation, and potential.

This course covers the essentials necessary to leverage these key technologies in a pragmatic way so the power, innovation, and potential can be fully realized. In this course, we cover the key services and application programming interfaces (APIs) offered by Microsoft Azure to build highly scalable, low cost cloud computing services that bring the power of the cloud to mobile, tablet, IOT and desktop devices. The course covers several platform as a service (PaaS) services offered by Microsoft Azure including federated authentication, Azure app service, API apps, mobile apps, Azure web apps, Azure SQL, Document DB, cloud services, Notification Hubs, and storage, to name a few. Using these services and others, students learn how to build highly scalable, fine-grained multi-tenant, secure representational state transfer (REST) services in the cloud. Throughout the course, students learn how to build highly responsive and engaging mobile, IOT, tablet, and desktop applications that take full advantage of these services on Android, iOS, and Windows platforms including the Raspberry Pi. (4 credits)   

This course will cover the essentials necessary utilize Azure cloud services from Android, iOS, Windows Universal App platform. It will also cover architecture, design and usability guidance regarding how to decide what software and data executes/resides in the cloud vs on the client IOT & mobile device.
Students have the choice of building client code using Xamarin and/or the Windows Universal App Platform. Xamarin for Android and iOS is free to all registered students of the course!

Prerequisites: CSCI-E10a, or CSCI E-33, or one year Java development, or one year of .NET development using C#. Familiarity with Android, iOS or Windows development is helpful but not required.

Section

Thursday evening’s beginning: Feb. 4th, 2016
Location:: Northwest building room B109
Held: 6:30 PM - 7:30 PM EST

This will not be a point and click wizard class. It will not be possible for you to get through your course work by simply using the prefabricated code that is generated by the Visual Studio wizards. This class is about learning the services provided by Azure making mobile apps more powerful by doing so. The reason why you get paid the big bucks is because you can get through the snags that hold the point and click wizard programmers back. You will be able to use the wizards to get the framework of your application up, but at times, you will be required to rip the wizard-generated code apart to complete the assignments. Finally, some course work may explicitly prohibit the use of wizards, either because they will be of no use or because I am trying to drive a specific point home. 

Course Home Page:

This class has a home page: https://canvas.harvard.edu/courses/8361

Any changes posted in the "Notices" or “Discussions” sections of this page are officially incorporated into and made part of this syllabus by reference

Student Participation:

We encourage student participation; please feel free to ask questions throughout the lectures.  If we need to suspend questions for a brief period while we finish a particular topic we will let you know.

Use of Cell Phones, Pagers, Etc…:

We prohibit the use of all noise-making devices during class (i.e. cell phones, pagers, beepers, etc.) Please turn these devices off prior to the start of each class.  If a student’s cell phone, pager etc. goes off in class they will be asked to leave the class for the evening.  Repeated offenses can result in expulsion from the course.

 

Sections:

Sections are optional, weekly discussion groups run by our TAs.  Student questions regarding lecture material, assignments and final project will be addressed during this time. Periodically, the TAs may provide supplementary material during sections. Details of such will be announced in class and will be available on the website in the “discussion forum” and or via the “announcements” area.

Thursday evening’s beginning: Feb. 4th, 2016
Location: Northwest building room B109
Held: 6:30 PM - 7:30 PM EST

Additional sections may be held, based on class needs, via Blackboard Collaborate online. Postings for section day(s) and times will be made available on the course web site.  Information on the Blackboard Collaborate login information will also be made available on the course website.

Online and on-campus options. See
Types of Courses

 

Optional Textbooks


If your focus will be using Xamarin for mobile development

Course material will be provided via sample code. All Android and iOS based client code will be built using Xamarin.

Title:           Creating Mobile Apps with Xamarin.Forms Preview Edition 2 (Developer Reference)
Author:        Charles Petzold
Publisher:    Microsoft Press
ASIN:         
B00VYSSNJW

Title:           Xamarin Mobile Application Development: Cross-Platform C# and Xamarin.Forms Fundamentals

Author:        Dan Hermes
Publisher:    Apress
ASIN:          B00M4FC7VO

If your focus is Windows Universal App Platform development

Title:           Microsoft Visual C# Step by Step (Developer Reference
Author:        John Sharp
Publisher:    Microsoft Press
ASIN:         
B017A8UAEK

Course material will be provided via sample code. All Windows based client code will be built using the Windows Universal App platform.

Course books are available from the Harvard Coop:  http://harvard.bncollege.com

You can also find them on Amazon.com:  http://www.amazon.com/

We recommend that you have access to the MSDN Library Subscription which is available for free at http://msdn.microsoft.com/library

 

Hardware and Software Requirements:

Note: This course requires substantial programming.

We recommend that students have their own software development environment. Although Harvard provides computer services, we have not certified that their configurations will be suitable for all assignments.

Required software is available for free to all registered students.

About 1 week prior to the start of the course all students registered for the course, who have valid email addresses in Harvard’s database will be submitted for DreamSpark Premium IDs.

If you have registered for the course but don't have a valid email address registered with Harvard you will be able to provide your email address to myself or to one of the TA's during class so we can get you setup.

You can register for a Xamarin license by going here: https://xamarin.com/student

For information regarding account setup and configuration follow the link:
Harvard Computer Services   

Base software and hardware requirements for the course

Access to a personal computer with the following software installed and properly configured is required:

  • Windows 10 Pro
    • Windows 10 Enterprise or Education is also acceptable
    • Note: Windows XP, Vista, 7, 8, 8.1 will not be suitable for this course
  • Visual Studio Community 2015 with Update 1
    • Visual Studio 2015 Professional or Enterprise (With Update 1) is also acceptable

Azure Development:

  • A Microsoft Azure account

Mobile Development:

Android:

-       If you are developing for Android, we require you to use the Xamarin platform.

o    You can use Xamarin Studio or Visual Studio with Xamarin (Via C#) for your development environment

o    An Android Device is not required

iOS:

-       If you are developing for iOS you will need a Mac running the current version of OSX as well as XCode. You will also need to be a member of the Apple iOS Developer Program to deploy to an iOS device if you choose to do so. You can find out more here: https://developer.apple.com/programs/ios/

o    iOS 9 development is required

o    An iOS Device is not required.

o    You can utilize Xamarin Studio or Visual Studio with Xamarin (Via C#)

§  Note: Xamarin Studio supporting iOS development only runs on a Mac

Windows Universal App Platform:

-      Nothing additional to the base software and hardware requirements for the course defined earlier

o   A device running Windows 10 with touch support is not required.


 

IoT Development:

Internet of Things Homework is optional, thus you are not required to purchase a Raspberry PI 2 Model B. That said if you wish to run the IoT sample code and implement homework/final projects utilizing IoT the following is required: 

To run the sample code and implement Raspberry PI homework the following are required:

Note: We have provided links to the adafruit site which has generally good pricing. You may find them from other sources as well such as https://www.amazon.com and https://www.raspberrypi.org/products/

1.     A Raspberry Pi Model 2 B

2.     5v 2A Switching Power Supply with Micro USB Cable

3.     Ethernet Cable

4.     8GB class 10 SD/MicroSD Memory Card with Adapter

5.     Raspberry Pi Sense Hat

6.    HDMI Cable suitable to connect to a TV or Monitor
(The following are some typical examples, you will need to check your monitor/tv setup and determine what's right for you)

       6.a HDMI to HDMI Cable (Requires your TV or Monitor to accept an HDMI input) 

       6.b HDMI to VGA Adapter Cable

       6.c HDMI to DVI Adapter Cable

Optional accessories

A.     Case for your Raspberry Pi Model 2 B

B.     Official Raspberry Pi Minature WiFi Module

§  Note: This is the only WiFi Module supported by Windows Core IoT

C.     Standoffs for Pi HATs

D.   Mouse & Keyboard

The Windows IoT kits come with several of the required items 1,2,3,4 as well as the optional items A & B. In addition, they come with several discreet components and cables you can use to build your own circuits.

-       If you already have a Raspberry PI 2 Model B

o    Microsoft IoT Pack for Raspberry Pi 2 - No Pi

-       If you don’t already have a Raspberry PI 2 Model B

o    Microsoft IoT Pack for Raspberry Pi 2 - w/ Raspberry Pi 2

The software is free:

o    Windows IoT Core for the Raspberry Pi 2 Model B

§  Note:

·         Earlier versions of the Raspberry Pi will not be sufficient as they can’t run Windows 10 IoT Core

·         The new Raspberry Pi Zero currently is not supported by Windows 10 IoT Core and thus can’t be used.

§  Setup your Raspberry Pi 2 using the Windows 10 IoT Core Dashboard

 

Device requirements

iOS devices, Android devices, Windows 10 Phone Devices are not required. You can use the associated emulators/simulators for all client work.  You only need to have the corresponding development platform as noted earlier. If you want to run the Raspberry Pi IoT sample code you will need a Raspberry Pi Model 2 B device along with the Microsoft IoT Pack for Raspberry Pi 2. See IoT Development and the Raspberry Pi Sense Hat.

Having a corresponding device will enable you to better appreciate capabilities, various sensors and user interaction provided by them and is essential for building applications you will publish/sell, however having the device it’s not required for the course.

 

Required coursework

This class will consist of lectures, structured homework assignments and a final project. The assignments and final project are designed to reinforce the lectures presented in class.  

Since this is a graduate-level course, all student work will be held to a graduate-level standard.

The homework assignments will constitute 40% of your course grade; the final project will constitute 60% of your course grade.  There will be 4 homework assignments.

Most homework assignments are designed to take approximately 10-15 hours of work for the median student in this class.  The final project is designed to take approximately 70 - 105 hours. Keep in mind that students often spend more time on final projects due to their enthusiasm and creativity.

The final project consists of three mandatory deliverables: a functional specification, a design specification and the final project implementation. The requirements will be presented in class and consist of a core set of mandatory Microsoft Azure services, along with a set of elective elements from which the students will choose. We encourage students to think creatively when planning their final projects.

The functional specification is worth 10% of the final project grade. The functional specification MUST clearly communicate WHAT the final project will do and what problem it will solve by effectively utilizing screen mockups, workflows, use cases, and site map.

The design specification is worth 10% of the final project grade. The design specification MUST clearly communicate HOW the student will meet the core requirements and execute the elective elements in final project implementation. More specifically, this document will include:

·         Architectural block diagrams illustrating the high level architecture and key architectural aspects of the application,

·         Sequence diagrams illustrating complex use case implementations, and

·         Class diagrams illustrating the object model(s) implemented.

·         A clear mapping between the design elements and the functional specification so the TA can clearly understand how the requirements are being satisfied.

The final project implementation is worth 80% of your final project grade. 


 

Grading criteria (grading percentages)

Grade

A

A-

B+

B

B-

C+

C

C-

D+

D

D-

E (Failing Grade)

Points

100-92

91-90

89-87

86-83

82-80

79-77

76-73

72-70

69-67

66-63

62-60

Less than 60


It is likely that in at least one assignment you will score less than 100%. We will automatically drop the assignment with the lowest grade.  If you elect not to submit one of the assignments then that assignment will count as your lowest graded assignment and will be dropped. 

You cannot drop the functional specification, design specification or final project.

Since Azure Development ever-evolving at internet speed some assignments posted on the Web may be modified. I reserve the right to change them at any time, up to the end of class on the night on which they are assigned. 

Coursework submission policy:

If you have any questions regarding these guidelines please ask a TA or the instructor. 
Course work must be submitted using the WebSite’s drop box.

o          Submissions shall be placed in zip file(s) that preserve the directory structure: 

o    All zip files submitted shall contain

§  All assets such as configuration files, images, databases and resources that are part of the application.

§  A text file named ProjectNotes.txt that includes:

·         Assignment title and number

·         Your name &  email address

·         The client development platform you are using

o    Windows Universal App

o    Android with Xamarin

o    iOS with Xamarin

§  Specific notes for the TA (as necessary)

·         If you are using Windows Universal Apps for your client code, you must submit a single zip file.

o    Single Zip File: Containing Client and Azure server code shall be placed in a Zip file called LastName_HWXX_CS.
Use two Visual Studio solutions
   - 1st for Mobile and/or (IoT) App Code (Client Code)
   - 2nd for Azure Mobile Service code (Azure server code)

§  Azure code shall be put under a directory called Azure

§  Client code shall be put under a directory called Client

§  XX is the homework Assignment number (01, 02, 03 etc…)

§  Example:

·         Homework assignment: 1

·         Student’s Last name: Jones

·         Zip shall be called: Jones_HW01_CS


 

·         If you are building Xamarin apps for Android or iOS you must submit two Zip Files, one for the server code and one for the client code.

o    Zip File 1: The Azure server code shall be placed in a Zip file called LastName_HWXX_Azure

§  XX is the homework Assignment number (01, 02, 03 etc…)

§  Example:

·         Homework assignment: 1

·         Student’s Last name: Jones

·         Zip shall be called: Jones_HW01_Azure

o    Zip File 2: The client code shall be put in a Zip file called LastName_HWXX_YYYY

§  XX is the homework Assignment number (01, 02, 03 etc…)

§  YYYY Designates the client code

·         Android (Written in Xamarin with C#)

·         iOS (Written in Xamarin with C#)

§  Android Example:

·         Homework assignment: 1

·         Student’s Last name: Jones

·         Client platform: Android

·         Zip shall be called: Jones_HW01_Android

§  iOS Example:

·         Homework assignment: 1

·         Student’s Last name: Jones

·         Client platform: iOS

·         Zip shall be called: Jones_HW01_iOS

 

Assignment due date/time policy:

Each assignment has a specific due date. The student must post her/his assignment to the Website’s drop box by 5:00 PM EST, the day it is due. There is a fifteen-minute grace period for late assignments (i.e., assignments turned in at 5:16 or later will be counted as one day late).  

Penalties for Late Assignments

·         1.5 Points per day late up to a maximum of 21 points
Time of submission is determined by the drop box date/time stamp.
The maximum grade you can receive when handing in an assignment two weeks late is a 79.

·         Assignments turned in more than 14 days late will receive a grade of 0%

·         10 to 100 Points or expulsion for submitting an assignment that contains a virus depending on the damage done to the TAs machine.

·         5 Points for not including your name, email address , assignment title and number

·         Assignments not received by May 12th, 2016 at 11:59 PM EST will be assigned a grade of 0%

o    Note: The last few assignments don’t have as long of a late submission window due to the May 12th, 2016 deadline.

·         Notes:

o    If the TA cannot successfully build what has been turned in, the TA may at his/her discretion request a resubmit.

o    If a resubmit is request by a TA your homework will be considered late and all early submission points for it are forfeit.

o   We encourage students to hand in the functional and design specifications, and implementation one or more times prior to the final submission. The T.A.s will provide feedback and guidance on the student’s implementation of core and elective requirements.

o    There is no late penalty for the functional and design specifications; however, students are highly encouraged to turn them in at the dates specified to keep on track. They must be turned in, along with the final project, by May 12th, 2016 at 11:59PM EST. Submission beyond this date is not accepted.

 

Extra Credit: 

It is possible to get some extra points for turning an assignment in early.  We will grant you one point for each day an assignment is turned in early, up to a maximum of five points.  To be considered early, the assignment’s submission must be turned in by 5:00 PM EST prior to the day it’s due.  The 15 minute grace period applies here as well. For example:

If the assignment is due on 2/11/2016 and it’s turned in on 2/10/2016 at 5:00 PM EST, it’s eligible for one point of extra credit. If it’s turned in on 2/10/2016 at 5:16 PM EST, it’s not eligible for the one point of extra credit.

The final project, functional specification, design specification, and final project implementation are also eligible for early submission extra credit, but only if they are the final versions to be graded.  Once a final version is submitted, no further submissions will be accepted unless a TA requests a resubmission, see resubmits.

Some assignments will specifically offer opportunities for extra credit.  We will only provide extra credit where the assignment instructions specifically call out items that are eligible for extra credit. 

Resubmits:

A resubmit is only permitted if requested by the TA. If a resubmit occurs after the due date, the late penalty will apply. If a resubmit occurs prior to the due date all extra credit points for early submission are forfeit. 

Last day an assignment can be turned in:
All assignments, including the functional specification, design specification and final project are due by May 12th, 2016 at 5:00 PM EST. Any work not received by May 12th, 2016 at 11:59 PM EST will be assigned a grade of 0%.

Extensions beyond May 12th, 2016 will only be granted in cases of serious life-or health-threatening emergency. ANY OTHER CAUSE, INCLUDING, BUT NOT LIMITED TO BUSINESS PROBLEMS, TRAVEL, and COMPUTER BREAKDOWNS, DO NOT QUALIFY FOR AN EXTENSION. 

If Harvard Extension cancels a class:

If the Harvard Extension School officially cancels a class, the assignment to be given at that class will be assigned at the next class and the due date will be moved accordingly.  Assignments due on the night of the canceled class are still due at their original date & time

Academic Honesty:
ALL STUDENTS ARE RESPONSIBLE FOR READING, UNDERSTANDING, AND COMPLYING WITH THE ACADEMIC RULES AND REGULATIONS PUBLISHED IN THE EXTENSION SCHOOL CATALOG, INCLUDING, BUT NOT LIMITED TO ACADEMIC HONESTY. 

Discussion Forum:

To make it easier for you to talk to the TAs and to each other an internet discussion forum, has been set up on the course WebSite: https://canvas.harvard.edu/courses/8361/discussion_topics

If you have a question about individual grading or administrative problems, contact the TA who graded the assignment directly.

Please use the forum as the entry point for all questions whose answers might be of general interest, such as questions on the assignments.

The discussion forum will be monitored by an “on-call” TA at all times. Thus, your questions will be answered more quickly if you post them to the forum, as opposed to sending an e-mail to a TA or myself. Posting messages will also allow other students to benefit from the answers sent to you.

Occasionally, I will suspend forum discussion for some assignment requirements in which the value lies in discovering how to solve the problem independently.

Employers often find the forum to be a good place to solicit new hires. Only principals may post messages for their companies, subject to the following parameters:

·         NO SPAM

·         Name and location of your company

·         Type of product made

·         Position description and requirements

HEADHUNTING WILL RESULT IN IMMEDIATE AND PERMANENT EXPULSION FROM THE FORUM

This forum is my own private property; therefore, freedom of speech does not apply to any posted content. Anyone whose actions are, in my sole and absolute judgment, detrimental to the forum will be removed without warning or appeal.

Lectures  videos

Lecture videos, along with all sample code and slide decks, are typically available on the course web site about 1-3 days after each class. If you are unable to attend the actual class, I strongly advise you to view its video as soon as possible.

 

Lectures


1 - January 28, 2016
   
  Instructor and TA introductions
   
  Course & Syllabus overview
      Azure Mobile Apps Part I

    
  Azure overview Part I
     
Assignment #1 Assigned - Due February 11, 2016 at 5:00 PM EST
2 - February 4, 2016
     
Azure Mobile Apps Part II
      
Azure overview Part II

3 - February 11, 2016
      Azure Mobile Apps Part III
      Assignment #2 Assigned - Due February 25, 2016 at 5:00 PM EST

4 - February 18, 2016
      Azure Mobile Apps III Continued
      Intro to Linq
    
  Final Project Requirements Overview
5 – February 25, 2016                       
 
     REST Fundamentals    
      Scalable REST Services 
   
  Azure API Apps and Web API Part I
   
  Assignment #3 Assigned - Due March 10, 2016 at 5:00 PM EST
6 – March 3, 2016
    
  Azure API Apps and Web API Part II

7 - March 10, 2016
     Building Universal Windows IoT Apps that Leverage Azure

    
Assignment #4 Assigned - Due March 24, 2016 at 5:00 PM EST

 -  March 17, 2016
     Spring Vacation – No Class Held
8 – March 24, 2016

 Azure Notification Hubs

 9 – March 31, 2016
      
Azure Storage
          Blobs, Files, Tables and Queues 
     
 Functional Specification Due at 5:00 PM EST   

10 - April 7, 2016
       
Azure IoT Hub

11- April 14, 2016

     Guest Lecture by Author & Professor David Platt
     User Experience
http://www.rollthunder.com/     

12 - April 21, 2016
  
    Azure Scheduled Jobs
  
    Azure Web Jobs
  
    Azure Worker Roles
  
    Design Specification Due at 5:00 PM EST
13 - April 28, 2016
  
    Azure Web Apps
14 - May 5, 2016
  
    Azure Document DB
15 - May 12, 2016
     
  Final Project Student Presentations
        Final Project Implementation Due at 5:00 PM EST

 

Sections

Sections are intended to provide a face to face forum for students to get assistance with their homework, get answers to questions related to course related topics, and provide supplemental course material.  The following is a list dates of when section will be held.
Note: Additional lecture topics will be added based on the needs of the class and TA availability.

January 28, 2016

First night of class – No section held

February 4, 2016

Homework & Lecture Q & A

Section lecture topic TBD

February 11, 2016

Homework & Lecture Q & A

Section lecture topic TBD

February 18, 2016

Homework & Lecture Q & A

Section lecture topic TBD

February 25, 2016

Homework & Lecture Q & A

Section lecture topic TBD

March 3, 2016

Homework & Lecture Q & A

Section lecture topic TBD

March 10, 2016

Homework & Lecture Q & A

Section lecture topic TBD

March 17, 2016
Spring Vacation – No Class Held
March 24, 2016

Homework & Lecture Q & A

Section lecture topic TBD

March 31, 2016

Homework & Lecture Q & A

Section lecture topic TBD

April 7, 2016

Homework & Lecture Q & A

Section lecture topic TBD

April 14, 2016

Homework & Lecture Q & A

Section lecture topic TBD

April 21, 2016

Homework & Lecture Q & A

Section lecture topic TBD

April 28, 2016

Homework & Lecture Q & A

Section lecture topic TBD

May 5, 2016

Homework & Lecture Q & A

Section lecture topic TBD

May 12, 2016

Homework & Lecture Q & A

Section lecture topic TBD

 

 

Course Summary:

Date Details Due