PROGETTO GPS GIOVANI ROGRAMMATORI E SVILUPPATORI … · Android Development II (30 ore) Obiettivi...

16
PROGETTO GPS GIOVANI ROGRAMMATORI E SVILUPPATORI CORSO MOBILE DEVELOPER JUNIOR Attribuzioni previste per la figura professionale Le responsabilità primarie della figura del Mobile Developer sono relative allo sviluppo, al testing, al deployment e alla manutenzione di applicazioni per dispositivi mobili. Partendo dalle specifiche ricevute dall’analista software, il Mobile Developer implementa le funzionalità richieste dalle specifiche, eseguendone il testing prima del rilascio. È inoltre in grado di argomentare le scelte implementative effettuate e di scrivere documentazione esauriente per il codice prodotto. Quando lo sviluppo avviene in team, il Mobile Developer segue gli indirizzi del team leader ed interagisce con gli altri membri del team per coordinare le attività di sviluppo delle interfacce che consentono l’interazione tra i diversi moduli software. Può interagire con gli utenti/clienti in modo da raccogliere i requirement relat ivi a nuove funzionalità o le specifiche delle problematiche sorte durante l’utilizzo. Il Mobile Developer Junior è in grado di valutare e confrontare nuovi prodotti software, protocolli o applicazioni. Può partecipare, con mansioni ristrette al supporto tecnico, alle fasi iniziali del ciclo di vita dell’applicazione, a partire dalle primissime fasi della sua concezione ed intervenendo nella fase di progettazione di massima o esecutiva. È in grado di progettare, implementare e validare semplici interfacce utente che consentano il miglioramento della user experience. Può infine avere la responsabilità tecnica di pubblicazione delle applicazioni sviluppate su market quali Android Market o App store. Descrizione delle competenze dei formati al termine del corso Al termine del percorso formativo, il discente avrà acquisito autonomia nello sviluppo di applicazioni in linguaggio Java per il sistema operativo Android. Oltre alle nozioni sull’architettura del sistema operativo e di un framework di sviluppo di App, l a classe avrà acquisito ampie competenze che includeranno: i principi dell’ingegneria del software, i fondamenti della progettazione e d analisi algoritmica, i concetti base ed avanzati legati alla programmazione ad oggetti ed al suo utilizzo in Java, tecniche avanzate di programmazione sequenziale e tecniche avanzate per la programmazione concorrente, le tecniche di utilizzo delle risorse di rete fornite dai dispositivi, le modalità di interazione con l’hardware dei dispositivi, ivi incluso l’utilizzo dei sis temi di geolocalizzazione, fondamentali per la produzione di App location-aware.

Transcript of PROGETTO GPS GIOVANI ROGRAMMATORI E SVILUPPATORI … · Android Development II (30 ore) Obiettivi...

PROGETTO GPS – GIOVANI ROGRAMMATORI E SVILUPPATORI

CORSO MOBILE DEVELOPER JUNIOR

Attribuzioni previste per la figura professionale

Le responsabilità primarie della figura del Mobile Developer sono relative allo sviluppo, al testing, al deployment e alla

manutenzione di applicazioni per dispositivi mobili.

Partendo dalle specifiche ricevute dall’analista software, il Mobile Developer implementa le funzionalità richieste dalle specifiche,

eseguendone il testing prima del rilascio. È inoltre in grado di argomentare le scelte implementative effettuate e di scrivere

documentazione esauriente per il codice prodotto. Quando lo sviluppo avviene in team, il Mobile Developer segue gli indirizzi del

team leader ed interagisce con gli altri membri del team per coordinare le attività di sviluppo delle interfacce che consentono

l’interazione tra i diversi moduli software. Può interagire con gli utenti/clienti in modo da raccogliere i requirement relativi a nuove

funzionalità o le specifiche delle problematiche sorte durante l’utilizzo.

Il Mobile Developer Junior è in grado di valutare e confrontare nuovi prodotti software, protocolli o applicazioni. Può partecipare,

con mansioni ristrette al supporto tecnico, alle fasi iniziali del ciclo di vita dell’applicazione, a partire dalle primissime fasi della

sua concezione ed intervenendo nella fase di progettazione di massima o esecutiva. È in grado di progettare, implementare e

validare semplici interfacce utente che consentano il miglioramento della user experience. Può infine avere la responsabilità tecnica

di pubblicazione delle applicazioni sviluppate su market quali Android Market o App store.

Descrizione delle competenze dei formati al termine del corso

Al termine del percorso formativo, il discente avrà acquisito autonomia nello sviluppo di applicazioni in linguaggio Java per il

