· Andrea Pollini · tpsit · 14 min read

TPSIT: Proposta per un percorso moderno

Da quando sono docente ho sempre insegnato la materia di TPSIT, Tecnologie e Progettazione di Sistemi Informatici e di telecomunicazioni. Ho sempre cercato di proporre un approccio moderno, cercando di coinvolgere gli studenti in progetti reali, con l'obiettivo di farli appassionare a questa materia, che è molto importante per il loro futuro lavorativo. In questo articolo propongo un percorso moderno, che ho sperimentato con successo, e che può essere utilizzato da altri docenti per proporre un percorso simile ai loro studenti.

Da quando sono docente ho sempre insegnato la materia di TPSIT, Tecnologie e Progettazione di Sistemi Informatici e di telecomunicazioni. Ho sempre cercato di proporre un approccio moderno, cercando di coinvolgere gli studenti in progetti reali, con l'obiettivo di farli appassionare a questa materia, che è molto importante per il loro futuro lavorativo. In questo articolo propongo un percorso moderno, che ho sperimentato con successo, e che può essere utilizzato da altri docenti per proporre un percorso simile ai loro studenti.

Da quando sono docente ho sempre insegnato la materia di TPSIT, Tecnologie e Progettazione di Sistemi Informatici e di telecomunicazioni. Ho sempre cercato di proporre un approccio moderno, cercando di coinvolgere gli studenti in progetti reali, con l’obiettivo di farli appassionare a questa materia, che è molto importante per il loro futuro lavorativo. In questo articolo propongo un percorso moderno, che ho sperimentato con successo, e che può essere utilizzato da altri docenti per proporre un percorso simile ai loro studenti.

La scelta delle tecnologie da utilizzare e dagli argomenti da affrontare è stata fatta grazie alla mia duplice esperienza di consulente informatico e di docente universitario. Ho cercato di coniugare le esigenze del mondo del lavoro con quelle del mondo accademico, cercando di proporre un percorso che sia utile sia per chi vuole lavorare nel mondo dell’informatica, sia per chi vuole proseguire gli studi universitari, tenendo sempre conto dei documenti ministeriali che regolano l’insegnamento di questa materia.

Il percorso

Il percorso che propongo è fondato sull’utilizzo delle tecnologie che possono essere interessanti, spendibili nel mondo del lavoro, facili da utilizzare ma mai banali e adatte a mettere in pratica i concetti teorici che vengono insegnati.

Terzo anno

La prima parte del programma è dedicata alla teoria della comunicazione e di approfondimenti relativi alla gestione dei dati e della loro codifica. In questa parte del programma si affrontano argomenti come:

  • la teoria della comunicazione
  • i sistemi di numerazione posizionale
  • la codifica delle informazioni
  • La struttura e il funzionamento del sistema operativo
  • La gestione dei processi
  • La gestione della memoria

Nella parte di laboratorio si introduce lo studente alla gestione di un sistema operativo Linux/Windows anche utilizzanddo macchine virtuali. In particolare si affrontano argomenti come:

  • Installazione e configurazione
  • Scrittura di script
  • Gestione dei processi
  • Gestione utenti e servizi

Nella seconda parte dell’anno è possibile introdurre HTML e CSS. Un aspetto importante è quello di introdurli in modo da permettere agli studenti di creare delle pagine web che siano valide dal punto di vista semantico e che siano accessibili. Per l’HTML si bandisce l’utilizzo di siti che non siano quelli del W3c, in quanto per gli studenti saper leggere una documentazione ufficiale è molto importante. Inoltre lo standard HTML del W3C contiene numerosi esempi di codice che possono essere utilizzati dagli studenti per creare le loro pagine web.

