Esami (per chi ha seguito il corso negli AA 2015-16 o precedenti)

Modalità d'esame

La prova d'esame

La prova d'esame consiste nello svolgimento di un progetto che preveda la realizzazione di un'applicazione per dispositivi mobili su 2 piattaforme a scelta tra Android e iOS e Windows Phone (Windows Phone viene solo introdotto brevemente durante il corso). Le applicazioni devono essere sviluppate in modo nativo (non usando strumenti di sviluppo cross-platform).

I progetti d'esame

Gli studenti possono svolgere un progetto da loro proposto. Il progetto deve realizzare un servizio utile e pratico. L'originalità del servizio non è richiesta, ma è apprezzata.

Tutti i progetti devono essere preventivamente approvati dal docente via mail. La proposta del progetto deve essere un documento quanto più sintetico possibile che contenga:

 

  1. la descrizione del sistema, dei casi d'uso e delle funzionalità;
  2. la descrizione delle problematiche tecniche principali e dei punteggi difficoltà (vedi sotto), incluse le tecnologie che si intende adottare (in particolare per la parte server, se il progetto ne include una)
  3. il numero di studenti che comporranno il gruppo di lavoro.

I progetti devono presentare alcune difficoltà tecniche minime, che per gli scopi della valutazione sono modellate tramite dei "punteggi difficoltà". Il progetto proposto deve avere almeno 5 punti difficoltà per ogni studente che compone il gruppo. Elenco dei "punti difficoltà":

 

  • Implementazione su 3 piattaforme (cioè iOs, Android e Windows Phone): 4 punti difficoltà.
  • Interazione con funzionalità di SO (es: calendario, contatti, etc...): 1 punto difficoltà ciascuno.
  • Utilizzo di oggetti grafici non standard: tra 0 e 3 punti difficoltà (a discrezione del docente, da concordare preventivamente)
  • Utilizzo di gesture non standard: 2 punti difficoltà.
  • Utilizzo sensori di movimento: 2 punti difficoltà.
  • Utilizzo della camera: 1 punto difficoltà.
  • Trattamento di dati multimediali: 1 punto difficoltà.
  • Utilizzo di overlay su mappe: 1 punto difficoltà.
  • Utilizzo di mappe: 1 punto difficoltà.
  • Utilizzo della posizione: 1 punto difficoltà.
  • Interazione con server personalizzato: 2 punti.
  • Interazione con social network o server di terze parti: 1 punto difficoltà per ogni social network o server supportato.
  • Utilizzo di sensori biometrici esterni al device: 4 punti difficoltà.
  • Utilizzo delle notifiche push: 2 punti difficoltà.
  • Memorizzazione persistente (in aggiunta ai file \"properties\"): 2 punti difficoltà.
  • Funzionamento in background: 2 punti difficoltà.
  • Utilizzo di NFC o bluetooth: 2 punti difficoltà ciascuno.
  • Progettazione e implementazione su device di tipo diverso (es: smartphone, tablet, smart TV, smart watch). La progettazione deve prevedere delle modalità di interazione sostanzialmente diverse tra i diversi device. L'implementazione può avvenire anche su una sola piattaforma (iOS, Android o Windows Phone). 2 punti difficoltà per ogni tipo di device supportato oltre al primo (es: solo per smartphone --> 0 punti; smartphone e tablet --> 2 punti; smartphone, tablet e smart TV --> 4 punti).

L'approvazione del progetto è a discrezione del docente. Fattori determinanti all'approvazione del progetto sono:

  • La difficoltà tecnica
  • Il progetto non deve essere eccessivamente complesso
  • Il sistema deve svolgere un servizio utile (o che potrebbe essere utile in seguito ad ulteriori modifiche che potrebbero non essere parte del progetto stesso).
  • Il progetto non deve trattare argomenti o tematiche inadatte ad un corso di studi universitario.

Materiale a disposizione degli studenti

Gli studenti possono scrivere la parte server del progetto con la tecnologia che preferiscono. Durante il corso sarà presentato un template di server REST che dovrebbe semplificare notevolmente la realizzazione del server. Gli studenti sono liberi di usare soluzioni diverse. In ogni caso, il server non sarà oggetto di valutazione.

Un esempio di server basato su Google Application Engine con tecnologia endpoints è disponibile.

Valutazione del progetto

La prova d'esame consiste in un colloquio (su appuntamento concordato via mail) durante il quale il docente valuta:

  • la qualità del progetto svolto

    • la solidità dell'analisi dell'applicazione

    •  

      la coerenza della progettazione con il problema
    • l'applicazione di princìpi di progettazione
    • la qualità dell'interfaccia grafica progettata e implementata
    • la qualità dell'implementazione del codice lato client (l'implementazione del server esula dalla valutazione)
  • la preparazione degli studenti
    • la conoscenza del progetto da parte degli studenti
    • la capacità degli studenti di difendere e discutere le proprie scelte di analisi, progettazione e implementazione
    • la comprensione degli argomenti insegnati a lezione, anche se non applicati direttamente nel progetto svolto

La prova d'esame porta alla formulazione di un voto, chiaramente individuale. A tale riguardo, si ricorda che tutti i membri del progetto sono tenuti a conoscere tutte le parti del progetto e ad aver partecipato attivamente alla loro analisi, progettazione e sviluppo. Fa eccezione il server, per il quale ci si aspetta che tutti i componenti del gruppo sappiano discuterne il comportamento esposto, ma non necessariamente la sua progettazione e l'implementazione.

Durante la prova d'esame gli studenti dovranno mostrare al docente il funzionamento del software realizzato. Il software dovrà essere mostrato su simulatore e, se possibile, su disposivo fisico. Nel caso in cui gli studenti non dispongano di risorse proprie (es: computer portatili) per mostrare il software, si accorderanno preventivamente con il docente via mail.

 

Materiale da consegnare

Per poter sostenere la prova d'esame gli studenti devono inviare via mail il seguente materiale al docente almeno una settimana prima della prova d'esame. 

  • Un documento contente l'analisi, la progettazione e, se ritenuto necessario, alcune specifiche relative all'implementazione. Questo documento deve includere, come minimo:  

    • use-case di utilizzo;

    •  

      elenco delle funzionalità principali;
    • descrizione dell'architettura e del flusso dei dati;
    • descrizione delle API (con relativi parametri e formato delle richieste);
    • descrizione dell'architettura interna dei client, indicando le differenze di progettazione tra i diversi client realizzati;
    • descrizione delle interfacce grafiche e dello schema di navigazione, indicando le differenze tra i diversi client realizzati.
    • Si suggerisce agli studenti di cercare di valorizzare i princìpi di progettazione studiati a lezione, evidenziando dove, all'interno della propria progettazione, tali princìpi sono stati applicati.
  • Il codice sorgente delle applicazioni realizzate.

  • Una pagina web contenente una breve descrizione (circa 100 parole) del progetto svolto. La pagina ha scopo divulgativo e deve presentare al pubblico l'applicazione realizzata. Tale pagina deve inoltre contenere un breve video (circa 1 minuto) di presentazione dell'applicazione e, a discrezione degli studenti, qualche screen-shot dell'applicazione.

Appelli e iscrizioni.

L'esame avvine su appuntamento, concordato almeno una settimana in anticipo con il docente. La verablizzazione avviene esclusivamente durante le sessioni d'esame e previa iscrizione degli studenti.