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