Programming mobile devices

Degree course: 
Corso di First cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
2017/2018
Year: 
2
Academic year in which the course will be held: 
2018/2019
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 teaching does not have mandatory prerequisites but for a profitable learning the following knowledge and skills are necessary:
- detailed knowledge of computer architecture,
- knowledge of programming in Java language and its fundamental data structures.
which are taught in the ARCHITETTURA DEGLI ELABORATORI and PROGRAMMAZIONE teachings.

Final Examination: 
Orale

The exam will take place in written form, with questions formulated to verify the expected learning, 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 mobile programming by making the right architectural choices in project development; learned to use the core components of the Android framework and Google services.

The written test, using multiple choice quizzes, can be supported in two ways:
- At the end of the course, during the exam sessions, exams will be organized on the whole course program;
- during laboratory hours and at the end of a particular topic. The average of the marks obtained during these partial exam tests will be reported to the final score [0, 24].

In order to pass the exam, the student must:

- respond to multiple-choice quizzes on topics discussed in lesson. Quizzes are made available through the Moodle platform during the exam or during the exercises, at one of the available computing laboratories (minimum vote 16, maximum 24 votes).
- develop a project chosen among the available projects. The student will be able to propose his project idea but he will have to be discussed with the teacher before proceeding with the development. This test consists of a presentation of the project (using a laptop or PC where AndroidStudio is installed) and a discussion on topics that touch the project. The project tracks are indicative and no complete application is required, the student will have to demonstrate that the work done is proportional to the 6 credits of the course.
The project is of central importance for passing the exam and allows students to get a maximum of 12.
The final score will be given by the sum of the two rounded votes. For example, if the student passes the quiz with 18.5 and the project with 10 then the final vote will be 28.

The project may also be submitted by those who did not pass the first test (quiz). In this case, the project vote can no longer be changed.

The teacher should be able to download the project through a dropbox, drive, Github, etc. link within 3 days of the exams date.

Assessment: 
Voto Finale

The aim of this course is to present in detail the aspects of mobile programming. The course starts with the discussion of mobile device architectures and the peculiarities of programming these devices. The most common software architectures are then presented and the case of Android is discussed in detail. The key frameworks that make up the Android system and the services that can be integrated within the applications are analyzed, paying particular attention to Google APIs. Application examples are then presented, on the basis of which an analysis of the application development process is performed.

At the end of the course the student
- possesses the knowledge necessary to understand the most evolved aspects of the Android framework, the use of its components and services. The student also has the knowledge necessary to deal individually with the study of other mobile application development frameworks.
- is able to design, develop and test Android-based mobile apps, and understand the available integration framework for services.
- is able to choose independently the judgment of the most suitable solutions for the implementation of a specific application.
- is able to communicate in a complete and correct way the characteristics of a mobile programming framework and to discuss the architectural choices behind the implemented projects.

The course contents are listed below.
Introduction to mobile devices. Architectures and development environments. Distinctive features of mobile device programming (usability, robustness, ...). (8 hours);
Programming, basic elements: data bases, communication protocols, data representation formats, event-driven programming. (8 hours);
Android SW architecture and subframeworks. (8 hours);
Design and implementation of interfaces. Application development. (8 hours);
Service development, thread management, access and information management. (8 hours);
Using Services (Google APIs). (8 hours);
Development and testing process. (8 hours);

Type of Didactic Activities
The course is divided into front-end lessons (32 hours) to understand what is mobile programming and exercises (24 hours) to learn how to program a mobile device.
The topics covered in most lessons are subject to laboratory exercises that will include live demonstration of development tools (principally AndroidStudio).

The teaching material is available on the e-learning site: Slides, Application Examples.

Convenzionale

The course objectives will be achieved through frontal lectures in which various aspects of mobile programming will be presented.
Given the highly applicative feature of the course, the frontal lessons will be interrupted by exercises carried out at a well-equipped laboratory.
The lab allows for a concrete manipulation of the lessons learned through the ability to choose and decide the best solution to a particular problem.
Class attendance followed by the study of the subject treated, is strongly recommended in order to address the tutorial related to it.

Professors

Borrowers