Per quel che riguarda i CSS, il mio consiglio è quello, dopo aver introdotto i concetti base, di utilizzare un framework CSS per la creazione di pagine web. Questo perchè in questo modo potranno concentrarsi sull’utilizzo della documentazione e sulle funzionalità del framework, senza doversi preoccupare di creare un layout da zero. Inoltre i framework CSS sono molto utilizzati nel mondo del lavoro, e quindi è importante che gli studenti imparino ad utilizzarli. La mia scelta è ricaduta, dopo varie sperimentazioni, su tailwindcss, che è un framework CSS che permette di creare delle pagine web in modo semplice e veloce, e valide sia dal punto di vista semantico che dell’accessibilità.

Utilizzando questo framework gli studenti ragionano in modo dichiarativo nella creazione degli stili per le pagine web, comprendendo concetti come la separazione tra struttura e presentazione, e comprendendo come funzionano i selettori CSS.

Quarto anno

Nel quarto anno si affrontano argomenti relativi all’analisi dei progetti, che vanno a complementare quanto viene visto in infomatica relativamente alla programmazione ad oggetti.

Il programma prevede l’analisi di un progetto, che viene svolta in gruppi di lavoro, e che prevede la realizzazione di un documento di analisi dei requisiti e delle user story relative al progetto. L’utilizzo delle user story e non dei casi d’uso, che di solito sono presentati dai testi scolastici, è dovuto al fatto che le user story sono più semplici da utilizzare e da comprendere, e sono più adatte a progetti di piccole dimensioni, come quelli che vengono sviluppati dagli studenti.

Utilizzare le user story rappresenta inoltre un avvicinamento al mondo del lavoro, dove questo tipo di documentazione è molto diffuso. Inoltre le metodologie agili, che sono molto utilizzate in ambito professionale, prevedono l’utilizzo delle user story.

Un altro argomento che viene affrontato è la gestione del versionamento del codice, che viene svolta utilizzando il sistema di versionamento Git e la piattaforma GitHub. Questo argomento è molto importante, perché permette di gestire in modo efficace il codice sorgente dei progetti, e permette di lavorare in gruppo in modo efficace. Github inoltre consente di creare un portfolio di progetti, che possono essere utilizzati per presentarsi alle aziende, e per dimostrare le proprie competenze.

Tramite l’utilizzo di Github gli studenti imparano a gestire un progetto con più partecipanti con responsabilità diverse. Il fatto di avere un ruolo specifico, e di dover rispettare delle regole, permette di capire come funziona il lavoro in un team.

Nella creazione di un prototipo di un progetto diventa poi importantissimo ricorrere ad uno strumento di progettazione delle UI, che permette di creare in modo semplice e veloce dei prototipi di interfacce grafiche. In questo caso si possono utilizzare Figma oppure Pencil, che sono strumenti molto semplici da utilizzare, e che permettono di creare dei prototipi di interfacce grafiche efficaci e anche parzialmente interattivi.

Per completare gli argomenti svolti nel primo periodo del quarto anno, si affronta il linguaggio di programmazione Python, che è molto semplice da utilizzare, e che permette di creare dei prototipi di progetti in modo semplice e veloce.

Il contesto in cui viene introdotto Python è quello della realizzazione di semplici progetti di visualizzazione e di analisi dei dati; del linguaggio vengono mostrate, nel corso di 4 ore di laboratorio, le basi del linguaggio, e nelle due ore successive vengono mostrati alcuni esempi di utilizzo del linguaggio per la realizzazione di semplici progetti.

In particolare vengono utilizzata la libreria matplotlib, che permette di creare dei grafici, e la libreria pandas, che permette di analizzare i dati. Se si sceglie di non utilizzare Pandas, si può sempre scaricare i dati in locale utilizzando la libreri requests, e poi analizzarli utilizzando Python senza ricorrere a ulteriori librerie.

Nel corso di questi anni ho proposto vari dataset tra i quali vale la pena di ricordare:

Progetto

Il progetto che viene svolto dagli studenti è quello di realizzare un notebook jupyter o su Goolge Colab che permette di visualizzare i dati relativi ad un dataset tra quelli elencati sopra o tra altri scelti dagli studenti.