sistema operativo Android. Oltre alle nozioni sull’architettura del sistema operativo e di un framework di sviluppo di App, la classe

avrà acquisito ampie competenze che includeranno: i principi dell’ingegneria del software, i fondamenti della progettazione ed

analisi algoritmica, i concetti base ed avanzati legati alla programmazione ad oggetti ed al suo utilizzo in Java, tecniche avanzate di

programmazione sequenziale e tecniche avanzate per la programmazione concorrente, le tecniche di utilizzo delle risorse di rete

fornite dai dispositivi, le modalità di interazione con l’hardware dei dispositivi, ivi incluso l’utilizzo dei sistemi di geolocalizzazione,

fondamentali per la produzione di App location-aware.

Requisiti per l’accesso e modalità di selezione

Propensione all’uso delle tecnologie informatiche

Motivazione

La sussistenza dei requisiti verrà verificata in ingresso mediante test di verifica e colloquio motivazionale a cura degli operatori delle

Agenzie per il Lavoro e degli enti formativi.

Articolazione didattica dei percorsi formativi

Modulo 1. Introduzione alla programmazione Java (30 ore)

Obiettivi del modulo: fornire allo studente le conoscenze di base relative al linguaggio Java. Il modulo si prefigge, altresì, di formare

lo studente alle tecniche di base di programmazione ed ai concetti base della programmazione ad oggetti.

Contenuti:

Concetti base di programmazione; variabili mono e multi-dimensionali; il controllo di flusso

Introduzione al linguaggio Java; scope delle variabili; struttura di una classe Java; creazione ed esecuzione di applicazioni

eseguibili; import di package Java; proprietà del linguaggio: indipendenza dalla piattaforma, object orientation,

incapsulamento, etc.

Data types; dichiarazione e inizializzazione variabili; differenze tra variabili primitive e riferimenti ad oggetti; lettura o

modifica di campi; ciclo di vita degli oggetti; utilizzo delle classi wrapper

Operatori e costrutti decisionali; utilizzo degli operatori e override delle priorità, utilizzo dei costrutti if e costrutti ternari;

utilizzo del costrutto switch; confronto tra stringhe

Array mono- e multi-dimensionali

Utilizzo dei costrutti di iterazione: while, for, do/while; utilizzo di break e continue

Modulo 2. Introduzione alle Strutture Dati in Java (15 ore)

Obiettivi del modulo: fornire le conoscenze di base per la progettazione e l’implementazione di strutture elementari di base in Java,

sia statiche che dinamiche.

Contenuti:

Notazione asintotica, calcolo del tempo di esecuzione e dello spazio utilizzato da un algoritmo

Introduzione alla progettazione di algoritmi

Strutture dati elementari. Progettazione ed analisi: code, heap, stack, liste, alberi

Modulo 3. Introduzione alla progettazione di database (15 ore)

Obiettivi del modulo: trasferire le metodologie per la progettazione di una base di dati. In particolare, lo studente acquisirà le

metodologie per strutturare il progetto e gli elementi per la comprensione della struttura, delle funzionalità e degli aspetti tecnologici

dei sistemi per la gestione di basi di dati (DBMS) con particolare riferimento a quelli che adottano un modello relazionale dei dati.

Contenuti:

Architettura dei Sistemi per la gestione di basi di dati

Progettazione concettuale di un database. Schemi Entità-Associazione

Il modello relazionale dei dati e progettazione logica

Algebra relazionale

Lo standard SQL99: definizione dei dati e dei vincoli, interrogazione dei dati, manipolazione dei dati

Introduzione a XML e JSON

Modulo 4. Ingegneria del Software (30 ore)

Obiettivi del modulo: fornire le conoscenze di base dell’ingegneria del software, dei processi di ingegneria del software e delle

relative fasi, attività e deliverable. In particolare, lo studente acquisirà conoscenze sui metodi di analisi e progettazione nonché sui

principali linguaggi di modellazione del software per la raccolta dei requisiti e la comunicazione tra diversi attori coinvolti in un

processo di ingegneria del software.

Contenuti:

Introduzione all'Ingegneria del Software; concetti di prodotto software; attributi di qualità del software

L'Ingegneria dei Requisiti. Analisi e specifica dei Requisiti; il documento dei Requisiti Software

UML: Class Diagrams, Sequence Diagrams, Activity Diagrams, Statecharts

System Design e principali Architetture Software

Modulo 5. Android Development I (30 ore)

Obiettivi del modulo: fornire elementi di base per lo sviluppo di applicazioni su sistema operativo Android. Lo studente comprenderà

