Italiano
Italian
Fondamenti di programmazione; è fortemente auspicabile, ma non indispensabile, la conoscenza di un linguaggio di programmazione ad oggetti e di basi di dati.
Fundamentals of programming; knowledge of an object-oriented programming language and databases is highly desirable, but not essential.
La durata del corso è di 72 ore così suddivise:
• Lezioni di teoria: 36 ore
• Esercitazioni: 24 ore
• Brainstorming e seminari: 12 ore
The duration of the course is 72 hours divided as follows:
• Theory lessons: 36 hours
• Exercises: 24 hours
• Brainstorming and seminars: 12 hours
L’insegnamento ha la finalità di consentire allo studente di acquisire conoscenze in merito alle metodologie, ai modelli e alle tecniche di programmazione per dispositivi mobili. In particolare, verranno prese in considerazione sia la realizzazione di app native che quella di app ibride; in quest’ultimo caso verranno esaminate le varie generazioni di piattaforme proposte sul mercato e verrà illustrata in dettaglio una piattaforma leader del mercato al momento dell’erogazione del corso. Una particolare enfasi verrà posta nella realizzazione di progetti di una certa complessità utilizzando tool differenti in modo che possano emergere le analogie e le differenze esistenti tra le diverse metodologie sia nel modo di condurre i progetti che nel risultato finale ottenuto.
Gli studenti del corso verranno raggruppati in team. Ciascun team dovrà, innanzitutto, individuare un contesto applicativo reale di interesse. Successivamente, dovrà effettuare l’analisi dei requisiti per la realizzazione di un’app mobile relativa al contesto applicativo individuato. A questo punto, dovrà progettare e realizzare un’app nativa Android che soddisfi i requisiti individuati. Dopo di ciò dovrà progettare e realizzare un’app ibrida utilizzando la piattaforma di sviluppo di app ibrida spiegata durante il corso che soddisfi gli stessi requisiti dell’app nativa Android, particolarizzandole per dispositivi Android o IoS a propria scelta. Infine, dovrà essere in grado di realizzare un report che indichi analogie e differenze individuate tra le diverse metodologie e le diverse piattaforme basate sulla stessa metodologia, sia nel modo di condurre i progetti che nel risultato finale ottenuto. Durante il corso sono previste delle sessioni di brainstorming.
Il corso è fortemente basato sulla realizzazione di progetti in gruppo e sul brainstorming. Questo favorisce lo sviluppo di varie competenze trasversali, quali la capacità di lavorare in gruppo, la gestione dei conflitti, la comunicazione efficace, la capacità di ascolto e di sintesi di idee differenti. La necessità, per ciascun gruppo, di individuare un contesto applicativo reale di interesse per cui realizzare le varie app, assieme alla presenza delle sessioni di brainstorming, favorirà, la capacità, da parte degli studenti, di confrontarsi con scenari molto stimolanti, consentendo loro di sperimentare in anticipo un modus operandi tipico del mondo del lavoro
This course aims at allowing students to acquire knowledge on the methodologies, the models and the techniques for programming mobile devices. In particular, it considers both native and hybrid apps. In this last case, it examines the different generations of platforms for realizing hybrid apps proposed on the market and illustrates in detail one of them, which is a market leader when the course is delivered. A particular emphasis will be placed on the realization of quite complex projects to be conducted by means of different tools. In this way, students can experiment the analogies and the differences about the way of carrying out the projects and the final results, which characterize the different methodologies.
The students of this course will be grouped in teams. First, each team must choose a real application context of its interest. Then, it must perform the requisite analysis concerning the realization of a mobile app handling the chosen application context. After this, it must design and realize a native Android app that satisfies the defined requirements. Then, it must design and realize an hybrid app (by adopting the hyprid app development platform considered during this course) capable of satisfying the same requirements of the native Android app, and must specialize them to Android or IoS devices, at its choice. Finally, it must realize a report illustrating the analogies and the differences detected between the different methodologies and the different platforms based on the same methodology and regarding both the way to carry out projects and the final obtained results. During this course some brainstorming sessions will be performed.
This course is strongly based on the realization of projects to be carried out in groups and on brainstorming. This method favors the development of several transversal skills such as the capability of working in a team, conflict management, effective communication, listening capability and of synthesize different ideas. The necessity, for each group, to determine a real application context of interest for which apps must be realized, along with the presence of brainstorming sessions, will also favor the student capability of dealing with very challenging scenarios. This will allow them to experience in advance a modus operandi typical of the job’s world.
>>Lezioni di Teoria
CONCETTI PRELIMINARI (1.5 CFU)
App native, web app e app ibride
Il linguaggio Kotlin
PROGRAMMAZIONE NATIVA SU ANDROID (5.5 CFU)
Introduzione, Android Studio, Fondamenti delle applicazioni, Activity e layout, gestione degli eventi, lavorare con activity multiple, elementi della UI, operare in background, debugging, persistenza dei dati, distribuzione dell’app
PROGRAMMAZIONE CROSS-PLATFORM SU FLUTTER (2 CFU)
Introduzione al framework, configurazione dell’ambiente di sviluppo, creazione della prima app, ciclo di vita di un’app, interfacce utente, gestione del layout, gestione dei file, gestione delle immagini, gestione di un database
>>Esercitazioni
Esercitazioni e laboratori su Kotlin, Android e Flutter
>>Theory Lessons
PRELIMINARY CONCEPTS (1.5 ECTs)
Native, web and hybrid apps
The Kotlin programming language
NATIVE PROGRAMMING ON ANDROID (5.5 ECTs)
Introduction, Android Studio, Application fundamentals, activities and layouts, handling events, working with multiple activities, UI elements, running in the background, debugging, data persistence, app distribution
CROSS-PLATFORM PROGRAMMING ON FLUTTER (2 ECTs)
Introduction to the framework, configuring the IDE, creation of the first app, app life-cycle, user interface, layout management, management of files, management of images, management of a database
>>Exercises and labs
Exercises and labs on Kotlin, Android and Flutter
L’esame prevede la realizzazione di alcuni progetti e una prova orale in cui si discuteranno i progetti realizzati e verranno approfonditi gli aspetti teorici che ad esse si riferiscono. I progetti, da svolgersi in gruppo, richiederanno l’utilizzo di Android e Flutter per realizzare delle app native e delle app cross-platform in un contesto scelto dagli studenti. Durante il corso verranno condotte delle sessioni di brainstorming dove ciascun gruppo presenterà il proprio lavoro e gli altri gruppi potranno intervenire per osservazioni e suggerimenti
Per superare l’esame lo studente deve dimostrare, attraverso i progetti, di aver compreso i concetti fondamentali del corso e di aver acquisito competenze sia sulla programmazione nativa che sulla programmazione ibrida.
La valutazione massima è attribuita agli studenti che dimostrano un’ottima conoscenza di Android e Flutter, un’ottima capacità di costruire dei progetti che utilizzino tali tool, un’approfondita conoscenza dei contenuti dell’insegnamento, rigore metodologico ed appropriatezza del vocabolario tecnico.
Viene attribuito un voto in trentesimi con eventuale lode
Il voto complessivo dipende principalmente dalla qualità dei progetti e dal contributo che lo studente dimostrerà di aver dato ad essi nonché dalla padronanza sugli argomenti del corso che lo studente dimostrerà durante la prova orale.
The exam includes the realization of some projects and an oral test in which the realized projects will be discussed in such a way as to deepen the theoretical aspects that refer to them. Projects, to be realized in groups, will require the use of Android and Flutter to realize some native and cross-platform apps in a context chosen by students. During the course several brainstorming sessions will be conducted, where each group will present its project and the other groups can intervene for comments, suggestions, etc.
To pass the exam, students must prove, through their projects, that they have understood the fundamental concepts of the course and have acquired skills in both native and hybrid programming.
The highest evaluation is given to students who demonstrate an excellent knowledge of Android and Flutter, an excellent ability to build projects that use these tools, a thorough knowledge of the contents of the course, methodological rigor and appropriateness of the technical vocabulary.
A vote out of thirty is attributed with possible honors
The overall score depends mainly on the quality of the projects, on the contribution that the student will provide to their realization, as well as on the knowledge of the topics of the course that the student will show during the oral exam.
>>Kotlin
- Bruce Eckel, Svetlana Isakova. "Atomic Kotlin", Mindview LLC, 2021.
- Dawn Griffiths, David Griffths. "Head First Kotlin", O'Reilly, 2019.
>> Android
Ted Hagos. "Learn Android Studio 4 in Kotlin". Apress, 2020.
Dispense fornite dal docente ed altro
materiale didattico disponibile sul sito del corso su https://learn.univpm.it/
>>Kotlin
- Bruce Eckel, Svetlana Isakova. "Atomic Kotlin", Mindview LLC, 2021.
- Dawn Griffiths, David Griffths. "Head First Kotlin", O'Reilly, 2019.
>> Android
Ted Hagos. "Learn Android Studio 4 in Kotlin". Apress, 2020.
Slide decks and other learning material available on the course site on https://learn.univpm.it
No
No
Università Politecnica delle Marche
P.zza Roma 22, 60121 Ancona
Tel (+39) 071.220.1, Fax (+39) 071.220.2324
P.I. 00382520427