Il progetto prevede la realizzazione di un notebook che permette di visualizzare e analizzare i dati in modo efficace. Viene svolta prima di tutto una analisi del dataset secondo quanto mostrato dal docente e poi vengono create dagli studenti delle visualizzazioni dei dati che permettono di capire meglio le informazioni contenute nel dataset.

Il progetto viene presentato a docente e ITP nel corso di una lezione, e viene poi caricato su Github, in modo da poter essere utilizzato come portfolio per presentarsi alle aziende.

Nella seconda parte dell’anno vengono affrontate le questioni relative alla programmazione concorrente e alla gestione di processi multipli. In particolare vengono affrontati i seguenti argomenti:

  • Processi e thread
  • Creazione di processi
  • Sincronizzazione dei processi
  • Comunicazione tra processi
  • Creazione di thread
  • Sincronizzazione dei thread
  • Mutua esclusione e problematiche correlate

Dal punto di vista pratico i testi spesso propongono l’utilizzo del linguaggio C per la gestione dei processi. Il problema di questo processo è che gli studenti nel terzo anno vedono C++ e siccome i due linguaggi sono diversi, nella gestione dei processi ci si trova a dover spiegare le differenze tra i due linguaggi e ad affrontare le caratteristiche dei singoli sistemi operativi. Ad esempio su Windows non è possibile utilizzare le funzioni di C per la gestione dei processi, ma bisogna utilizzare le API di Windows, ad esempio non esiste una chiamata fork().

Per questo ho scelto di approcciare la programmazione di processi multipli utilizzando python e il modulo multiprocessing, che permette di gestire in modo semplice e veloce la creazione di processi e la loro comunicazione. materiale per python e multiprocessing

Utilizzando questo modulo e in particolare l’oggetto Process è possibile creare dei processi in modo semplice e veloce, e gestire la loro comunicazione tramite l’utilizzo di code di messaggi. Queste code possono essere implementate utilizzando il modulo Queue che permette di creare delle code di messaggi sincronizzate in modo semplice e veloce.

Per creare una situazione dove sia necessario utilizzare la sincronizzazione tra processi, si può ad esempio utilizzare Arduino per la lettura di segnali dai sensori, e poi utilizzare Python per la gestione dei processi che permettono di analizzare i dati e di inviare dei comandi ad Arduino. In questo modo si può creare un sistema che permette di gestire in modo efficace la comunicazione tra processi, e che permette di capire in modo semplice e veloce i concetti relativi alla programmazione concorrente.

Un modulo python che merita attenzione in questo contesto è pyserial che permette di gestire in modo semplice e veloce la comunicazione con Arduino tramite la porta seriale.

Una volta recuperati i dati dalla seriale/usb è possibile creare delle visualizzazioni di questi dati utilizzando matplotlib oppure utilizzando un framework di visualizzazione dei dati come Dash, che permette di creare delle visualizzazioni dei dati in modo semplice e veloce.

Un’altra alternativa, che va a collegarsi con quanto viene visto in Sistemi e Reti, è l’utilizzo di una libreria per la realizzazione di un bot che consenta di connettere Arduino con Telegram. In questo modo è possibile creare un bot che permette di controllare Arduino da remoto, e che permette di ricevere dei messaggi da Arduino. Tra le librerie che permettono di realizzare dei bot Telegram in modo semplice e veloce, vale la pena di ricordare telepot o python-telegram-bot.

Progetto

Il progetto che viene svolto dagli studenti è quello di realizzare un programma che permette di gestire la comunicazione tra Arduino e un computer tramite la porta seriale. Il programma deve permettere di leggere i dati provenienti da Arduino e di inviare dei comandi ad Arduino. Viene lasciata libertà di utilizzo dei sensori disponibili che possono essere utilizzati in modo libero dagli studenti. Si tratta di una sorta di mistery box, dove ogni gruppo di studenti deve realizzare un progetto diverso dagli altri. Vengono consegnate le scatole con Arduino e i sensori, e gli studenti devono realizzare un progetto che permette di utilizzare i sensori in modo efficace.