l’architettura del sistema operativo, acquisirà le competenze per utilizzare un framework di sviluppo complesso ed applicare gli

elementi base per la creazione di semplici applicazioni.

Contenuti:

Introduzione al framework Android e Android Studio; l’architettura del framework; le librerie Android; componenti di una

applicazione Android; Tipi di processo Android

L’SDK Android e la Classe Activity:

- Struttura di un progetto Android e la classe Manifest

- I tool di sviluppo, il device monitor, il debug bridge. Profilazione dispositivo, monitoring della batteria

- Le activity, creazione e ciclo di vita

Fragmets, views a list views:

- Fragments. Ciclo di vita, creazione ed aggiunta di fragments in applicazioni

- Views: Definizione, utilizzo ed aggiunta di views ad applicazioni

- List views. Utilizzo di ListActivity, aggiunta di Lisst Views alle applicazioni, eventi e list items.

- Recycler View. Differenze tra RecyclerView e ListView. Creazione di RecyclerView.

- CardView. Definizione

- Permessi a Runtime.

Intent ed Intent Filters:

- Intent espliciti ed impliciti; native Actions in Android; invocazione di alter Activity

Deep Linking

Modulo 6. Progettazione ed implementazione di interfacce utente (30 ore)

Obiettivi del modulo: favorire la comprensione delle principali strategie e metodologie per lo sviluppo di interfacce utente in sistemi

Android. Il percorso include una prima parte metodologica durante la quale i discenti acquisiranno i principi alla base della

progettazione delle interfacce utente. Una volta acquisite tali competenze metodologiche, il modulo si concentrerà sugli strumenti

forniti da Android per lo sviluppo delle interfacce utente.

Contenuti:

Introduzione a UI/UX Design; principi di UI Design; mockup dell’interfaccia utente

Implementazioni di interfacce in Android

Layout di Android e Custom view. View; Layout, proprietà, caricamento di layout da codice, caricamento di layout in una

activity/fragment; creazione di layout in Android Studio; custom View; modifica di view esistenti; ConstraintLayout

Risorse e Temi; creazione, utilizzo e tipi di risorse in Android; creazione di temi in Android; utilizzo di Material Design

Interazione in Android tramite messaggi; le sotto-classi di Dialog; creazione di un dialog con un layout definito dall’utente;

creazione di Alert e progress dialog; Activity con Dialog Theme

Toast e Snackbar in Android

WebView

Modulo 7. Android Development II (30 ore)

Obiettivi del modulo: fornire agli studenti gli strumenti avanzati per lo sviluppo di App in sistemi Android attraverso l’acquisizione

di conoscenze che consentano lo sviluppo di App che utilizzano appieno le potenzialità offerte dal web 2.0 e dalla tecnologia dei

dispositivi hardware in uso.

Contenuti:

File I/O, Risorse condivise

Connessione ad Internet

Background Processing; Threading, Sincronizzazione, Servizi, Frammenti e Receiver in background.

Database in Android. Introduzione, SQLite, content providers, content provider native e custom, Sync adapters, ORMLite

Le notifiche in Android: creazione di notifiche, azioni di notifica, notifiche espandibili, layout di notifica, priorità di una

notifica

App Location aware; GPS e suo funzionamento; metodi per catturare la posizione utente; utilizzo di Google Maps, Pins,

layers e custom drawing. La classe geocoder; richiesta dei permessi per accesso alla locazione; testing del GPS su

emulatori Android

Durata del progetto formativo

12 Settimane (3 incontri a settimana)

Esame finale per la valutazione dell’intervento formativo

Certificazione ICT: Android ATC - Android Application Development;

Codice Esame: AND-401

Accompagnamento all’inserimento lavorativo

Al termine del percorso formativo, le 4 agenzie per il lavoro si occuperanno della promozione dei profili in uscita per favorirne

l’inserimento professionale nelle imprese presenti sui territori di riferimento.

PROGETTO GPS – GIOVANI PROGRAMMATORI E SVILUPPATORI

CORSO WEB DEVELOPER

Attribuzioni previste per la figura professionale:

Il ruolo svolto dal Web Developer è quello di sviluppare applicazioni che utilizzano il World Wide Web. Caratteristica delle

applicazioni web è la presenza di due componenti interoperanti: la componente server e la componente client. Partendo dalle

specifiche ricevute dall’analista software, il Web Developer è in grado di implementare funzionalità richieste dalle specifiche per

una delle due componenti o per entrambe, eseguendone il testing prima del rilascio. Ha il compito, da un lato, di documentare

