Course Syllabus

Picture of Harvard Summer Shield Logo

  • Division of Continuing Education - Summer: (33932)
  • Term: 3-Week Summer Session II, 2017
  • Course Instructor(s): David S. Platt ME, President, Rolling Thunder Computing, Inc
  • Location: 53 Church Street 104
  • Meeting Time: Monday, Tuesday, Wednesday, Thursday 3:15pm - 6:15pm

Class Objectives

Mobile devices are the hottest sector in software development today, but covering all the available platforms is tricky. Xamarin Forms provides a framework for covering all major mobile platforms from a single C# codebase. We will start with the basic anatomy of a Xamarin mobile app. We will examine the design choices between Portable Class Libraries and Shared Asset Project projects, and between using XAML and code for constructing objects and setting their properties. We will examine forms and layout, controls, navigation, and text handling. We’ll study styles and user experience design. We will conclude with an examination of databinding and model-view-viewmodel architecture stack. This is an applied class, not a theoretical one, and extensive programming homework will be required.


Familiarity with either the C# or Java language. Successful completion of CS-50 or equivalent, or at least one year of industrial experience in object-oriented programming.


Creating Mobile Apps with Xamarin Forms, by Charles Petzold (Microsoft Press, 2016). The electronic edition of it is downloadable free from Xamarin in several different formats,  see . No vendor sells a paper copy, so if you want one, you’ll have to print it, bind it, and trim it yourself.

Hardware and Software

It is difficult to know exactly what any one person will need, but here are my suggestions:

Class will be taught in a lab with high-powered workstation computers, running both iOS and Windows. They will have development software for doing the things that we will do in class. While you are here, you will have great stuff.

But: this course requires more programming homework than you can accomplish during class hours. The official description is about 4 hours outside work per class day.  You will find it inconvenient to visit the Church St lab when you want to work on something. And it may be reserved for class, or full of other users. You will therefore probably want to bring your own notebook computer. If you want to develop mobile apps for Android and/or Windows platforms, you can use a Windows PC. I’d suggest Windows 10 operating system, and flavor.  If you want to target an iPhone, even with an emulator, you will need a Macintosh. For development tools, you will want Visual Studio 2015. Community edition will suffice.

You can satisfy the course requirements using only the software emulators on the development systems. But you won’t get the full effect until you actually package and download and install and run your apps on an actual mobile device. I suggest you bring whichever type of device you plan on mostly targeting. If you can, I’d suggest a spare device other than your primary, just in case the development process does something bad to it.


Lectures and Assignments

WARNING: This list of topics is ALWAYS subject to change, even after the class starts, based on late-breaking or quickly evolving technologies, or availability of guest speakers.




Textbook Chapter(s)


Jul 10

Introduction, Anatomy of an App, Code vs. XAML

1, 2, 7, 8


Jul 11

User experience considerations for mobile apps

Separate download


Jul 12

Text, Scrolling, and Sizes, Page Layout

3, 4, 5


Jul 13

Controls and Styles

12, 14, 15






Jul 17

Guest Lecture, Joe Ficara, “Azure Cloud Services for Xamarin Mobile Apps”

Separate download, TBD


Jul 18

Async operations, network and file I/O, threading



Jul 19

Page Navigation, Transforms



Jul 20

Testing and Telemetry

Separate download, TBD






Jul 24

Guest Lecture: “Platform-Independent GPS control”

Separate download, TBD


Jul 25

Data Binding



Jul 26




Jul 27

Students’ Requests




You learn how to program by programming. In this course, you will learn a great deal. You will work for the entire term on the same application, a mobile application that uses the local transportation authority’s data fields.  You will start with a very basic app and add more features to it as the course progresses. At the end you will have a serviceable app, which you can demonstrate to prospective employers when they ask how much you know about Xamarin.

The advantages of such a cumulative assignment are many. The primary disadvantage is that if you fall behind, it is hard to catch up. Try very hard not to do this.

This class is graded solely on these programming homework assignments. There are 8, comprising in their entirety a term project. Each is worth 12.5% of your grade.  Each is designed to require a median amount of  5 hours of work. Keep in mind that approximately 50% of you will require more than the median. Plan to work hard.

The exact design of the project and its assignments are still under development. It will be conceptually similar to the MBTA Commuter Rail app written by your instructor and discussed in the second night’s reading.

Harvard Summer School Policies

The Summer School is committed to providing an accessible academic community. The Accessibility Office offers a variety of accommodations and services to students with documented disabilities. Please visit for more information.

You are responsible for understanding Harvard Summer School policies on academic integrity ( and how to use sources responsibly. Not knowing the rules, misunderstanding the rules, running out of time, submitting the wrong draft, or being overwhelmed with multiple demands are not acceptable excuses. To support your learning about academic citation rules, please visit the Resources to Support Academic Integrity ( where you will find links to the Harvard Guide to Using Sources and two free online 15-minute tutorials to test your knowledge of academic citation policy. The tutorials are anonymous open-learning tools.

Student Support Tips

Instructor Support Tips


Course Summary:

Date Details Due