LABORATORIO AVANZATO DI PROGRAMMAZIONE II

Anno accademico 2017/2018 - 3° anno - Curriculum B
Docente: Antonio Salvatore Calanducci
Crediti: 6
SSD: INF/01 - Informatica
Modalità di erogazione: Tradizionale
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 48 di lezione frontale
Semestre:

Obiettivi formativi

Il corso ha l’obiettivo di fornire allo studente le conoscenze, le metodologie e gli strumenti per progettare e realizzare applicazioni mobili native per le due piattaforme principali, iOS e Android, a partire dal design dell’interfaccia utente fino alla pubblicazione su App Store e Google Play.

Dopo un’introduzione sulle architetture delle due piattaforme native sopra menzionate e ai diversi approcci (nativo, mobile web, ibrido) per lo sviluppo di app, il corso si concentrerà su framework cross-platform nativi, che permettono di realizzare app per piattaforme diverse a partire da un singolo codebase, come React Native, Appcelerator Titanium, NativeScript e Xamarin.

In particolare, durante le sessioni di laboratorio, quest'anno verrà utilizzato React Native, il framework open source creato e mantenuto da Facebook e da centinaia di sviluppatori, diventato popolare negli ultimi due anni e particolarmente richiesto dalle aziende di sviluppo software.

Grazie a questo framework, si avrà modo di presentare un’approccio diverso alla programmazione, basato sulle funzioni (programmazione funzionale e reattiva) che rende peculiare React.

Il corso ha un taglio pratico. Il docente illustrerà i contenuti con dimostrazioni live e interattive durante le lezioni. Inoltre verranno assegnati dei challenge (con tre livelli di difficoltà) al termine di ogni lezione, lasciando allo studente la possibilità di approfondire ulteriori aspetti della programmazione mobile.


Prerequisiti richiesti

Buone conoscenze di programmazione. Basi del linguaggio JavaScript


Frequenza lezioni

La frequenza è fortemente consigliata


Contenuti del corso

  • Introduzione al corso
  • Overview sulle piattaforme mobili native (iOS e Android)
  • Sviluppo nativo vs sviluppo cross-platform
  • Sviluppo cross-platform: mobile web, ibrido, nativo
  • Overview dei principali framework cross-platform: Titanium, React Native, NativeScript, Xamarin
  • Crash course su JavaScript e ECMAScript 2015 (ES6)
  • Introduzione a React Native
  • Programmazione funzionale per lo sviluppo mobile di UI
  • Configurazione ambiente di sviluppo: Node.js, React Native, editors, Expo, XDE, iPhone Simulator, Android Emulators
  • Deployment di app in locale e in remoto su dispositivi
  • React Component State e Component Lifecycles
  • Passaggio di props ai componenti, ulteriori metodi di Lifecycle
  • Styling con Flexbox
  • Implementazione di liste con ScrollView e FlatList
  • Accesso alla rete: interazione con API REST via JSON/XML
  • Navigazione tra Screen con React Navigation
  • Introduzione all'architettura Flux: Application Architecture for building User Interfaces
  • Presentazione di Redux
  • Implementazione di un semplice contatore con Redux e react-redux
  • Ancora Redux: reducers, actions
  • Container components vs presentation components
  • Sviluppo app TodoList con Redux
  • Backend As a Service: introduzione a Firebase
  • Autenticazione e real time databases con Firebase
  • Mappe native su iOS e Android
  • Accesso alla posizione dell’utente: geolocalizzazione e geocoding
  • Image Picker e Date Picker
  • Notifiche push con Expo
  • Pubblicazione App con Expo

Testi di riferimento

Fullstack React Native Book - The Complete Guide to React Native

https://www.fullstackreact.com/react-native/

Mastering React Native (Eric Masiello)

https://www.packtpub.com/web-development/mastering-react-native

Learning React Native: Building Native Mobile Apps with JavaScript (2nd edition)

Book by Bonnie Eisenman - http://shop.oreilly.com/product/0636920085270.do

Redux documentation: https://redux.js.org/


Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L’esame consiste nel realizzare una semplice app secondo le specifiche del docente. L’esame si svolgerà presso il laboratorio Archimede nell’arco di 2-3 ore. Ad ogni specifica sarà assegnato un punteggio. Al termine della prova verrà fatta la verifica con il docente ed il voto finale sarà determinato dalla somma dei vari punteggi.

Sarà possibile utilizzare il proprio laptop o i PC del laboratorio.


Esempi di domande e/o esercizi frequenti

Ulteriori materiali e/o esempi sono pubblicati dal docente sul gruppo Facebook LAP2: Sviluppo di applicazioni mobili native multipiattaforma al seguente indirizzo:

https://www.facebook.com/groups/unict.lap2/