66860 - Mobile Applications Laboratory

Course Unit Page

SDGs

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

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

Academic Year 2020/2021

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:

  • overview of technologies for iPhone, iPod Touch e iPad (and iOS in general).
  • overview of Android Technology

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 and Swift UI language (notes on differences with ObjectiveC).
  • 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.
  • Debugging and Testing of iOS apps incrementally developed in classes.

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
  • Android Network
  • Android System Services (alarms, sensors, vibration, audio)

 

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 or any later edition up to Swift 5.

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

Massimo Carli, Android 9 Guida completa per lo sviluppo di applicazioni mobile. Apogeo, ISBN: 8850334745

Materiale online su https://developer.android.com/

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 10-15 minutes presentation (with 10-20 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.
Microsoft Teams 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