Il progetto viene presentato a docente e ITP nel corso di una lezione, e viene poi caricato su Github, in modo da poter essere utilizzato come portfolio per presentarsi alle aziende.

Quinto anno

Nel quinto anno si affrontano gli argomenti relativi alla programmazione web, che permettono di creare delle applicazioni web in modo semplice e veloce. Vengono presentate le problematiche relative ai sistemi distribuiti, alla sicurezza delle applicazioni web e alla programmazione mobile. Vengono anche affrontati argomenti relativi alla gestione dei progetti e alla configurazione dei sistemi attraverso i container.

Sistemi distribuiti

Gli argomenti presentati si trovano nella pagina relativa alle lezioni sui sistemi distribuiti.

Programmazione web

Nel corso di queste lezioni vengono affrontati gli argomenti relativi alla programmazione web, che permettono di creare delle applicazioni web in modo semplice e veloce.

Avendo già affrontato in terza HTML e CSS, gli studenti vengono introdotti alle basi del linguaggio JavaScript, che permette di creare delle applicazioni web in modo semplice e veloce. In particolare viene messa in mostra la struttura funzionale del linguaggio, mostrando le funzioni filter(), map() e reduce() che permettono di creare delle applicazioni web in modo semplice e veloce.

Con Javascript si vede subito come sia possibile caricare dei dati in modo asincrono, e come sia possibile creare delle applicazioni web che permettono di interagire con l’utente in modo efficace. In particolare viene introdotta la fetch API e viene presentato un semplice esempio.

Non vengono sviluppate applicazioni complete in Javascript, ma vengono mostrati degli esempi di utilizzo del linguaggio per la creazione di semplici applicazioni web. In particolare viene mostrato come sia possibile utilizzare Javascript per creare delle applicazioni web che permettono di visualizzare dei dati in modo efficace, e che permettono di interagire con l’utente in modo efficace.

Per la creazione di applicazioni web si utilizza il framework Svelte.

Svelte è un framework che permette di creare delle applicazioni web in modo semplice e veloce, e che permette di creare delle applicazioni web che sono valide dal punto di vista semantico e che sono accessibili. Inoltre Svelte permette di creare delle applicazioni web che sono molto performanti, e che permettono di creare delle applicazioni web che sono valide dal punto di vista semantico e che sono accessibili.

Come riferimento viene utilizzato il tutorial presente nel sito di svelte, completo e interattivo, ottimo supporto alle lezioni di laboratorio dove gli studenti vengono portati in due settimane da zero a creare una applicazione web completa. Vengono anche introdotti i concetti di reattività e di store, per il salvataggio dello stato del frontend.

Vengono realizzate assieme agli studenti alcune applicazioni, ad esempio:

Nella seconda parte dell’anno vengono affrontati i web service ReST. Dei web service soap si dice solo che esistono. Sono un argomento che non ha molto senso affrontare, in quanto sono poco utilizzati nel mondo del lavoro, e sono molto complessi da utilizzare.

Per la creazione di web service ReST si utilizza python con bottle, che permette di creare dei web service in modo semplice e veloce. In particolare viene mostrato come sia possibile creare dei web service che permettono di creare delle applicazioni web che permettono di interagire con l’utente in modo efficace. Alternative sono Flask e FastAPI, che sono framework molto utilizzati nel mondo del lavoro. Volendo restare su soluzioni java based non ha senso utilizzare le Servlet, ma si può utilizzare Spring Boot o più semplicemente sparkjava. Sparkjava in particolare permette di creare dei web service facendo uso di un approccio funzionale, che gli studenti dovrebbero avere visto in informatica nel corso del quarto anno.

Progetto

Il progetto che viene svolto dagli studenti è quello di realizzare un web service che permette di gestire una lista di oggetti. Il web service deve permettere di creare, leggere, aggiornare e cancellare gli oggetti. Il web service deve essere realizzato utilizzando un framework a scelta tra quelli visti a lezione.