efficacemente il software prodotto, dall’altro di creare layout di siti web ed interfacce utente attraverso l’utilizzo dei linguaggi di

markup o di programmazione come HTML, CSS o Javascript. È deputato allo sviluppo di applicazioni lato server attraverso

specifiche tecnologie di sviluppo può essere impiegato nella manutenzione di sistemi o servizi sviluppati da terzi.

Descrizione delle competenze dei formati al termine del corso

Al termine del percorso formativo, ogni discente avrà acquisito autonomia nello sviluppo di applicazioni Web. Particolare attenzione

viene posta allo sviluppo della componente client in relazione alla interattività delle soluzioni sviluppabili. Le competenze acquisite

in uscita saranno ampie ed includeranno, oltre alle nozioni, i principi dell’ingegneria del software, i fondamenti della progettazione

algoritmica, i concetti base legati alla programmazione ad oggetti, tecniche di sviluppo di applicazioni web utilizzando il pattern

MVC

Requisiti per l’accesso e modalità di selezione

Propensione all’uso delle tecnologie informatiche

Motivazione

La sussistenza dei requisiti verrà verificata in ingresso mediante test di verifica e colloquio motivazionale a cura degli

operatori delle Agenzie per il Lavoro e degli enti formativi.

Articolazione didattica dei percorsi formativi

Modulo 1. Introduzione alla programmazione utilizzando linguaggi blocchi (30 ore)

Obiettivi del modulo: trasferire ai discenti le tecniche fondamentali di progettazione algoritmica. Lo studente comprenderà la

necessità di identificare i passi elementari per la soluzione di problemi complessi, le opportunità offerte dai costrutti per il controllo

di flusso e dagli iteratori. L’attività di comprensione sarà coadiuvata dall’utilizzo di strumenti visuali quali il linguaggio Scratch.

Contenuti:

Soluzione di problemi tramite passi computazionali; decomposizione di problemi in sotto-problemi

Progettazione di algoritmi; analisi di “Gameplay” per l’identificazione dei passi di gioco; progettazione algoritmo di gioco:

sequenze, selettori ed iteratori

Modellazione e simulazione di problemi computazionali: utilizzo di algoritmi, logica booleana per la simulazione di task

reali; creazione di applicazioni che simulano processi fisici (gravità, accelerazione, etc.)

Implementazione di algoritmi; utilizzo di librerie built-in; identificazioni di correlazioni tra formulazione/modellazione

matematica e implementazione

Introduzione ad Internet; elementi di base di sicurezza informatica; implementazione di strategie elementari di

autenticazione e cifratura

Elementi base del processo di sviluppo software; analisi dei requisiti; identificazione delle soluzioni; pianificazione della

suddivisione del lavoro; valutazione delle soluzioni proposte

Modulo 2. Principi di Programmazione (30 ore)

Obiettivi del modulo: trasferire ai discenti le tecniche fondamentali per la progettazione e l’implementazione di applicazioni; favorire

la comprensione dei paradigmi di programmazione imperativa e ad oggetti; favorire lo sviluppo delle capacità di astrazione e

problem-solving.

Contenuti:

Struttura di un computer

Macchina di von Neumann

Rappresentazione delle informazioni

Concetto di algoritmo; Progettazione top-down; La progettazione di algoritmi: metodologie, strutture di controllo; Strutture

dati. Array e stringhe

File; ricorsione

Principi di programmazione ad oggetti: classi e metodi; ereditarietà; polimorfismo; incapsulamento

Modulo 3. Laboratorio di Programmazione (30 ore)

Obiettivi del modulo: favorire lo sviluppo delle capacità di astrazione e di problem-solving attraverso la scrittura di algoritmi e la loro

successiva implementazione. In laboratorio lo studente imparerà a progettare e implementare programmi anche in collaborazione con

altri studenti.

Contenuti:

Rappresentazione di dati e istruzioni

Costanti macchina

Introduzione alle funzionalità elementari del sistema operativo

Introduzione al linguaggio C#

Ambiente di sviluppo di programmi. Il processo di sviluppo software

La documentazione del software

Le librerie standard

Modulo 4. Programmazione Client Side (30 ore)

Obiettivi del modulo: formare gli studenti sulle principali tecnologie per lo sviluppo di applicazioni web lato client. La trattazione

includerà lo sviluppo di interfacce dinamiche e della interazione con dispositivi touch.

Contenuti:

Introduzione alle reti di calcolatori. Il protocollo http; architettura multi-tier; linguaggi di markup HTML, XML, XHTML,

