Disporre delle adeguate capacità di analisi, affrontare e risolvere problematiche in contesti ampi e interdisciplinari, delineare le corrette strategie di sviluppo per il raggiungimento dell’obiettivo finale.
Sviluppare un progetto software di qualità implica il possesso di una solida padronanza di paradigmi, strumenti e linguaggi di programmazione, nonché delle più ampie e necessarie metodologie di ingegneria del software: dalle specifiche algoritmiche di alto livello, alle fasi di sviluppo, dalla validazione funzionale, al rilascio finale dell’applicazione.
Il tutto con piena padronanza di strumenti che, oltre all’informatica, riguardano anche i domini tipici della matematica, statistica ed econometria, e competenze interdisciplinari relative ai mondi dell’elettronica, dell’automazione, dell’impiantistica e della security.
-
Linguaggi di sviluppo: C, C++, C#, JAVA, J2EE, .NET, PYTHON, PERL, PHP, IEC-1131 (FDB, ST, LADDER)
-
Linguaggi nativi e ibridi per applicazioni mobile: Ionic, Angular JS, HTML, XML, JSON, Java, Objective C, Swift
-
Sistemi Operativi: Windows, Windows CE, Unix, Linux
-
Metodologie: AGILE, SCRUM
-
Ambienti di sviluppo/configurazione: ClearCase, Subversion, CVS, GIT
-
Comunicazione: DALI, KNX, EIB, Modbus, LON, Profibus, CANopen, Ethernet/IP, BACnet ecc.
-
Connettività: M2M (Machine to machine), IoT (Internet of Things), Cloud (tecnologie e servizi)
-
Hardware: controllori programmabili Siemens, architetture PLC, architetture ARM-based (Cortex-A e Cortex-M), architetture Intel-based (Core ix, Atom, Celeron, Xeon)
-
Reti neurali, Machine learning: modelli di apprendimento automatico, programmazione logica induttiva, algoritmi e reti bayesiani ecc.