Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
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.