COMP 4768: Software Development for Mobile Devices

This course is an elective for the  VCG   Visual Computing and Games Stream.

It's also of interest to students who wish to develop software in a networked mobile environment.

Lab In addition to classes, this course has one structured laboratory session per week.

Prerequisites:  COMP 2008 or the former COMP 2760, COMP 2006 or the former COMP 3715, and COMP 2005 or the former COMP 3716

Availability: This course is usually offered once per year, in Fall or Winter.

Course Objectives

The purpose of this course is to introduce students to the unique challenges of developing software in a networked mobile environment. Four fundamental aspects will be addressed in this course: multi-touch interface, network computing in a mobile environment, graphics programming for mobile devices, and human-computer interaction for mobile devices. In addition to these general topics, there will be components of the course that are specific to the iOS and Android OS software development kit.

Representative Workload
  • Assignments (4) 20%
  • Milestone-based Project 40%
  • Presentation/Demo 5%
  • Final Exam 35%

There will be one assignment for each major component of the course.

The milestone-based project will be a group project with specific design/development milestones that must be met throughout the course. Each project will be required to contain some element from each of the four major components of the course. A short presentation of the final outcomes of the project will be required.

A weekly lab will provide tutorials to assist students in becoming familiar with the tools in the SDK. There will be no marks assigned in the lab.

Student groups will be given a choice from a selection of project topics. For each of these, the general requirements will be provided. Examples include multi-device ping-pong, network tic-tac-toe, instant messaging, and location-aware search.

Representative Course Outline
  • iOS and Android OS development workflows:
    • IDE
    • iPhone simulator
    • Device builder
    • Testing and debugging
  • Network computing in a mobile environment:
    • Location services
    • Context-aware mobile computing
  • Graphics programming for mobile devices
    • OpenGL ES
    • Game design for mobile devices
  • Human-computer interaction for mobile devices
    • Multi-touch
    • Motion sensor