Tesi laurea triennale in Informatica
Frequento un corso di laurea triennale in Informatica, siccome non mi sono rimasti molti esami volevo iniziare a pensare alla tesi.
Da quello che vedo, ultimamente, almeno nel mio corso di laurea, molti scelgono tesi che riguardano: cloud, machine learning, IoT, intelligenza artificiale, cybersecurity e cose così. Questi argomenti mi piacciono, però vorrei fare qualcosa di diverso.
Il settore dell'informatica di cui mi sono occupato di più fino ad adesso è stata la programmazione, anche perchè ho trovato lavoro in un'azienda in cui si produce software. Quindi con una tesi che riguarda qualcosa di programmazione mi troverei a mio agio. O per esempio mi piacerebbe fare qualcosa a cavallo tra la programmazione e le reti.
Ultimamente sto studiando una materia (a breve ho l'esame) che si chiama "ingegneria del software" e devo dire che mi sta piacendo molto come argomenti. Gestire i progetti di produzione software, scegliere le metodologie e le strategie più opportune, progettare le architetture dei software sono cose che mi attirano molto.
Una tesi su argomenti di ingegneria del software secondo voi potrebbe andare bene? E che argomento potrei fare?
O comunque quale altro tipo di tesi mi consigliate di fare in base a quello che ho scritto?
Grazie.
Da quello che vedo, ultimamente, almeno nel mio corso di laurea, molti scelgono tesi che riguardano: cloud, machine learning, IoT, intelligenza artificiale, cybersecurity e cose così. Questi argomenti mi piacciono, però vorrei fare qualcosa di diverso.
Il settore dell'informatica di cui mi sono occupato di più fino ad adesso è stata la programmazione, anche perchè ho trovato lavoro in un'azienda in cui si produce software. Quindi con una tesi che riguarda qualcosa di programmazione mi troverei a mio agio. O per esempio mi piacerebbe fare qualcosa a cavallo tra la programmazione e le reti.
Ultimamente sto studiando una materia (a breve ho l'esame) che si chiama "ingegneria del software" e devo dire che mi sta piacendo molto come argomenti. Gestire i progetti di produzione software, scegliere le metodologie e le strategie più opportune, progettare le architetture dei software sono cose che mi attirano molto.
Una tesi su argomenti di ingegneria del software secondo voi potrebbe andare bene? E che argomento potrei fare?
O comunque quale altro tipo di tesi mi consigliate di fare in base a quello che ho scritto?
Grazie.
Risposte
Al momento, gli altri studenti che si stanno per laureare, in molti stanno facendo tesi su cloud, reti neurali, sicurezza e cose così.
Però che io sappia nessuno ha fatto argomenti dal punto di vista di ingegneria del software. Quindi se va bene potrebbe essere qualcosa di diverso.
Qualcuno sceglie argomenti a cavallo tra informatica e matematica, tipo cose di analisi numerica, ma sinceramente non ho voglia.
Però che io sappia nessuno ha fatto argomenti dal punto di vista di ingegneria del software. Quindi se va bene potrebbe essere qualcosa di diverso.
Qualcuno sceglie argomenti a cavallo tra informatica e matematica, tipo cose di analisi numerica, ma sinceramente non ho voglia.
L'ingegneria del software non ha alcun senso per una triennale. Per fare una tesi su quello hai bisogno di seguire le metodologie usate da una azienda medio grande che lavora su un progetto di grandi dimensioni. Questo richiede almeno 6 mesi/1 anno di lavoro in azienda e una azienda che acconsenta.
Quindi non trovo abbia senso prima del dottorato e sarebbe una scelta svantaggiosa se volessi diventare programmatore. Insomma, a quel punto avrebbe più senso un tirocinio come programmatore o DevOps. Inoltre ogni programmatore ha le sue idee su come organizzare il proprio lavoro e presentarti come un "esperto" è un modo molto rapido per avere conflitti.
Quelle tesi sono comuni perché sono argomenti alla moda, sia in università che in azienda. Mentre cose di analisi numerica mostrano una propensione per il pensiero matematico.
Una tesi in ingegneria del software dà ben altri input e ben pochi di questi sono positivi.
Quindi non trovo abbia senso prima del dottorato e sarebbe una scelta svantaggiosa se volessi diventare programmatore. Insomma, a quel punto avrebbe più senso un tirocinio come programmatore o DevOps. Inoltre ogni programmatore ha le sue idee su come organizzare il proprio lavoro e presentarti come un "esperto" è un modo molto rapido per avere conflitti.
Quelle tesi sono comuni perché sono argomenti alla moda, sia in università che in azienda. Mentre cose di analisi numerica mostrano una propensione per il pensiero matematico.
Una tesi in ingegneria del software dà ben altri input e ben pochi di questi sono positivi.
La principale ragione per cui ho scritto che era troppo vasta riguarda la natura dell'ingegneria del software. Trattare argomenti di ingegneria del software può significare principalmente due cose:
1. Confrontare due diverse metodologie applicate allo stesso problema.
2. Applicare una metodologia ad un singolo problema commentando in modo dettagliato lo sviluppo.
Il problema del primo punto è che si tratta di qualcosa di lungo (raddoppi il lavoro). Non puoi inoltre essere tu a sviluppare entrambi i software o certamente useresti quello che hai imparato nella prima implementazione per sviluppare il programma la seconda volta, fornendo quindi un vantaggio al secondo metodo. C'è poi il problema della definizione del problema. Se è troppo restrittivo hai infatti una specifica dettagliata e hai quindi in tutti i casi un waterfall + burocrazia degli altri metodi. Se lo è troppo poco dettagliato i due progetti potrebbero diventare troppo diversi per aver senso confrontarli. C'è infine il discorso che tutte queste metodologie hanno principalmente senso in progetti di medie-grandi dimensioni e con un team di sviluppo di almeno 2-3 persone.
Il secondo punto ha il problema di non fornire alcun confronto e quindi diventare solo un diario del tuo sviluppo. In questo caso diventa un problema trovare effettivamente qualcosa da dire. Qual'è insomma l'obiettivo della tesi? Se è lo sviluppo del progetto vero è proprio stai solo diluendo la parte importante con dettagli secondari.
Da un certo punto di vista il posto in cui ha più senso parlare di questi argomenti è un tesi su un tirocinio in azienda in cui il segreto aziendale impedisce di entrare troppo nei dettagli dell'implementazione del progetto e quindi parlare di metodologie di sviluppo ha a questo punto senso.
Vorrei però tornare ad una domanda che ti ho fatto all'inizio ma che si è un po' persa: qual'è il tuo obiettivo nei confronti di questa tesi?
1. Confrontare due diverse metodologie applicate allo stesso problema.
2. Applicare una metodologia ad un singolo problema commentando in modo dettagliato lo sviluppo.
Il problema del primo punto è che si tratta di qualcosa di lungo (raddoppi il lavoro). Non puoi inoltre essere tu a sviluppare entrambi i software o certamente useresti quello che hai imparato nella prima implementazione per sviluppare il programma la seconda volta, fornendo quindi un vantaggio al secondo metodo. C'è poi il problema della definizione del problema. Se è troppo restrittivo hai infatti una specifica dettagliata e hai quindi in tutti i casi un waterfall + burocrazia degli altri metodi. Se lo è troppo poco dettagliato i due progetti potrebbero diventare troppo diversi per aver senso confrontarli. C'è infine il discorso che tutte queste metodologie hanno principalmente senso in progetti di medie-grandi dimensioni e con un team di sviluppo di almeno 2-3 persone.
Il secondo punto ha il problema di non fornire alcun confronto e quindi diventare solo un diario del tuo sviluppo. In questo caso diventa un problema trovare effettivamente qualcosa da dire. Qual'è insomma l'obiettivo della tesi? Se è lo sviluppo del progetto vero è proprio stai solo diluendo la parte importante con dettagli secondari.
Da un certo punto di vista il posto in cui ha più senso parlare di questi argomenti è un tesi su un tirocinio in azienda in cui il segreto aziendale impedisce di entrare troppo nei dettagli dell'implementazione del progetto e quindi parlare di metodologie di sviluppo ha a questo punto senso.
Vorrei però tornare ad una domanda che ti ho fatto all'inizio ma che si è un po' persa: qual'è il tuo obiettivo nei confronti di questa tesi?
Non ho letto tutta la discussione, lascio solo un po' di idee legate ad ambiti più esotici di applicazione dell'informatica.
Nel calcolo scientifico è fondamentale avere software performante e molti dei metodi numerici più popolari sono basati su strutture di codice molto semplici [cicli for] ma che devono essere ottimizzati all'estremo, e devono esserlo per il calcolo parallelo. Per rendere il tutto più divertente, con l'avvento di architetture di calcolo eterogenee la sfida è di avere codice efficiente su una varietà di hardware: CPU, GPU, coprocessori...
Un approccio a questo problema è quello della compilazione "source-to-source", in cui il programmatore scrive del codice in un linguaggio [e.g. Python] che poi viene letto da un compilatore che lo converte in nuovo codice sorgente in un altro linguaggio [C++, Fortran, CUDA...] che è ottimizzato per questa o quella architettura. Ci sono stati notevoli risultati in questo campo.
Su temi più di ingegneria del software, invece, la progettazione di software per il calcolo scientifico che sia mantenibile ed estendibile è un'altra sfida interessante: un noto framework per simulazioni numeriche, dopo 15 anni di sviluppo, è arrivato al punto in cui è necessario riscriverne dei pezzi perché alcuni errori iniziali di design non possono più essere ignorati.
Alternativa in campo diverso, e probabilmente più spendibile lavorativamente, è la bioinformatica: c'è molto interesse per software che implementi algoritmi che interessano ai biologi/biotecnologi e molta richiesta di informatici che ci si mettano. La parola chiave più "hot" al momento credo sia "next generation sequencing", ma devi verificare tu se c'è qualcosa di interessante per te.
Nel calcolo scientifico è fondamentale avere software performante e molti dei metodi numerici più popolari sono basati su strutture di codice molto semplici [cicli for] ma che devono essere ottimizzati all'estremo, e devono esserlo per il calcolo parallelo. Per rendere il tutto più divertente, con l'avvento di architetture di calcolo eterogenee la sfida è di avere codice efficiente su una varietà di hardware: CPU, GPU, coprocessori...
Un approccio a questo problema è quello della compilazione "source-to-source", in cui il programmatore scrive del codice in un linguaggio [e.g. Python] che poi viene letto da un compilatore che lo converte in nuovo codice sorgente in un altro linguaggio [C++, Fortran, CUDA...] che è ottimizzato per questa o quella architettura. Ci sono stati notevoli risultati in questo campo.
Su temi più di ingegneria del software, invece, la progettazione di software per il calcolo scientifico che sia mantenibile ed estendibile è un'altra sfida interessante: un noto framework per simulazioni numeriche, dopo 15 anni di sviluppo, è arrivato al punto in cui è necessario riscriverne dei pezzi perché alcuni errori iniziali di design non possono più essere ignorati.
Alternativa in campo diverso, e probabilmente più spendibile lavorativamente, è la bioinformatica: c'è molto interesse per software che implementi algoritmi che interessano ai biologi/biotecnologi e molta richiesta di informatici che ci si mettano. La parola chiave più "hot" al momento credo sia "next generation sequencing", ma devi verificare tu se c'è qualcosa di interessante per te.
Intanto grazie a tutti per le risposte.
Ho novità. Ieri ho avuto l'esame di Ingegneria del software. Dopo aver presentato il mio progetto (sviluppato utilizzando il modello a cascata) e un'interrogazione da paura su metodologie plan-driven, metodologie agile, extreme programming e Conway law (praticamente ho parlato a raffica per più di mezz'ora) ho preso un bel 30 e lode
A fine esame ho chiesto consigli per la tesi al professore, considerando che mi ha visto ben preparato su Ingegneria del software si è valutato che si potrebbe fare una tesi Devops + Cloud. Cioè si potrebbe fare una parte compilativa che parla di come si integra la metodologia Devops con i progetti Cloud, poi si potrebbe fare una parte sperimentale su Cloud (ovviamente intendo un argomento in particolare del Cloud).
Poi al professore è venuta un'altra idea. Si potrebbe parlare dell'applicazione di Devops ai nuovi progetti di Cognitive systems. Mi ha spiegato un po' cosa è il Cognitive Computing e mi ha detto che potrebbe essere una cosa interessante e moderna, anche se c'è il rischio di non trovare molta documentazione.
Naturalmente queste sono solo alcune idee iniziali, potrei cambiare argomento della tesi (anche perchè ancora ho un po' di materie da fare e mi devo concentrare su queste).
Voi cosa ne pensate?
Ho novità. Ieri ho avuto l'esame di Ingegneria del software. Dopo aver presentato il mio progetto (sviluppato utilizzando il modello a cascata) e un'interrogazione da paura su metodologie plan-driven, metodologie agile, extreme programming e Conway law (praticamente ho parlato a raffica per più di mezz'ora) ho preso un bel 30 e lode

A fine esame ho chiesto consigli per la tesi al professore, considerando che mi ha visto ben preparato su Ingegneria del software si è valutato che si potrebbe fare una tesi Devops + Cloud. Cioè si potrebbe fare una parte compilativa che parla di come si integra la metodologia Devops con i progetti Cloud, poi si potrebbe fare una parte sperimentale su Cloud (ovviamente intendo un argomento in particolare del Cloud).
Poi al professore è venuta un'altra idea. Si potrebbe parlare dell'applicazione di Devops ai nuovi progetti di Cognitive systems. Mi ha spiegato un po' cosa è il Cognitive Computing e mi ha detto che potrebbe essere una cosa interessante e moderna, anche se c'è il rischio di non trovare molta documentazione.
Naturalmente queste sono solo alcune idee iniziali, potrei cambiare argomento della tesi (anche perchè ancora ho un po' di materie da fare e mi devo concentrare su queste).
Voi cosa ne pensate?
Prima di tutto, congratulazione per l'esame!
Le idee del professore sono certamente interessanti, tuttavia mi sembra che in pratica tu stia alla fine puntando a due dei soliti argomenti (cloud and AI) con la piccola differenza di cercare di dare un punto di vista leggermente diverso. Dal post iniziale pensavo volessi cercare di fare qualcosa di più diverso. Ma se va bene a te, sono contento tu abbia trovato di cosa parlare nella tesi.

"apatriarca":
Prima di tutto, congratulazione per l'esame!Le idee del professore sono certamente interessanti, tuttavia mi sembra che in pratica tu stia alla fine puntando a due dei soliti argomenti (cloud and AI) con la piccola differenza di cercare di dare un punto di vista leggermente diverso. Dal post iniziale pensavo volessi cercare di fare qualcosa di più diverso. Ma se va bene a te, sono contento tu abbia trovato di cosa parlare nella tesi.
Grazie per le congratulazioni.

Comunque ancora non sono sicuro se fare effettivamente questi argomenti, penso che sono argomenti che mi piacerebbe trattare, con il professore siamo rimasti che mi sarei informato su questi argomenti cercando su internet, e se la cosa è fattibile, si procede, altrimenti si valuta qualche altro argomento.
Una tesi sul "Cognitive DevOps" sarebbe sicuramente interessante, a quanto pare il Cognitive Computing è un'evoluzione di IA e Machine Learning, penso che verrebbe una tesi con gli attributi, però sto vedendo che al momento non si trova molta documentazione a riguardo. Ho trovato alcuni articoli che parlato di DevOps applicato ai sistemi Cognitive, però non mi sembra di trovare molta roba concreta.
Voi come mi consigliate di procedere?
Congratulazioni anche da parte mia.
Gli argomenti potrebbero andare bene, ma non ne so molto quindi non saprei dirti di più. Ti consiglio però di scegliere un argomento che sia sufficientemente battuto: dedicare troppo tempo alla tesi triennale non è generalmente una buona idea. Insomma, devi tenere conto che è la tua prima tesi e che ti troverai spesso a non sapere cosa fare o dover rifare alcune cose perché avrai fatto errori di qualche genere. Inoltre il supporto dai professori è relativamente limitato. Pertanto ti sconsiglio di dedicarti ad una tesi in cui vai troppo a tentoni.
Ti sei già informato sul formato in cui la tesi deve essere presentata?
Gli argomenti potrebbero andare bene, ma non ne so molto quindi non saprei dirti di più. Ti consiglio però di scegliere un argomento che sia sufficientemente battuto: dedicare troppo tempo alla tesi triennale non è generalmente una buona idea. Insomma, devi tenere conto che è la tua prima tesi e che ti troverai spesso a non sapere cosa fare o dover rifare alcune cose perché avrai fatto errori di qualche genere. Inoltre il supporto dai professori è relativamente limitato. Pertanto ti sconsiglio di dedicarti ad una tesi in cui vai troppo a tentoni.
Ti sei già informato sul formato in cui la tesi deve essere presentata?