Come secondo progetto si lascia la libertà di creare un progetto a scelta degli studenti, che deve essere realizzato utilizzando un framework a scelta tra quelli visti a lezione, ma lasciando la libertà di utilizzare anche altri framework. Questo progetto deve essere completo di analisi dei requisiti e di user story, e deve essere realizzato utilizzando un approccio agile. Il risultato del lavoro sarà condiviso su Github, in modo da poter essere utilizzato come portfolio per presentarsi alle aziende.

Nella teoria vengono poi studiate le problematiche relative alla sicurezza delle applicazioni web, e vengono affrontati gli argomenti relativi alla sicurezza delle applicazioni web, che permettono di creare delle applicazioni web in modo sicuro. In particolare vengono affrontati gli argomenti dell’autenticazione e autorizzazione.

Altro argomento interessante, che si presta ad una breve trattazione in teoria e ad una esercitazione pratica in laboratorio è quello dell’approccio a container. In particolare si può utilizzare Docker per creare dei container che permettono di creare delle applicazioni web in modo semplice e veloce. Utilizzando docker compose viene poi realizzata una applicazione che consiste di più nodi, un vero sistema distribuito dove, pur girando su di una macchina, i vari nodi lavorano su container differenti. Viene anche affrontata la problematica della comunicazione tra i nodi. Qua si può inserire un nodo con Mosquitto ad esempio per mostrare come sia possibile integrare un broker mqtt in un sistema distribuito.

Ultima parte è quella della programmazione mobile. Per questa parte, oltre all’introduzione teorica con un minimo di storia ed evoluzione dei sistemi mobile, viene proposto agli studenti come progetto finale una esplorazione di un linguaggio/framework anche differente da quelli visti durante l’anno, con cui realizzare una mobile app, dopo aver progettato tutto il sistema con tutte le sue parti (analisi dei requisiti, user story, progettazione, ecc.).

Alcuni esempi di tecnologie:

Si tratta di un progetto finale che occupa l’ultimo mese abbondante di lezione e che consente agli studenti di sintetizzare tutte le conoscenze acquisite durante il percorso di studi.

Certo che questo percorso sia ottimizzabile, considero questo post come un primo passo per una discussione che possa portare a migliorare il percorso di studi di TPSIT, che è una materia molto importante per il futuro lavorativo degli studenti.

Referenze

Back to Blog

Related Posts

View All Posts »
Dati e Informazioni

Dati e Informazioni

Dati e informazioni sono due concetti fondamentali in informatica. La comprensione della differenza tra questi due concetti è essenziale per comprendere il funzionamento dei sistemi informativi.

Definzione di DBMS

Definzione di DBMS

Esistono diversi tipi di basi di dati, a seconda della loro struttura, della tecnologia utilizzata e del modello di dati utilizzato.

Aspetto intensionale ed estensionale dei dati

Aspetto intensionale ed estensionale dei dati

Gli aspetti estensionale e intensionale dei dati sono due concetti fondamentali in informatica. La comprensione della differenza tra questi due concetti è essenziale per comprendere il funzionamento dei sistemi informativi.

La rappresentazione dei dati attraverso la logica binaria

La rappresentazione dei dati attraverso la logica binaria

La rappresentazione dei dati è un concetto fondamentale nell'ambito dell'informatica e delle scienze computazionali. In particolare, l'utilizzo della logica binaria è essenziale per la codifica e l'elaborazione dei dati all'interno dei sistemi informatici moderni. In questo articolo, esploreremo in dettaglio la logica binaria e come viene utilizzata per rappresentare informazioni complesse attraverso l'uso di due soli valori 0 e 1.

Quali sono le differenze tra "INNER JOIN" e "OUTER JOIN"

Quali sono le differenze tra "INNER JOIN" e "OUTER JOIN"

La differenza tra INNER JOIN e OUTER JOIN è uno dei concetti fondamentali della progettazione di database relazionali. In questo articolo, esaminiamo le differenze tra INNER JOIN e OUTER JOIN e quando è opportuno utilizzare ciascuno di essi.