The course deals with key technologies and tools for mobile applications development. The first part of the course will provide an overview of basic principles on which mobile programming relies, namely limited device capabilities, user interaction, the MVC (Model-View-Controller) design pattern, approaches for developing this kind of applications and most popular mobile operating systems (e.g., Android, iOS, Windows 8) and related languages and development frameworks. The core part of the course will be focused on the Android platform: this part will have a programming slant, basic and advanced constructs will be discussed with a lot of practical examples. Finally, the third and last part of the course (that is a 2020/2021 novelty) will present, through a series of seminaries, modern solutions (i.e., Flutter) for the cross-platform app development, overtaking limitations characterizing the development of apps for a specific platform.
In the following, the detailed program is presented.
Basic concepts and fundamentals - Introduction to the mobile ecosystem: mobile device features and non-functional issues for mobile programming (usability, energy comsumption, device heterogeneity, reduced device capabilities). The MVC (Model-View-Controller) design pattern. Mobile Operating Systems (Android, iOS, Windows 8). Introduction to approaches, frameworks and tools for mobile application development. Native applications and Web applications.
The Android platform - Architecture of the platform. Development tools and frameworks. Basic components. Main Android APIs. Concurrent programming. Animations and graphics. Data and storing facilities. Multimedia. Use of sensors. Services.
Solutions for cross-platform app development - Flutter case study.