66860 - Mobile Applications Laboratory

Academic Year 2019/2020

Learning outcomes

At the end of the course, the student knows methodological and technological aspects, and application development tools for mobile devices both under iOS (iPhone, iPad, iPod Touch) and Android platforms. Students will understand the management of devices with innovative user interfaces, multi-touch, event management, ObjectiveC programming, Xcode and Cocoa Touch, Eclipse and Android SDK, design patterns, I/O, sensors and geo-localization/maps APIs, networking services, debugging and testing of applications. In addition, students will understand the basic issues of applications' execution in wireless mobile scenarios, and will experience the most relevant platforms for mobile applications' development, APIs of internal devices, multimedia management, iPhone and Android SDK and design of applications under a Model-View-Control pattern.

Course contents

Introduction:

  • Panoramica sugli aspetti tecnologici dei dispositivi iPhone, iPod Touch e iPad (e iOS in generale).
  • Panoramica aspetti tecnologici dei dispositivi Android.

iOS Module:

  • iOS technology layers: Core OS, Core Services, Media, Cocoa Touch.
  • iOS e iOS SDK. Development tools for iOS: Xcode, Storyboard, Simulator, Instruments.
  • Swift language (notes on differences with ObjectiveC).
  • Cocoa design pattern, Model-View-Controller.
  • Target, Action, Outlets.
  • Foundation Framework and UIKit (Cocoa Touch), user interface, UIWindow e UIView.
  • UIViewController and MultiViews, controllers and views.
  • Touch events and Multi-touch, gestures.
  • Tools and models for data persistence on iOS. CoreData and Table Views.
  • External and Web data integration.
  • Debugging and Testing of iOS apps. App Store.

Android Module:

  • The Android Class
  • Installing the Android SDK
  • The Android Architecture
  • The Android Resources System
  • Android Activities and Fragments
  • Android Intents
  • Android Layouts
  • Android Widgets and Events
  • Android Animation, Menu, Dialog and Toasts
  • Android Services
  • Android Data Management
  • Android Google Maps Support
  • Kotlin for Android
  • Android Network
  • Android System Services

 

Readings/Bibliography

Matt Neuburg, iOS 11 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics, Ottobre 2017,

Craig Clayton, Learn iOS 11 Programming with Swift 4 - Second Edition: Learn the fundamentals of iOS app development with Swift 4 and Xcode 9, Jan 2018

Online Material on iOS Developer Library: https://developer.apple.com/library/ios/navigation/

Massimo Carli, Android 4(tm) Guida per lo sviluppatore, Apogeo, ISBN: 978-88-503-3222-9

Teaching methods

The course is scheduled in the second semester, as a single class totalling 6 cfus, divided in two modules (iOS and Android). The course is structured with live lessons, in italian, with the slides and material in english. After the introduction to the fundamentals and principles of mobile applications' design, the basic notion of MVC (model-view-controller) design pattern and the software development kit for iOS (Xcode) and Android environments, the course is splitted into two concurrent lines with lessons and lab-programming specifically devoted to development of mobile applications in iOS and Android.

Evey lesson is self-contained and illustrates a specific topic. Many references in each lesson are provided to libraries, tools and SDK, debug, etc. In most cases, the lessons are finalized with a live programming demo realizing a composite application which incorporates all the design, methodologied, best practices illustrated in the lesson. This allows the students to learn the concepts and understand their application in practice. Students are immediately able to realize their own applications on their own devices or in the laboratories in total autonomy.

Assessment methods

The course requires the development of a individual project with the realization of a iOS and/or Android application. A oral part will be planned to discuss the choices and motivations in the project realization (more or less 30 minutes). By the end of the classes, some project templates will be proposed, with various degrees of extensions possible. Interested students could proposed personalized projects (in this case the project application must be preliminary defined and agreed with the teacher, by sending an email with subject "Proposta progetto esame corso LAM A.A. X/Y" to the email address <lam-projects@cs.unibo.it> . Once defined a project (predefined or personalized) the candidate must develop the application in iOS or Android (or both) and prepare a 15 minutes presentation (with no more than 25 slides) and a summary (pdf, ps, html) with the contents of the oral illustration, material, source code, device used, etc. The project must be delivered within one of the 6 deadlines that will be defined in the academic year: June, July, September, October, December, February. The project must be submitted within the planned deadlines (which will be communicated via mailing lists and website), by means of the IOL platform and attaching a zipped archive with the project and presentation/report. Once submitted the project, the students are invited to the oral part in the 2 weeks following the submission deadline. The oral part will be kept in the teachers' offices or in a room of the Department of Computer Science and Engineering, in Mura Anteo Zamboni 7. The oral part also includes questions on all the program of the course, and questions on the demos presented during the lessons on both the platforms (iOS and Android). Students must be equivalently prepared to provide answers to both the development platforms. The outcome of the project evaluation and oral part will provide two different evaluations in the range [0..30]. Both evaluations must be sufficient to receive a overall sufficient evaluation and pass the exam. When the final score is equal or exceeds 30/30 the student could be awarded with "cum laude" evaluation.

Teaching tools

Electronic slides, personal computer and projector.
VNC client for sharing the video of slides and live programming sessions.
Laboratory devices.
Recommended readings and Web material.

Office hours

See the website of Luciano Bononi

See the website of Federico Montori

SDGs

Quality education Decent work and economic growth Industry, innovation and infrastructure Sustainable cities

This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.