Camil Demetrescu, Marco Fratarcangeli, Alberto Marchetti

Curriculum Triennale in Ingegneria Informatica
per la Prossima Decade: l’Esperienza della
Sapienza
Salerno, 19 Settembre 2013 –
Workshop AICA: Sfide Didattiche per l’Informatica del 2020
Camil Demetrescu, Marco Fratarcangeli,
Alberto Marchetti Spaccamela, Massimo
Mecella, Daniele Nardi, Francesco Quaglia,
Riccardo Rosati, Leonardo Querzoni, Andrea
Vitaletti
Contesto e motivazioni
•  L’evoluzione del ruolo dell’ICT nella società
nell’ultima decade ha cambiato il tipo di
competenze richieste all’ingegnere informatico
•  Nuove sfide: cloud, sicurezza, multi-core, platformbased development, ecc.
•  Esigenza ristrutturazione profonda del curriculum
triennale in ingegneria informatica alla Sapienza
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 2
Agenda
• 
• 
• 
• 
• 
Riflessioni sulla figura dell’ingegnere informatico
Ruolo didattico dei linguaggi di programmazione
Cosa è successo nel resto del mondo
Indagine sui laureati in Ingegneria Informatica
La ristrutturazione:
–  Princìpi generali e linee guida
–  Il core del nuovo curriculum: i primi due anni
–  Il terzo anno
•  Conclusioni
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 3
Riflessioni sulla figura dell’ingegnere informatico
Mario Raffa,
l’Ingegnere oggi tra
azienda e società,
Storia dell’Ingegneria, Atti del
2° Convegno Nazionale,
Napoli, 2008
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 4
Riflessioni sulla figura dell’ingegnere informatico
Organizational Issues
& Information Systems
Application
Technologies
Computer Science Curricula 2013
(CS2013)
Software Methods
and Technologies
ACM/IEEE-CS Joint Task Force
http://ai.stanford.edu/users/sahami/CS2013/
System
Infrastructure
Computer Hardware
And Architecture
Theory
Principles
Innovation
More Theoretical
DEVELOPMENT
More Applied
Application
Deployment
Configuration
EE Electronic Eng.
CE Computer Eng.
CS Computer Science
SE Software Eng.
IT Information Technology
IS Information Systems
EE CE CS SE
Hardware
Software
IT
IS
Organizational
needs
Organizational Issues
& Information Systems
Application
Technologies
Software Methods
and Technologies
System
Infrastructure
Computer Hardware
And Architecture
Theory
Principles
Innovation
More Theoretical
DEVELOPMENT
More Applied
Application
Deployment
Configuration
EE Electronic Eng.
CE Computer Eng.
CS Computer Science
SE Software Eng.
IT Information Technology
IS Information Systems
EE CE CS SE
Hardware
Software
IT
IS
Organizational
needs
Organizational Issues
& Information Systems
Application
Technologies
IT
Software Methods
and Technologies
System
Infrastructure
Computer Hardware
And Architecture
Theory
Principles
Innovation
More Theoretical
DEVELOPMENT
More Applied
Application
Deployment
Configuration
EE Electronic Eng.
CE Computer Eng.
CS Computer Science
SE Software Eng.
IT Information Technology
IS Information Systems
EE CE CS SE
Hardware
Software
IT
IS
Organizational
needs
Organizational Issues
& Information Systems
IS
IT
Application
Technologies
Software Methods
and Technologies
System
Infrastructure
Computer Hardware
And Architecture
Theory
Principles
Innovation
More Theoretical
DEVELOPMENT
More Applied
Application
Deployment
Configuration
EE Electronic Eng.
CE Computer Eng.
CS Computer Science
SE Software Eng.
IT Information Technology
IS Information Systems
EE CE CS SE
Hardware
Software
IT
IS
Organizational
needs
Organizational Issues
& Information Systems
IS
IT
Application
Technologies
Software Methods
and Technologies
CE
System
Infrastructure
Computer Hardware
And Architecture
Theory
Principles
Innovation
More Theoretical
DEVELOPMENT
More Applied
Application
Deployment
Configuration
EE Electronic Eng.
CE Computer Eng.
CS Computer Science
SE Software Eng.
IT Information Technology
IS Information Systems
EE CE CS SE
Hardware
Software
IT
IS
Organizational
needs
Organizational Issues
& Information Systems
IS
IT
Application
Technologies
SE
Software Methods
and Technologies
CE
System
Infrastructure
Computer Hardware
And Architecture
Theory
Principles
Innovation
More Theoretical
DEVELOPMENT
More Applied
Application
Deployment
Configuration
EE Electronic Eng.
CE Computer Eng.
CS Computer Science
SE Software Eng.
IT Information Technology
IS Information Systems
EE CE CS SE
Hardware
Software
IT
IS
Organizational
needs
Organizational Issues
& Information Systems
IS
IT
Application
Technologies
CS
Software Methods
and Technologies
SE
CE
System
Infrastructure
Computer Hardware
And Architecture
Theory
Principles
Innovation
More Theoretical
DEVELOPMENT
More Applied
Application
Deployment
Configuration
EE Electronic Eng.
CE Computer Eng.
CS Computer Science
SE Software Eng.
IT Information Technology
IS Information Systems
EE CE CS SE
Hardware
Software
IT
IS
Organizational
needs
Organizational Issues
& Information Systems
IS
IT
Application
Technologies
Software Methods
and Technologies
CS SE
Engineering
inCS
CS
Engineering
in
CE
System
Infrastructure
Computer Hardware
And Architecture
Theory
Principles
Innovation
More Theoretical
DEVELOPMENT
More Applied
Application
Deployment
Configuration
Riflessioni sulla figura dell’ingegnere informatico
Mario Raffa, l’Ingegnere oggi tra azienda e società,
Storia dell’Ingegneria, Atti del 2° Convegno Nazionale, Napoli, 2008
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 13
Agenda
• 
• 
• 
• 
• 
Riflessioni sulla figura dell’ingegnere informatico
Ruolo didattico dei linguaggi di programmazione
Cosa è successo nel resto del mondo
Indagine sui laureati in Ingegneria Informatica
La ristrutturazione:
–  Princìpi generali e linee guida
–  Il core del nuovo curriculum: i primi due anni
–  Il terzo anno
•  Conclusioni
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 14
Ruolo didattico dei linguaggi di programmazione
Software come tema centrale dell’ing. informatico
Anni 2000: Java come linguaggio dominante (es. sia serverche client-side).
Criticità emerse durante gli anni:
•  Complesso come primo linguaggio, focus su sintassi/
semantica piuttosto che sulla risoluzione di problemi
•  Nasconde troppi dettagli del funzionamento interno:
inadatto per sfruttare prestazioni architetture di calcolo
•  Neo-laureati tendono a usare Java per ogni cosa
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 15
Ruolo didattico dei linguaggi di programmazione
Anno 2010: diversi linguaggi e paradigmi di programmazione
•  Fondamentale dare dall’inizio il messaggio (e le capacità)
che i linguaggi sono tanti e si sceglie di volta in volta
•  Programmazione per sistemi di calcolo eterogenei, su larga
scala (multi-core, cloud) e specializzati (embedded)
•  Programmazione parallela (es. map-reduce), concorrente,
funzionale, metodologie “agili”, ecc.
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 16
Utilizzo linguaggi
in ambito
industriale
Ratings: number of
skilled engineers worldwide, courses and third
party vendors
Fonte: www.tiobe.com
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 17
Utilizzo linguaggi: tendenza ultimi 10 anni
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 18
Agenda
• 
• 
• 
• 
• 
Riflessioni sulla figura dell’ingegnere informatico
Ruolo didattico dei linguaggi di programmazione
Cosa è successo nel resto del mondo
Indagine sui laureati in Ingegneria Informatica
La ristrutturazione:
–  Princìpi generali e linee guida
–  Il core del nuovo curriculum: i primi due anni
–  Il terzo anno
•  Conclusioni
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 19
Cosa è successo nel resto del mondo?
Introductory Computer Science Education at
Carnegie Mellon University: A Deans’ Perspective
Randal E. Bryant, Klaus Sutner, Mark J. Stehlik
2010
Abstract
The School of Computer Science at Carnegie Mellon University is planning
major revisions to its introductory course sequence in ways that will affect
not just our own students, but also the many students from across campus
who take computer science courses. Major changes include: 1) revising our
introductory courses to promote the principles of computational thinking,
for both majors and nonmajors, 2) increasing our emphasis on the need to
make software systems highly reliable and the means to achieve this, and 3)
preparing students for a future in which programs will achieve high
performance by exploiting parallel execution.
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 20
Cosa è successo nel resto del mondo?
Università
Linguaggio 1
Linguaggio 2
Note
Caltech
Python
C++
Computational thinking
MIT
Python
Java (molto self study)
Poi prog. funzionale
Carnegie Mellon
Python
C (focus correttezza)
Primo corso cenni a SQL,
PHP & HTML
Harvard
C
Java + ML (funz.)
Primo corso: Python &
robot
Georgia Tech
Python
Java
Stanford
C++
C
Imperial College
Haskell
Java
ETH
Eiffel
Java
II anno: enfasi parallelismo
EPFL
Java
C
II anno: enfasi su prog
concorrente
Cornell
Python/Matlab
Java
Web prog. (PHP, XHTML,
…)
Toronto
Python
Java
Computational thinking
Columbia
Java
C, C++
Berkeley
Scheme
Java
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 21
Agenda
• 
• 
• 
• 
• 
Riflessioni sulla figura dell’ingegnere informatico
Ruolo didattico dei linguaggi di programmazione
Cosa è successo nel resto del mondo
Indagine sui laureati in Ingegneria Informatica
La ristrutturazione:
–  Princìpi generali e linee guida
–  Il core del nuovo curriculum: i primi due anni
–  Il terzo anno
•  Conclusioni
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 22
Indagine sui laureati in Ingegneria Informatica
•  Abbiamo creato su SurveyMonkey un questionario
per i nostri laureati in ingegneria informatica
•  L’indagine è stata pubblicizzata presso il gruppo
LinkedIn dei laureati in ingegneria informatica che
conta oltre 400 iscritti
•  Il questionario è stato compilato da 51 persone in
10 giorni (dal 30 gennaio al 9 febbraio 2013)
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 23
Titolo di studio e anno di conseguimento
18 Laurea (triennale) 23 Laurea Specialis6ca Laurea Magistrale 10 Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 24
Settore di impiego
5 2 1 6 Studente laurea magistrale 1 do>orando Privato Pubblico Autonomo 36 Commissione Curriculum Triennale
Ing. Informatica Sapienza
Nessun impiego 9/21/13
Pagina 25
Area di lavoro
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 26
Linguaggi e strumenti utilizzati in ambito lavorativo
20 15 10 5 0 Java SQL C/C++ Javascript Commissione Curriculum Triennale
Ing. Informatica Sapienza
Php 9/21/13
C# SAP Ruby Pagina 27
Riassunto dell’indagine
Profilo dei laureati:
•  Aree dominanti: Ingegneria del software e sistemi
informativi (Java e SQL sono i linguaggi più utilizzati)
•  Seguite da applicazioni Web-based
•  Profilo riflette il contesto aziendale dell’area di Roma
Contenuti e tecnologie suggeriti:
•  Più attività progettuali nel corso di laurea
•  Più progettazione e ingegneria del software
•  Più Java e RDBMS
•  Più contenuti e tecnologie relativi ad applicazioni Webbased e mobili
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 28
Agenda
• 
• 
• 
• 
• 
Riflessioni sulla figura dell’ingegnere informatico
Ruolo didattico dei linguaggi di programmazione
Cosa è successo nel resto del mondo
Indagine sui laureati in Ingegneria Informatica
La ristrutturazione:
–  Princìpi generali e linee guida
–  Il core del nuovo curriculum: i primi due anni
–  Il terzo anno
•  Conclusioni
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 29
Princìpi generali e linee guida
•  Core: primi due anni
•  Maggiore varietà di linguaggi di programmazione
–  Primi due anni: Python, C, Java
–  Terzo anno: linguaggi query, markup, funzionali, logici, paralleli
•  Introdurre la programmazione sviluppando l’attitudine al
problem solving
•  I contenuti del corso implicano la scelta del
linguaggio: linguaggio come strumento didattico
•  Nuovo approccio alle architetture degli elaboratori,
focalizzato sull’astrazione per il programmatore
Princìpi generali e linee guida
•  Approccio olistico: integrazione stretta fra i programmi
di tutti i corsi insegnati
•  Importanza dei laboratori su tutti i corsi del core (e su
ogni semestre di ogni corso)
Approccio top-down alla risoluzione dei problemi
Programmazione
Sistema di calcolo
problema HW Algoritmo da6 OS programma rete HW OS “The Box” aprire la scatola HW HW soluzione OS Approccio integrato archite.ure, sistemi opera3vi e re3, dal punto di vista del programmatore Sistemi di calcolo
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 33
Architetture dal punto di vista del programmatore
Matrice 10000x10000, Intel Core 2 Duo @ 2.8 GHz
int sum1(int** m, int n) {
int i, j, sum = 0;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
sum += m[i][j];
return sum;
}
0.4 secondi
int sum2(int** m, int n) {
int i, j, sum = 0;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
sum += m[j][i];
return sum;
}
1.7 secondi
(4.2 volte più lento)
Core: 48 CFU (5 esami ING-INF/05)
Primo anno Secondo anno 12 CFU Secondo semestre 12 CFU Sistemi di calcolo (6 cfu) Principi di proge>azione di sistemi complessi su re6 e sistemi opera6vi, sicurezza, interfacce, cloud e virtualizzazione. C, Java, Python Fondam. inform II (6 CFU) Fondam. inform II (6 CFU) Analisi e tecniche algoritmiche (greedy, divide et impera, ecc.) Proge>azione del Software: design pa>ern, UML, ecc. Sistemi di calcolo (6 cfu) Primo semestre Secondo semestre Primo semestre Archite>ura della macchina dal punto di vista del programmatore, cache, pipeline, assembly. C Progr. orientata agli oggeH 6 CFU Programming in the large: classi, ereditarietà, polimorfismo, modularità, informa6on hiding, 6pi generici, eccezioni Java Tecniche di programmazione 6 CFU Programmazione impera6va, stru>ure da6 e algoritmi di base, analisi informale di algoritmi. C 12 CFU Fondam. inform I (6 CFU) Fondam. inform I (6 CFU) Python Computa6onal thinking e introduzione alla programmazione Elemen6 di informa6ca teorica: logica, linguaggi gramma6che, calcolabilità, intro complessità “La scienza dietro l’IT” (presentazione Carlo Ghezzi)
Il terzo anno (ING-INF/05)
AHvità forma3ve e cara.erizzan3 (obbligatorio) Basi di da6 AHvità forma3ve e cara.erizzan3 (2 a scelta) CFU 6 CFU Sistemi opera6vi 6 Archite>ure dei calcolatori 6 Re6 di calcolatori Ulteriori aHvità forma3ve: corso laboratorio (1 a scelta) CFU Laboratorio di archite>ure sobware 6 6 6 Programmazione funzionale e parallela Laboratorio di sicurezza informa6ca 6 6 Metodi quan6ta6vi per l’informa6ca Laboratorio di intelligenza ar6ficiale 6 6 Linguaggi e tecnologie per il Web Laboratorio di informa6ca grafica e di interfacce utente 6 Nuova laurea parte ora: molte sfide
•  Laboratori: uso intensivo della virtualizzazione
•  Linguaggi multipli nei primi due anni:
–  modello consolidato in molte università estere di riferimento:
molto self-learning
–  sostenibile nel nostro contesto?
–  fattore di rischio significativo per la nuova laurea:
monitorare apprendimento, calibrare approfondimento contenuti
•  Culturale: formare ing. informatici in grado di
–  modellare e risolvere problemi in ambito multidisciplinare
–  saper scegliere gli strumenti informatici giusti per ogni problema
–  adattarsi rapidamente ai cambiamenti, non temerli
Commissione Curriculum Triennale
Ing. Informatica Sapienza
9/21/13
Pagina 37