66860 - Mobile Applications Laboratory

Course Unit Page

Academic Year 2018/2019

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 (group projects, opportunely defined, are allowed in special cases, upon request) with the realization of a iOS and/or Android application. During the classes, specific sessions (Journal Club) will be devoted to illustration on behalf of groups of students of the contents of recent scientific articles about visionary and emerging apps (this is a mandatory activity which provides a part of the oral evaluation). A oral part will be planned to discuss the choices and motivations in the project realization (more or less 60 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 20 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 sending an email to <lam-projects@cs.unibo.it> with subject "progetto LAM<anno> - <iOS/Android> - Nome, Cognome, Matricola" and attaching a zipped archive (lower than 2 MB) or including a link for downloading the archive from the Web. Once submitted the project, the students are invited to the oral part in the week 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 modifications to 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 greater or equal to 18/30 to receive a sufficient evaluation and pass the exam. The final score is provided with different weights: project (75%) and oral (35%), total 110%. If the final total 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 Luca Bedogni