DOM

Il linguaggio HTML5. Sintassi; i tag per la visualizzazione di testo, oggetti grafici, media; Organizzare contenuto e form;

controllo degli input.

I fogli di style, CSS3. Introduzione; allocazione flessibile di elementi della UI; gestione dei flussi; gestione della interfaccia

grafica

Introduzione al linguaggio Javascript. Variabili, operatori, confronti, iteratori, gestione degli errori, creazione di metodi ed

oggetti. Modifica della UI tramite Javascript; invio, ricezione dati; trasmissione dati complessi; forms; cookies; utilizzo di

interfacce touch; GeoLocation; Web Workers; WebSocket; accesso a risorse del sistema operativo

Modulo 5. Principi di Programmazione Server Side (40 ore)

Obiettivi del modulo: formare gli studenti sui principi di sviluppo di applicazioni web last server. In particolare vengono fornite le

competenze per lo sviluppo di semplici applicazioni utilizzando la tecnologia ASP.NET MVC.

Contenuti:

Introduzione allo sviluppo di applicazioni web. Il pattern MVC. Introduzione a ASP.NET MVC

Introduzione alla progettazione di database; principi di SQL

Le componenti Model, View e Controller e loro implementazione ASP.NET

Form e viste in ASP.NET MVC; implementazione di azioni, viste; gestione del POST; validazione dati

Modulo 6. Laboratorio di Sviluppo Web (20 ore)

Obiettivi del modulo: trasferire, tramite attività hands-on, le tecniche per lo sviluppo di una web application, curando lo sviluppo sia

del lato server che del lato client.

Contenuti:

Questa attività laboratoriale prevede l’ideazione, la progettazione e lo sviluppo di un semplice progetto in cui possano

essere misurate e sviluppate le competenze acquisite negli altri moduli del percorso formativo.

Durata del progetto formativo

12 Settimane (3 incontri a settimana)

Esame finale per la valutazione dell’intervento formativo

Certificazione ICT: Microsoft MTA Developer

Codici Esame:

98-361 Software Development Fundamentals

98-375 HTML5 App Development Fundamentals

98-380 Introduction to Programming with Block-Based Languages

Accompagnamento all’inserimento lavorativo

Al termine del percorso formativo, le 4 agenzie per il lavoro si occuperanno della promozione dei profili in uscita per favorirne

l’inserimento professionale nelle imprese presenti sui territori di riferimento

PROGETTO GPS – GIOVANI PROGRAMMATORI E SVILUPPATORI

CORSO DATA SCIENTIST

Attribuzioni previste per la figura professionale

Il Data Scientist Junior ha il ruolo operativo di estrarre dati in maniera proattiva da fonti dinamiche ed eterogenee al fine di

comprendere il trend di sviluppo di un processo. Strumenti tipici utilizzati per questo scopo sono algoritmi di classificazione e

primitive di intelligenza artificiale. A tal fine il Data Scientist Junior è coinvolto in tutte le fasi di acquisizione ed analisi dei dati. In

particolare: si occupa dell’interrogazione delle basi di dati contenenti i dati e, interagendo con il Data Scientist Senior, può

suggerire le specifiche delle caratteristiche da monitorare in un dato processo; utilizza gli strumenti identificati al livello aziendale

per l’inclusione di dati di terze parti, il data cleansing, la verifica di integrità ed il data mining; crea, su richiesta, strumenti ad-hoc

per l’analisi delle anomalie; può svolgere mansioni di gestione ed implementazione di semplici basi di dati utilizzate per

semplificare il lavoro di analisi; utilizza gli strumenti di classificazione che consentono l’elaborazione dei dati estratti. A tal fine, il

Data Scientist è in grado di comprendere la complessità degli strumenti utilizzati e fornisce, su richiesta, stime delle risorse

necessarie per la loro esecuzione e, infine, prepara report efficaci che comunicano in m aniera opportuna i risultati della analisi

effettuate sui dati.

Descrizione delle competenze dei formati al termine del corso

Al termine del percorso formativo, ogni discente avrà acquisito autonomia nella progettazione e nel deployment di metodi di analisi

dei dati. Ogni studente sarà esposto alle metodologie di data cleaning, analisi statistica, analisi di serie temporali nonché ad avanzate

tecniche algoritmiche di classificazione. Dopo aver appreso la parte metodologica, i discenti saranno esposti alle tecnologie di analisi

e visualizzazione dei dati. Saranno loro impartiti i principi base, sia metodologici che tecnologici, per la presentazione efficace di dati

aggregati, anche via web

Requisiti per l’accesso e modalità di selezione

