You are on page 1of 6

Syllabus for Mobile Applications

Description:
Today's applications are increasingly mobile. Computers are no longer confined to desks and laps but
instead live in our pockets and hands. This course teaches students how to build mobile apps for
Android, iOS, and Windows 8, the trinity that is today's mobile operating platforms.
Students learn to write both web apps and native apps for Android using Eclipse and the Android SDK, to
write native apps for iPhones, iPod Touches, and iPads using Xcode and the iOS SDK, and to write web
apps for both platforms. The course also touches on Windows 8 application programming, so as to
provide students with a stepping stone for application development in the mobile operating system of
their choice. Additional topics covered include application deployment and availability on the
corresponding app stores and markets, application security, efficient power management, and mobile
device security.

Prerequisites:
-

Students are expected to have knowledge of HTML, Javascript and CSS. The course does not
aim to cover these topics, though does discuss in detail the details and feature-sets of
HTML5, and CSS3 , as they pertain to mobile browsers. The first part of the course will deal
with these subjects.

Students are expected to be comfortable reading Java and/or C-code:


o Java is the native programming language of Android, and therefore prior Java
knowledge will save a lot of time, and smoothen the learning curve of programming
Android Apps. The course will not teach Java but will focus on those frameworks
and classes which are new and unique to Android.
o iOSs native programming language is Objective-C. The course will not teach you
Objective-C but will focus on the app programming model. The leap from C to
objective-C isnt that large, so if youre comfortable with C, consider this course.
o Windows 8s native programming language is C/C++.
o
Students need to familiarize themselves with the development environments of Eclipse (free
download) , XCode and Visual Studio 2012. before the course starts. Links to tutorials will be
presented, but the IDEs themselves will not be discussed during the course.

Assignment 0 (not graded) will be provided (with solutions), to help you gauge whether or
not you meet the technical prerequisites

Expectations:
-

Be prepared fro a *lot* of hard work: Be prepared to code, often, and much. The aim of this
course is to get you to a point where you can boast your own App portfolio. But Apps
arent going to write themselves.

There is a lot of self-study required: Resources on mobile programming are plentiful, and
as we aim to cover all three mobile OSes time is limited. Each presentation will have
required pre-reading and post-reading. Just like in law school. Make sure to, at the very
least, skim the references. Our lecture time is, alas, limited to only two hours at a time, and
the goal is to maximize that time.

Homework assignments and projects will be given in advance, around the time the course
starts. This will enable you another way of assessing whether or not the course is right for
you. Im a proponent of self-study and if you want to do your homework assignments ahead
of when theyre discussed in class power to you. That said, Im less favorable when it
comes to extensions. Dont leave things to the last minute! Often surprisingly simple tasks
can take more than you thought they would (q.v. Parkinsons law).

assignments are theoretical, to test your comprehension of the architecture. projects


involve coding.

You should write code that works, though generally we are lax on style. Meaning, we wont
hound you on variable names and readability. Readable code helps, however, in those cases
where your code doesnt work as well as you hoped, and we need to pinpoint the problem
so as to grade It as fairly as possible. In general, our interest in your code is inversely
squared proportional to the performance of your App (in other words, write solid apps
which work, and well take it for granted the code quality is good!)

Aside from the final project, work is solo. This will be your chance to shine Collaboration
(and plagiarism) will be frowned upon. Youre all HExt students, and Im sure youre well
acquainted with the principles of academic honesty by now.
o

Corollary: You should write ORIGINAL code. Reusing open source/Internet-borne


code is acceptable, if and only if you point out exactly which component it is that
you have used in whatever way. In those re-use cases, you should limit it for specific
subtasks for which you do not want to re-invent the wheel (e.g. compression, SSL,
etc). Dont try to re-use an entire app.

iOS and Android Apps will be expected to perform well in the corresponding simulators. For
Android, tests will also be conducted on an Android phone and tablet configured for local
app deployment (USB Development).

For the final project, people are encouraged to work in teams. But that means that:
o
o
o

The bigger the size of a team, the more that is expected of it


A team stands together or falls together. Barring unusual circumstances, the grade
will be shared by all team members
Every team member will have to provably demonstrate his or her role (so as not
have one herculean member assume the responsibilities of the rest).

The course will use a forum either iSites or Piazza. Students are expected to participate
and share ideas (all within academic honesty limits)

The instructor and support staff will also be available via Skype. This is especially beneficial
for distance students.

Contact:
- Jonathan Levin, Instructor (JL@HisOwn.com) Skype: cscie76

Baseline Syllabus: (actual topics can and will vary)


Lecture I: Introduction to mobile devices and Administratrivia (Assignment 0 due)

Mobile devices vs. desktop devices


ARM and intel architectures
Power Management
Screen resolution
Touch interfaces
Application deployment
App Store, Google Play, Windows Store
Development environments
o XCode
o Eclipse
o VS2012
o PhoneGAP, etc
Native vs. web applications

Lecture II: HTML5/JS/CSS3


-

Quick recap of technologies


Mobile-specific enhancements
o Browser-detection
o Touch interfaces
o Geolocation
o Screen orientation
Mobile browser interpretations (Chrome/Safari/Gecko/IE)
Sample case studies

Lecture III: Mobile OS Architectures (assignment 1 due)


-

Comparing and Contrasting architectures of all three Android, iOS and Windows
Underlying OS (Darwin vs. Linux vs. Win 8)
Kernel structure and native level programming
Runtime (Objective-C vs. Dalvik vs. WinRT)
Approaches to power management
Security

Lecture IV-VI: Android/iOS/Win 8 Survival and basic apps (3 lectures)


Building a simple Hello World App in all three applications.
Topics include: App-structure, built-in Controls, file access, basic graphics
Project 1 due by lecture 4. Assignment 2 due by lecture 6.
Lecture VII-X: Android/iOS/Win8 actually useful apps (4 lectures)
Topics include: DB access, network access, contacts/photos/etc.
Project 2 due by lecture 9.
Lecture XI: Underneath the frameworks (Project 3 due)
o
o
o

Native level programming on Android


Low-level programming on (jailbroken) iOS
Windows low level APIs

Lecture XII: Advanced Topics: Power Management (assignment 3 due)


o
o
o

Wake locks and assertions


Low-level OS support
Writing power-smart applications

Lecture XIII: Augmented Reality via GPS and other sensors


o
o
o
o

GPS
Accelerometer
Camera

Lecure XIV: Mobile device security, in depth


o
o
o

Mobile malware
Device protections
iOS Jailbreaking, Android rooting and Windows defenestration

Lecure XV: TBD (assignment 4 due)


(Final Project due)

Grading*:
30% Assignments
30% Mini-Projects
30% Final Project
10% Participation/Impression/TBD
* - may vary, but this should give you a rough idea

Suggested books:
<< TBD Soon >>

You might also like