This subject is an introduction to mobile application development, including programming paradigms, models, technologies and platforms. Topics include the design of mobile applications, and their implementation on popular platforms such as Android, iOS and Windows (mobile versions). The unique considerations for programming with mobile devices will be studied, including application architectures, mobile user interface issues, context- aware computing, the use of mobile sensing, middleware, mobile data management, and programming with wireless connections. Cross-platform development on a range of mobile and wearable form factors will be discussed, from smartphones, to tablets of varying sizes.