Laurea Triennale in

Informatica

Ingegneria Informatica

Matematica

Statistica

La sussistenza dei requisiti verrà verificata in ingresso mediante test di verifica e colloquio motivazionale a cura degli operatori delle

Agenzie per il Lavoro e degli enti formativi.

Articolazione didattica dei percorsi formativi

Modulo 1. Introduzione alla Data Science (20 ore)

Obiettivi: presentare la figura del Data Scientist e le skill che caratterizzano questa nuova figura professionale. Nel modulo verrà

inoltre descritto il processo di creazione dei Data Analytics, analizzando in dettaglio ogni sua singola fase.

Contenuti:

Il ruolo del Data Scientist:

- Caratteristiche dei Big Data

- Data Analytics

- Le skill richieste ad un Data Scientist

Il ciclo di vita dei Data Analytics:

- Discovery; Data preparation; pianificazione e costruzione del modello; comunicazione dei risultati; esecuzione di

un progetto di Data Analytics.

Modulo 2. Statistica ed Analisi dei Dati (40 ore)

Obiettivi del modulo: fornire gli strumenti fondamentali della Statistica, con particolare attenzione ai metodi della Statistica

descrittiva e inferenziale per l’analisi di dati osservati. Al termine del percorso lo studente sarà in grado di: scegliere e utilizzare

l’opportuna rappresentazione grafica, l’opportuna tavola statistica e servirsi delle funzioni del Linguaggio R.; utilizzare i principali

metodi quantitativi al fine di analizzare e investigare aspetti essenziali dei fenomeni aleatori; elaborare ed interpretare dati di natura

quantitativa e qualitativa in maniera da organizzare sistematicamente tali valutazioni in una riflessione articolata; trasferire ad altri,

con padronanza di linguaggio tecnico, informazioni e valutazioni relative a distribuzioni di dati inerenti il contesto di proprio

interesse.

Contenuti:

Metodi di rilevazione dati e loro rappresentazioni grafiche

Distribuzioni di frequenza; indici di posizione, di variabilità, di forma

Indice di Laspeyres e indice di Paasche

Concentrazione e sua misura

Elementi di base di probabilità e principali distribuzioni di probabilità discrete e assolutamente continue; test esatti per le

proporzioni

Test approssimati per le proporzioni e per le medie

Le tavole di contingenza e il test chi-quadrato

Tools per la rappresentazione grafica di dati

Il linguaggio “R”

Metodi di regressione: regressione lineare e logistica

Analisi di serie temporali: la metodologia Box-Jenkins; il modello ARIMA

Modulo 3. Tecniche avanzate per il trattamento dei dati (40 ore)

Obiettivi del modulo: nell’analisi di un’ingente mole di dati è di fondamentale importanza l’operazione di selezione di un

sottoinsieme compatto di caratteristiche disponibili, capace di rappresentare correttamente le informazioni più rilevanti contenute nei

dati. Il modulo mira a trasferire allo studente le nozioni di base per l’analisi avanzata di dataset con particolare attenzione all’analisi

predittiva e del data mining. Durante il percorso saranno inoltre proposte tecniche avanzate di analisi dei dati.

Contenuti:

Caratteristiche dei dati

Data cleaning e pre-processing dei dati

Esplorazione statistica dei dati; misure di similarità e dissimilarità; Feature selection

Tecniche di clustering. K-Means

Regole associative; profilazione

Tecniche di classificazione: alberi decisionali, classificatori bayesiani

Tecniche di text mining e data mining

Modulo 4. Laboratorio di Analisi dei dati (40 ore)

Obiettivi del modulo: presentare agli studenti alcune delle tecnologie per la pianificazione e l’esecuzione di Data Analytics su dati

non strutturati o in- database.

Contenuti:

Analytics su dati non strutturati

L’ecosistema Hadoop: Pig, Hive, Hbase, Mahout

Introduzione a NoSQL

Introduzione a SQL

Analisi in-Database

SQL Avanzato

Modulo 5. Visualizzazione Dati e Comunicazione Risultati (40 ore)

Obiettivi del modulo: fornire allo studente le competenze necessarie alla creazione di deliverable efficaci alla comunicazione dei

risultati dell’analisi dei dati, incluse tecniche di visualizzazione di dati estratti da data set complessi: In particolare. Al termine del

percorso, gli studenti saranno in grado di individuare la tipologia di visualizzazione più opportuna per rappresentare in maniera

efficace l’informazione richiesta, determinare i parametri che consentono una visualizzazione interattiva dei dati e progettare un

