Programming mobile devices

Degree course: 
Corso di First cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
2017/2018
Year: 
3
Academic year in which the course will be held: 
2019/2020
Course type: 
Supplementary compulsory subjects
Credits: 
6
Period: 
Second semester
Standard lectures hours: 
56
Detail of lecture’s hours: 
Lesson (40 hours), Laboratory (16 hours)
Requirements: 

The student dealing with this course must have a detailed knowledge of the architecture of the computers, of programming in the Java language and of the fundamental data structures.

Final Examination: 
Orale

The exam will take place in written form, with questions formulated to verify the knowledge and learning outcomes expected, and through the development and discussion of a project prototype developed in the Android framework.
The purpose of the test is to verify that the student has understood the distinctive features of the programming of mobile devices by making the right architectural choices in the development of the project; learned to use the main components of the Android framework and Google services.

The written test, through multiple choice quizzes, can be supported in two ways:
- at the end of the course, during the examination sessions, tests will be organized on the entire program of the course;
- during exercise hours and at the end of a particular subject treated.

In order to pass the exam, the student must:
- respond to multiple choice quizzes on topics covered in class. The quizzes are made available through the Moodle platform during the exam or during the exercises, in one of the available computer labs (minimum grade 16/30, maximum grade 24/30);
- develop a project chosen from the set of available projects. The student will be able to propose his own project idea, however, it will have to be discussed with the teacher before proceeding with the development. This test consists of a presentation of the project (through the use of a laptop or PC in which AndroidStudio and the project are installed) and in a discussion on the topics correlated to the project. The project tracks are indicative and a complete app is not required, the student must demonstrate that the work done is proportional to the 6 CFU of the course. This second test will be done immediately after the quizzes.

The project is of central importance for passing the exam and allows you to obtain a maximum of 12/30 points.

Assessment: 
Voto Finale

The objective of this course is to present in detail the aspects related to the programming of mobile devices. The course starts from the discussion of the architectures of mobile devices and the peculiar characteristics of the programming of these devices. The most common software architectures are then presented and the Android case is discussed in detail. The main frameworks that make up the Android system and the services that can be integrated within the applications with particular attention to the Google API, are analyzed. Application examples are then presented, based on which an analysis of the application development process is performed.
At the end of the course the student
1. has the knowledge necessary to understand the most advanced aspects of the Android framework, the use of its components and services. Furthermore, the student has the necessary knowledge to deal individually with other mobile application development frameworks.
2. is able to design, develop and test applications for mobile devices based on Android and to understand the frameworks available for service integration.
3. is able to choose independently the solutions best suited to the implementation of a specific application.
4. is able to fully communicate the characteristics of a programming framework for mobile devices and to discuss the architectural choices underlying the completed projects.

The lessons will address the following topics:

Introduction to mobile devices (8 h, educational goal 1)
- Hardware architecture of a mobile device
- Development and production environments at Android Studio
- Distinctive features of mobile device programming (usability, robustness, ...).
- Android and Kernel versions.
- Dalvik VM and ART VM,
- LogCat as a logging system
- Types of applications in the Android environment

Basic elements in mobile device programming (32 h, educational objective 2)
- Creating a HelloWorld App for Android
- Git as a versioning system for mobile application projects
- Creation of an Activity and study of its life cycle
- Configuration and management of an onClick event in event-driven programming. Listener
- Components of an App, Processesi and Task
- Task and Backstack for the vavigation among the various activities of an application
- Resources of an Android App: Color, Dimension, Internationalization, etc.
- Management of the contents of an Activity through the use of View and View Group such as ListView, GridView, RecyclerView, Adapters and Adapters.
- Fragments and their use.
- Creating apps with local database. Examples with SQLite
- Explicit and implicit intents
- Toolbar creation and management, ActionBar, menu

Advanced elements in mobile device programming (16 h, training objectives 3 and 4)
- Google maps, Location Based Services, Location providers, Geocoding
- Permissions for the use of sensitive information on a mobile device.
- Firebase for authentication, analytics, realtime database
- Thread, AsyncTask, Services

Topics will be addressed using the Java programming language for the Android environment as a reference. Nevertheless, many of the topics covered in the course are of general validity, and the proposed techniques are generally applicable with different languages.

Given the continuous evolution of the world of mobile device programming, special textbooks that risk becoming obsolete after a few months, are not offered.
The teaching material is available on the e-learning website: Slides, lecture notes, application examples.
However, there are several books and websites that can profitably be used by students to integrate the material provided through e-learning. For example
- To study the structure of Android studio projects: https://developer.android.com/training/basics/firstapp/
- To study the architecture of the app: https://developer.android.com/jetpack/docs/guide
- Book updated to a recent version of Android:
The Busy Coder’s Guide to Android Development 8.12
Author(s): Murphy Mark L.
Series: The Busy Coder’s Guide to Android Development
Publisher: CommonsWare, Year: June 2018
ISBN: 0981678009

Convenzionale

The course is divided into lectures (40 hours) which are used to understand what the programming of mobile devices is, and exercises (16 hours) to learn programming in the mobile environment.
Given the highly applicative characteristic of the course, the lectures will be interspersed with exercises carried out in an equipped laboratory. The laboratory allows a concrete manipulation of the topics covered in class through the possibility of being able to choose and decide the best solution to a given problem.
Attendance at the lessons followed by the study of the topic is strongly recommended to be able to face the exercise connected to the topic.
All the exercises include an evaluation phase made by the teacher before time runs out. Evaluations can be taken into consideration during the awarding of the final grade for the exam.

The teacher receives students by appointment, upon request sent by by e-mail to ignazio.gallo@uninsubria.it. The teacher responds only to e-mails signed and coming from the students.uninsubria.it domain.

Borrowed from

click on the activity card to see more information, such as the teacher and descriptive texts.