Curriculum Triennale in Ingegneria Informatica per la ...alberto/GII/Demetrescu.pdfIntroductory...
Transcript of Curriculum Triennale in Ingegneria Informatica per la ...alberto/GII/Demetrescu.pdfIntroductory...
Curriculum Triennale in Ingegneria Informatica per la Prossima Decade: l’Esperienza della Sapienza
Camil Demetrescu, Marco Fratarcangeli, Alberto Marchetti Spaccamela, Massimo Mecella, Daniele Nardi, Francesco Quaglia, Riccardo Rosati, Leonardo Querzoni, Andrea Vitaletti
Salerno, 19 Settembre 2013 – Workshop AICA: Sfide Didattiche per l’Informatica del 2020
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, platform-based development, ecc.
• Esigenza ristrutturazione profonda del curriculum triennale in ingegneria informatica alla Sapienza
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 2 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
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 3 Pagina 3
Riflessioni sulla figura dell’ingegnere informatico
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 4 Pagina 4
Mario Raffa, l’Ingegnere oggi tra azienda e società, Storia dell’Ingegneria, Atti del 2° Convegno Nazionale, Napoli, 2008
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
System Infrastructure
Computer Hardware And Architecture
Theory Principles Innovation
Application Deployment
Configuration DEVELOPMENT More Theoretical More Applied
Riflessioni sulla figura dell’ingegnere informatico
Computer Science Curricula 2013 (CS2013)
ACM/IEEE-CS Joint Task Force
http://ai.stanford.edu/users/sahami/CS2013/
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
System Infrastructure
Computer Hardware And Architecture
CE CS SE IS IT EE Hardware Software Organizational
needs
EE Electronic Eng. CE Computer Eng. CS Computer Science SE Software Eng. IT Information Technology IS Information Systems
Theory Principles Innovation
Application Deployment
Configuration DEVELOPMENT More Theoretical More Applied
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
System Infrastructure
Computer Hardware And Architecture
CE CS SE IS IT EE Hardware Software Organizational
needs
EE Electronic Eng. CE Computer Eng. CS Computer Science SE Software Eng. IT Information Technology IS Information Systems
IT
Theory Principles Innovation
Application Deployment
Configuration DEVELOPMENT More Theoretical More Applied
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
System Infrastructure
Computer Hardware And Architecture
CE CS SE IS IT EE Hardware Software Organizational
needs
EE Electronic Eng. CE Computer Eng. CS Computer Science SE Software Eng. IT Information Technology IS Information Systems
IT IS
Theory Principles Innovation
Application Deployment
Configuration DEVELOPMENT More Theoretical More Applied
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
System Infrastructure
Computer Hardware And Architecture
CE CS SE IS IT EE Hardware Software Organizational
needs
EE Electronic Eng. CE Computer Eng. CS Computer Science SE Software Eng. IT Information Technology IS Information Systems
IT IS
CE
Theory Principles Innovation
Application Deployment
Configuration DEVELOPMENT More Theoretical More Applied
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
System Infrastructure
Computer Hardware And Architecture
CE CS SE IS IT EE Hardware Software Organizational
needs
EE Electronic Eng. CE Computer Eng. CS Computer Science SE Software Eng. IT Information Technology IS Information Systems
IT IS
CE
SE
Theory Principles Innovation
Application Deployment
Configuration DEVELOPMENT More Theoretical More Applied
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
System Infrastructure
Computer Hardware And Architecture
CE CS SE IS IT EE Hardware Software Organizational
needs
EE Electronic Eng. CE Computer Eng. CS Computer Science SE Software Eng. IT Information Technology IS Information Systems
IT IS
CE
SE CS
Theory Principles Innovation
Application Deployment
Configuration DEVELOPMENT More Theoretical More Applied
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
System Infrastructure
Computer Hardware And Architecture
CE CS SE IS IT EE Hardware Software Organizational
needs
Theory Principles Innovation
Application Deployment
Configuration DEVELOPMENT More Theoretical More Applied
EE Electronic Eng. CE Computer Eng. CS Computer Science SE Software Eng. IT Information Technology IS Information Systems
IT IS
CE
SE CS Engineering in CS Engineering in CS
Riflessioni sulla figura dell’ingegnere informatico
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 13 Pagina 13
Mario Raffa, l’Ingegnere oggi tra azienda e società, Storia dell’Ingegneria, Atti del 2° Convegno Nazionale, Napoli, 2008
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
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 14 Pagina 14
Ruolo didattico dei linguaggi di programmazione
Software come tema centrale dell’ing. informatico
Anni 2000: Java come linguaggio dominante (es. sia server- che 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
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 15 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.
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 16 Pagina 16
Utilizzo linguaggi in ambito industriale
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 17 Pagina 17
Ratings: number of skilled engineers world-wide, courses and third party vendors Fonte: www.tiobe.com
Utilizzo linguaggi: tendenza ultimi 10 anni
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 18 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
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 19 Pagina 19
Cosa è successo nel resto del mondo?
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 20 Pagina 20
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.
Cosa è successo nel resto del mondo?
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 21 Pagina 21
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
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
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 22 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)
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 23 Pagina 23
Titolo di studio e anno di conseguimento
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 24 Pagina 24
23
10
18 Laurea (triennale)
Laurea Specialis6ca
Laurea Magistrale
Settore di impiego
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 25 Pagina 25
6 1
36
5 2 1
Studente laurea magistrale
do>orando
Privato
Pubblico
Autonomo
Nessun impiego
Area di lavoro
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 26 Pagina 26
Linguaggi e strumenti utilizzati in ambito lavorativo
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 27 Pagina 27
0
5
10
15
20
Java SQL C/C++ Javascript Php C# SAP Ruby
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 Web-
based e mobili
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 28 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
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 29 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)
“The Box”
programma da6
soluzione Approccio integrato archite.ure, sistemi opera3vi e re3, dal punto di vista del programmatore
Programmazione
Approccio top-down alla risoluzione dei problemi
Algoritmo
aprire la scatola
HW
OS
HW
OS
HW
OS
HW
Sistema di calcolo
rete
problema
Sistemi di calcolo
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 33 Pagina 33
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; }
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)
0.4 secondi
Matrice 10000x10000, Intel Core 2 Duo @ 2.8 GHz
Architetture dal punto di vista del programmatore
Core: 48 CFU (5 esami ING-INF/05)
Primo semestre
Secondo semestre
Fondam. inform I (6 CFU)
Computa6onal thinking e introduzione alla programmazione Python
12 CFU Fondam. inform I (6 CFU) Elemen6 di informa6ca teorica: logica, linguaggi gramma6che, calcolabilità, intro complessità
Tecniche di programmazione
Programmazione impera6va, stru>ure da6 e algoritmi di base, analisi informale di algoritmi.
C
6 CFU
Second
o an
no
Prim
o an
no
Primo semestre
Secondo semestre
Sistemi di calcolo (6 cfu)
Archite>ura della macchina dal punto di vista del programmatore, cache, pipeline, assembly.
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
C
Progr. orientata agli oggeH
Programming in the large: classi, ereditarietà, polimorfismo, modularità, informa6on hiding, 6pi generici, eccezioni
Java
6 CFU
Fondam. inform II (6 CFU)
Analisi e tecniche algoritmiche (greedy, divide et impera, ecc.)
Fondam. inform II (6 CFU)
Proge>azione del Software: design pa>ern, UML, ecc.
12 CFU
“La scienza dietro l’IT” (presentazione Carlo Ghezzi)
Il terzo anno (ING-INF/05)
AHvità forma3ve e cara.erizzan3 (2 a scelta) CFU
Sistemi opera6vi 6
Archite>ure dei calcolatori 6
Re6 di calcolatori 6
Programmazione funzionale e parallela 6
Metodi quan6ta6vi per l’informa6ca 6
Linguaggi e tecnologie per il Web 6
AHvità forma3ve e cara.erizzan3 (obbligatorio) CFU
Basi di da6 6
Ulteriori aHvità forma3ve: corso laboratorio (1 a scelta) CFU
Laboratorio di archite>ure sobware 6
Laboratorio di sicurezza informa6ca 6
Laboratorio di intelligenza ar6ficiale 6
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
9/21/13 Commissione Curriculum Triennale Ing. Informatica Sapienza
Pagina 37 Pagina 37