sistema che visualizzi i dati su sistemi stand-alone o via web.

Contenuti:

Creazione di deliverable: tecniche, contenuti e best practice

Introduzione alla visualizzazione dei dati

Rappresentazioni dati: sparkline, heatmap, grafici a barre, a torta, etc.

Utilizzo di strumenti software per la creazione di grafici

Utilizzo di strumenti software per la visualizzazione grafica interattiva via web.

Durata del progetto formativo

12 Settimane (3 incontri a settimana)

Esame finale per la valutazione dell’intervento formativo

Certificazione ICT: Dell EMC Data Science and Big Data Analytics

Codice esame: E20-007

Accompagnamento all’inserimento lavorativo

Al termine del percorso formativo, le 4 agenzie per il lavoro si occuperanno della promozione dei profili in uscita per favorirne

l’inserimento professionale nelle imprese presenti sui territori di riferimento.

PROGETTO GPS – GIOVANI PROGRAMMATORI E SVILUPPATORI

CORSO PROGRAMMATORE JAVA

Attribuzioni previste per la figura professionale: Il ruolo svolto dal programmatore Java consiste nello sviluppo di applicazioni nel

linguaggio di programmazione Java. Partendo dalle specifiche ricevute dall’analista software, implementa le funzionalità richieste

dalle specifiche, eseguendone il testing prima del rilascio.

Tra i compiti del programmatore rientrano l’interazione con il team di sviluppo per la specifica delle interfacce tra moduli software,

l’analisi e la risoluzione delle criticità riscontrate durante la fase di sviluppo. A tal fine il programmatore Java ha il compito di

preparare la documentazione che descrive opportunamente il codice sviluppato. Può avere l’onere di testare, validare e/o

confrontare nuovi prodotti o librerie software al fine di verificare la loro integrabilità in applicazioni Java.

Tra le proprie mansioni possono essere comprese la progettazione e l’implementazione di semplici basi di dati che vengono

utilizzate, su richiesta dell’analista software o del team leader, in fase di sviluppo delle applicazioni in luogo delle banche dati

presenti in ambienti operativi.

Descrizione delle competenze dei formati al termine del corso

Al termine del percorso formativo, ogni discente avrà acquisito autonomia nello sviluppo di applicazioni in linguaggio Java ed avrà

acquisita ampie competenze che includeranno, oltre ai costrutti di base del linguaggio, anche i principi dell’ingegneria del software, i

fondamenti della progettazione e della analisi algoritmica, i concetti base ed avanzati legati alla programmazione ad oggetti ed al suo

utilizzo in Java, tecniche avanzate di programmazione sequenziale e tecniche avanzate per la programmazione concorrente.

Requisiti per l’accesso e modalità di selezione

Propensione all’uso delle tecnologie informatiche

Motivazione

La sussistenza dei requisiti verrà verificata in ingresso mediante test di verifica e colloquio motivazionale a cura degli operatori delle

Agenzie per il Lavoro e degli enti formativi.

Articolazione didattica dei percorsi formativi

Modulo 1. Introduzione alla programmazione Java (30 ore)

Obiettivi del modulo: fornire ai discenti le conoscenze di base relative al linguaggio Java; trasferire le tecniche di base di

programmazione e i concetti di base della programmazione ad oggetti.

Contenuti:

Concetti base di programmazione; variabili mono e multi-dimensionali; il controllo di flusso; gli iteratori

Introduzione al linguaggio Java; scope delle variabili; struttura di una classe Java; creazione ed esecuzione di applicazioni

eseguibili; import di package java; proprietà del linguaggio: indipendenza dalla piattaforma, object orientation

incapsulamento, etc.

Data types. Dichiarazione e inizializzazione variabili; differenze tra variabili primitive e riferimenti ad oggetti; lettura o

modifica di campi; ciclo di vita degli oggetti; utilizzo delle classi wrapper

Operatori e costrutti decisionali; utilizzo degli operatori e override delle priorità, utilizzo dei costrutti if e costrutti ternari;

utilizzo del costrutto switch; confronto tra stringhe

Array mono- e multi-dimensionali

Utilizzo dei costrutti di iterazione: while, for, do/while; utilizzo di break e continue

Modulo 2. Algoritmi e Strutture Dati in Java (40 ore)

Obiettivi del modulo: fornire le conoscenze di base per la progettazione e l'analisi di algoritmi e strutture dati efficienti in Java

garantendo la comprensione delle tecniche di base per l’analisi degli algoritmi, della progettazione di strutture dati di base, sia

