Corsi universitari
Pagine dedicate ai corsi tenuti nelle diverse tappe della mia carriera universitaria.
La scoperta dei fondamenti dell’informatica al Politecnico di Bucarest (1970–1989)
I corsi presentati in questa prima sezione appartengono alla fase iniziale della mia attività didattica, approssimativamente ai primi vent’anni della mia carriera accademica. In quegli anni l’informatica si stava ancora costituendo come disciplina universitaria autonoma, e l’insegnamento doveva spesso costruire insieme il linguaggio, i metodi e gli strumenti concettuali del campo.
Corsi
- Programmazione dei calcolatori — corso di base insegnato per la prima volta al Politecnico al primo anno, dedicato all’introduzione alla programmazione mediante il linguaggio FORTRAN. Negli anni successivi questo corso si diffuse in diverse facoltà del Politecnico.
- Teoria degli automi — corso di informatica teorica insegnato agli studenti dell’indirizzo Calcolatori, Facoltà di Automatica, al quarto anno, primo semestre; trattava automi finiti e infiniti, linguaggi regolari, macchina di Turing e nozioni fondamentali di calcolabilità.
- Teoria dei linguaggi formali — corso di informatica teorica insegnato agli studenti dell’indirizzo Calcolatori, al quarto anno, secondo semestre; trattava linguaggi e grammatiche formali, gerarchia di Chomsky, linguaggi context-free, analisi sintattica e sistemi formali.
- Linguaggi di programmazione e compilatori — corso di sintesi che continuava il percorso teorico e lo orientava verso i linguaggi di programmazione, la traduzione e la progettazione sistematica dei compilatori.
Corsi tenuti all’Università Ovidius di Costanza (1994–2004)
All’Università Ovidius ho insegnato corsi che coprivano tre direzioni principali: fondamenti teorici dell’informatica, tecniche di programmazione e compilazione, e ingegneria del software. L’elenco seguente riunisce i corsi tenuti, gli intervalli in cui furono offerti e i corsi di studio ai quali erano destinati.
- Linguaggi formali — 1994–1995. Matematica-Informatica, secondo anno.
- Progettazione e implementazione dei sistemi — 1994–1996. Matematica-Informatica, quarto anno.
- Tecniche di compilazione / Compilatori — 1994–2004. Matematica-Informatica: anni IV–V (1994–1997), anno III (1995–2004). Informatica: anno III (2001–2004).
- Programmazione in linguaggi evoluti — 1996–1999. Matematica-Informatica, quarto anno.
- Programmazione dei calcolatori — 1999–2004. Informatica, primo anno.
- Ingegneria del software — 2000–2004. Matematica-Informatica, quarto anno; Informatica, terzo anno (2001–2004).
- Programmazione orientata agli oggetti — 2000–2004. Informatica, secondo anno, primo semestre; Matematica-Informatica, terzo anno, primo semestre.
- Programmazione Web — 2003–2004. Informatica, quarto anno.
- Tecniche moderne di programmazione — 2003–2004. Master MCTIM, primo anno.
- Calcolabilità — 2003–2004. Master MCTIM, primo anno.
Cantieri di corsi per l’Università Ovidius
- Schema per un corso di Ingegneria del software all’Università Ovidius
- Prototipo del corso di Java all’Università Ovidius
- Linguaggi formali e automi — corso teorico su grammatiche, automi finiti, automi a pila e calcolabilità.
- Design Patterns (1999) — corso sui modelli di progettazione e sul riuso del software.
- Design Patterns in inglese, Università Ovidius (2003) — corso perfezionato in vista dell’attività successiva alla FILS.
Corso tenuto all’Accademia Militare di Bucarest (1981–1982)
Nel 1981 e nel 1982 ho insegnato il corso di compilatori all’Accademia Militare di Bucarest, in un periodo in cui la precedente Accademia Tecnica Militare, soppressa nel 1976, era stata inglobata nell’Accademia Militare Generale. Il corso era destinato agli studenti della sezione di Elettronica.
In linea generale, il contenuto era lo stesso che insegnavo nello stesso periodo al Politecnico di Bucarest, alla Facoltà di Automatica. Ho smesso di tenere questo corso quando il giovane assistente Victor Patriciu, laureato al Politecnico di Timișoara e uno di coloro che avevano seguito le mie lezioni, poté prenderlo in carico.
- Compilatori — 1981–1982, Accademia Militare di Bucarest, sezione di Elettronica.
Una visione curricolare alla Facoltà di Ingegneria in Lingue Straniere (2004–2022)
I corsi elencati qui appartengono all’ultima grande tappa della mia attività didattica, circa gli ultimi vent’anni della carriera accademica. Durante i decenni precedenti avevo insegnato in modo più classico, soprattutto linguaggi di programmazione, compilatori e informatica teorica. L’esperienza accumulata mi permise di proporre una mia visione del percorso formativo dei futuri ingegneri software.
Nel periodo in cui fui capo di dipartimento, riuscii a imporre un piano di studi pensato per formare veri ingegneri software. Non si trattava solo di accumulare linguaggi o tecniche isolate, ma di seguire un percorso coerente: programmazione, metodi di sviluppo, progettazione software, architetture e pattern, insieme a una visione d’insieme del dominio e delle sue tendenze.
In una prima fase tenni personalmente i corsi principali di questo percorso, per dar loro la coerenza desiderata. Li cedetti poi gradualmente, man mano che preparavo alcuni successori; tra questi, il principale continuatore fu Andrei Vasilățeanu. In questo contesto si colloca anche il corso Web Application Development, tenuto negli anni 2007–2011, attraverso il quale introdussi nel curriculum la dimensione pratica dello sviluppo di applicazioni web distribuite.
Corsi
- Programming Languages — corso di base alla FILS, dedicato all’introduzione alla programmazione, a Java e al pensiero orientato agli oggetti.
- Object-Oriented Programming — secondo corso di programmazione alla FILS, consacrato a Java e ai concetti avanzati della programmazione orientata agli oggetti.
- Linguaggi formali e automi — corso teorico su grammatiche, automi finiti, automi a pila e calcolabilità, tenuto alla FILS nel periodo 2010–2012.
- Compiler Techniques — corso sui fondamenti dei linguaggi di programmazione e sulle tecniche introduttive di compilazione.
- Software Development Methods — corso della sezione inglese della FILS dedicato ai metodi di sviluppo software, UML, analisi, architettura e progettazione orientata agli oggetti.
- Méthodes du Développement du Logiciel — variante in lingua francese del corso Software Development Methods.
- Software Design Techniques — corso di progettazione software e architetture, continuazione naturale di Software Development Methods.
- Software Methodologies — corso dedicato alle metodologie di sviluppo software: strutturate, object-oriented, agile, component-based e service-oriented.
- Complements of Computer Science — corso opzionale o avanzato a tema variabile; nella variante recuperata, il tema scelto fu Design Patterns.
- Software Architectures — corso avanzato su architetture software, sistemi distribuiti, middleware, pattern e integrazione enterprise.
- Web Application Development — corso tenuto alla FILS nel periodo 2007–2011, dedicato allo sviluppo di applicazioni web client-server.
Un percorso coerente in ingegneria del software
Una parte dei corsi tenuti alla FILS forma un percorso coerente, dalla programmazione e dai metodi di sviluppo fino alle architetture e al riuso:
- Object-Oriented Programming — modellazione orientata agli oggetti delle applicazioni;
- Software Development Methods — il processo di sviluppo del software;
- Software Design Techniques — tecniche di progettazione software;
- Complements of Computer Science — riuso delle soluzioni tramite design patterns;
- Software Methodologies — lezioni dalla storia dello sviluppo software;
- Software Architectures — organizzazione dei sistemi software complessi;
- Web Application Development — applicazioni web distribuite, dall’interfaccia client ai servizi server-side.
Corsi tenuti all’Università “La Sapienza” di Roma (2007–2011)
Dopo il tentativo di far riconoscere in Italia il mio diploma di ingegnere — e il fallimento che ho raccontato altrove — tornai alla Facoltà di Ingegneria Informatica della Sapienza, quando ebbero bisogno di docenti a contratto per due corsi introduttivi di programmazione nel Corso di Laurea in Ingegneria Gestionale. Fui accolto con entusiasmo dai colleghi e, per alcuni anni, fui uno dei due titolari di questi corsi.
Alla Sapienza insegnai in italiano due corsi successivi del primo anno, concepiti come un percorso unitario: dalle nozioni fondamentali di informatica e algoritmica alla programmazione orientata agli oggetti in Java.
- Fondamenti di Informatica — primo anno, primo semestre; corso introduttivo di informatica e programmazione.
- Tecniche di Programmazione — primo anno, secondo semestre; continuazione del primo corso, orientata alla programmazione a oggetti in Java.
Insegnamento nel programma Erasmus Mundus DMKM (2010–2012)
Negli ultimi anni della mia attività universitaria ho partecipato anche al programma internazionale di master Erasmus Mundus Data Mining and Knowledge Management (DMKM), nel quale il Politecnico di Bucarest era partner insieme ad altre università europee. In questo quadro ho insegnato il corso Software Methodologies, in lingua inglese.
- Software Methodologies — corso del master Erasmus Mundus DMKM, dedicato alle metodologie di sviluppo software, ai processi software, ai modelli di ciclo di vita, all’Information Engineering, al business modeling e alle tecniche di modellazione usate nello sviluppo dei sistemi informativi.