statiche che dinamiche. Le nozioni teoriche apprese saranno corredate da implementazioni nel linguaggio Java, consentendo la piena

comprensione del processo di progettazione e sviluppo. Lo studente conoscerà un insieme minimale di algoritmi per la soluzione di

problemi notevoli.

Contenuti:

Notazione asintotica, calcolo del tempo di esecuzione e dello spazio utilizzato da un algoritmo

Principali algoritmi di ordinamento e loro analisi di complessità

Strutture dati elementari; progettazione ed analisi: code, heap, stack, liste, alberi

Alberi di ricerca binaria

Algoritmi di visita per grafi, BFS, DFS

Modulo 3. Java Advanced (30 ore)

Obiettivi del modulo: presentare allo studente concetti avanzati dei linguaggi ad oggetti e del linguaggio Java in particolare.

Contenuti:

Creazioni di metodi ed incapsulamento. Overloading in Java. Creazione ed overloading di costruttori; modificatori

d’accesso; principi di incapsulamento; parametri dei metodi

Ereditarietà: Definizione e vantaggi; polimorfismo; casting; super classe, riferimento alla classe this; classi astratte ed

interfacce

Eccezioni: Checked, unchecked exceptions ed errori; il controllo di flusso ed il costrutto try-catch; vantaggi legati

all’exception handling; creazione e invocazione di metodi che lanciano eccezioni; riconoscimento delle classi di eccezioni

più comuni

Utilizzo di specifiche classi Java. StringBuilder; String; Manipolazione di date; utilizzo di ArrayList di tipi arbitrari;

Lambda expressions.

Modulo 4. Programmazione concorrente in Java (20 ore)

Obiettivi del modulo: presentare allo studente la programmazione multi-thread in Java. Lo studente apprenderà le problematiche

insite nella programmazione multi-thread e le relative soluzioni, le metodologie di implementazione in Java, e le tecniche di

sincronizzazione tra thread.

Contenuti:

La programmazione multi-thread; nozione di thread; thread in Java

Creazione, cancellazione ed interruzione di thread in Java

Comunicazione tra thread; le aree di memoria condivise; le sezioni critiche

Sincronizzazione tra thread; metodi e blocchi sincronizzati. Condition variable; code bloccanti.

Modulo 5. Progettazione di database (30 ore)

Obiettivi del modulo: consentire l’acquisizione delle metodologie per la progettazione e l'implementazione di una base di dati e la

predisposizione della sua interfaccia con utenti e/o programmi applicativi. In particolare, lo studente acquisirà le metodologie per

strutturare e documentare il progetto nonché gli elementi per la comprensione della struttura, delle funzionalità e degli aspetti

tecnologici dei sistemi per la gestione di basi di dati (DBMS), con particolare riferimento a quelli che adottano un modello

relazionale dei dati.

Contenuti:

Architettura dei Sistemi per la gestione di basi di dati

Progettazione concettuale di un database; schemi Entità-Associazione e/o Class Diagram di UML

Il modello relazionale dei dati e progettazione logica

Algebra relazionale

Lo standard SQL99: definizione dei dati e dei vincoli, interrogazione dei dati, manipolazione dei dati

Progettazione logica e normalizzazione di schemi relazionali.

SQL nei linguaggi di programmazione; tecnologia di un database server

Utilizzo di Database in Applicazioni Java

Modulo 6. Ingegneria del Software (30 ore)

Obiettivi del modulo: fornire le conoscenze di base dell’ingegneria del software, dei processi di ingegneria del software e delle

relative fasi, attività e deliverable. In particolare, lo studente acquisirà conoscenze sui metodi di analisi e progettazione, e sui

principali linguaggi di modellazione del software per la raccolta dei requisiti e la comunicazione tra diversi attori coinvolti in un

processo di ingegneria del software.

Contenuti:

Introduzione all'Ingegneria del Software; concetti di prodotto software, attributi di qualità del software

L'Ingegneria dei Requisiti; analisi e specifica dei Requisiti; il documento dei Requisiti Software

UML: Class Diagrams, Sequence Diagrams, Activity Diagrams, Statecharts

System Design e principali Architetture Software

Durata del progetto formativo

12 settimane (tre incontri a settimana)

Esame finale per la valutazione dell’intervento formativo

Certificazione ICT: Oracle Java SE 8 Programmer I

Codice esame: 1Z0-808

Accompagnamento all’inserimento lavorativo

Al termine del percorso formativo, le 4 agenzie per il lavoro si occuperanno della promozione dei profili in uscita per favorirne

l’inserimento professionale nelle imprese presenti sui territori di riferimento.