Tesi laurea triennale in Informatica

LowSlow
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.

Risposte
apatriarca
La programmazione è un'attività che fa parte di praticamente tutti i settori informatici. Tutte le tesi che hai elencato potrebbero in effetti contenere parti di programmazione. Non è chiaro che cosa tu abbia in mente quando parli di tesi su qualcosa di programmazione. Parli dell'ingegneria del software? Che tipo di software hai sviluppato nell'azienda in cui hai lavorato? Che tipo di software ti piacerebbe gestire? In quali linguaggi? L'argomento reti è anche molto vasto e può rappresentare cose che vanno dal cloud, a software di messaggistica a lavorare con protocolli di rete o risorse hardware.

L'ingegneria del software è un argomento sicuramente possibile, anche se credo possa fare poca impressione alla commissione o a un eventuale colloquio lavorativo. Se è quello che ti interessa ti invito comunque a chiedere consiglio al professore del corso (che sarebbe in ogni caso il tuo eventuale relatore). Spesso le tesi, soprattutto quando lo studente ha poche idee, sono in realtà suggerite dal relatore.

Luc@s
giusto per capire... mi passeresti un link al programma del corso? Sono curioso di vedere in casa si discosta d aquello che vedo tutti i giorni a lavoro.

LowSlow
"apatriarca":
La programmazione è un'attività che fa parte di praticamente tutti i settori informatici. Tutte le tesi che hai elencato potrebbero in effetti contenere parti di programmazione. Non è chiaro che cosa tu abbia in mente quando parli di tesi su qualcosa di programmazione. Parli dell'ingegneria del software? Che tipo di software hai sviluppato nell'azienda in cui hai lavorato? Che tipo di software ti piacerebbe gestire? In quali linguaggi? L'argomento reti è anche molto vasto e può rappresentare cose che vanno dal cloud, a software di messaggistica a lavorare con protocolli di rete o risorse hardware.

L'ingegneria del software è un argomento sicuramente possibile, anche se credo possa fare poca impressione alla commissione o a un eventuale colloquio lavorativo. Se è quello che ti interessa ti invito comunque a chiedere consiglio al professore del corso (che sarebbe in ogni caso il tuo eventuale relatore). Spesso le tesi, soprattutto quando lo studente ha poche idee, sono in realtà suggerite dal relatore.

Intanto grazie per le risposte.
Nell'azienda in cui ho lavorato ho sviluppato vari software i principali sono stati: un'app per la realtà aumentata (con objective-c), una web application per Unicredit (con javascript, html, css, java e vari framework che ora non ricordo), e un programma desktop + app mobile per un laboratorio di ricerca (in AngularJS, HTML, CSS, NodeJS e Java for Android).
Non saprei sinceramente cosa mi piacerebbe sviluppare/gestire in futuro, credo che chiederò al prof.

"Luc@s":
giusto per capire... mi passeresti un link al programma del corso? Sono curioso di vedere in casa si discosta d aquello che vedo tutti i giorni a lavoro.

Scusa, ti riferisci al programma del corso di ingegneria del software?

Luc@s
Si.
Ero curioso di capire cosa insegnano (parli con un professionista ICT autodidatta)

LowSlow
"Luc@s":
Si.
Ero curioso di capire cosa insegnano (parli con un professionista ICT autodidatta)

Ti elenco gli argomenti trattati perchè il sito dell'università, non so perchè, non è aggiornato.
- Introduzione all'ingegneria del software
- Le qualità del software
- Principi di ingegneria del software
- I processi di sviluppo del software (modello a cascata, prototipazione rapida, modello a spirale, RUP)
- Sviluppo Agile (con particolare attenzione a Extreme Programming e Scrum)
- Devops
- Ingegneria dei requisiti
- Modelli di rappresentazione del software e UML
- Software testing
- Evoluzione e manutenzione del software
- Riutilizzo dei componenti software
- Architetture orientate ai servizi

L'esame consiste nel sviluppare, a casa, un progetto qualsiasi utilizzando una metodologia di sviluppo a scelta (si può fare da soli o in gruppo), si documenta tutto in una relazione scritta e ci si presenta all'orale con il progetto su notebook e relazione, la si espone al professore e poi lui fa delle domande sulla teoria. Se il progetto è buono (vabbè che prima di presentarsi all'esame il progetto va inviato via email al prof che ti farà sapere se va bene o se è da modificare) e rispondi bene alle domande di teoria, passi l'esame e ti viene dato il voto.
Io ho fatto una web application per la gestione di sondaggi in AngularJS, con interfacciamento RestFUL a un server PHP+MySQL, ed ho utilizzato il modello a cascata.

Luc@s
Grazie!
Quindi tutto roba che ho imparato sul lavoro, capito.

Cmq scrum è carino come metodo se non ti infilano in 2 progetti nello stesso momento

LowSlow
"Luc@s":
Grazie!
Quindi tutto roba che ho imparato sul lavoro, capito.

Cmq scrum è carino come metodo se non ti infilano in 2 progetti nello stesso momento

Quando ho lavorato sul progetto per Unicredit si utilizzava Scrum, all'inizio mi sembravano cose stranissime (ero nuovo del mestiere), tipo il daily stand-up o il meeting bi-settimanale per il nuovo sprint mi sembravano cose dell'altro mondo :D . Poi mi sono abituato e devo dire che non è male come metodologia.
Vedo che sei un esperto Devops, potresti togliermi una curiosità su Devops? So che non c'entra con questo topic, ma non riesco a capire un concetto, cosa si intente per IT Operations?
Da tutte le parti leggo che Devops integra il lavoro di sviluppo con il lavoro di operations, ma non trovo una definizione semplice di operations (probabilmente sarà una cavolata ma non riesco a capire) :(

Luc@s
Ops è il vecchio sysadmin :)

apatriarca
"Luc@s":
Cmq scrum è carino come metodo se non ti infilano in 2 progetti nello stesso momento

:-D Solo due? Credo di star lavorando al momento su 4-5 film (lavoro in una società che fa effetti speciali) e una ventina di progetti diversi.. Ma in effetti non facciamo più di tanto uso di metodologie di sviluppo software particolari. È tutto molto più flessibile..

Luc@s
ti assicuro che anche solo due standup la mattina mi portano via 30m appena arrivo in ufficio :'(

apatriarca
;) non lo metto in dubbio.. scherzavo. Nel mio caso, la maggior parte delle attività sono molto piccole e non fanno uso di alcuna metodologia particolare. Le attività più grandi sono le uniche che fanno uso di qualche metodologia più strutturata e normalmente ogni persona lavora ad al massimo 1-2 per volta di queste.

Luc@s
Bello!
Noi siamo un team da 7 e si lavoro tanto!

Cmq waterfall e' bello per cose piccole piccole :)

vict85
Secondo me quei principi possono essere utili, ma è meglio non applicarli troppo alla lettera. In questo senso penso sia meglio impararli sul campo e non essere troppo dogmatici. Inoltre spesso i tempi sono più ristretti di quanto vorresti.

Detto questo, a meno che tu non voglia diventare un agile coach, non ti consiglio una tesi di sviluppo del software, e una tesi di puro sviluppo ha ben poco senso. Insomma, la tua laurea dovrebbe mostrare che hai imparato qualcosa di più di quello che si può imparare da soli leggendo su un paio di libri e facendo qualche progetto personale. Agli occhi di un esaminatore per un colloquio, una tesi del tipo "Implementazione di XY usando il metodo WZ", è qualcosa che potevi fare da solo come progetto casalingo.
Insomma, nella tesi dovresti dimostrare di aver acquisito specifiche capacità analitiche e di saper trovare una soluzione ad un problema usando le metodologie che ti sono state insegnate a lezione (fallire nel risolvere il problema è ammesso, ma in quel caso devi cercare di capire il perché hai fallito).

P.S.: Noi usiamo scrum, e lavoro in un gruppo di 3 persone (ufficialmente è da 9, ma è suddiviso in 3 sotto-gruppi a seconda della feature che stiamo implementando). Il mio maggiore problema è che spesso i manager danno per quasi finito qualcosa che è in fase di prototipo o quasi neanche iniziato. Due giorni fa mi hanno per esempio chiesto come potremmo anticipare di un mese una consegna che già ritenevamo a rischio.

Luc@s
Eh... vict85 ... il management e' *sempre* un problema.

Non farmi cominciare a parlare xD

Cmq concordo con la parte pre-ps :)

LowSlow
"Luc@s":
Ops è il vecchio sysadmin :)

Ah ecco, adesso è tutto più chiaro, grazie mille :D
Tornando alla discussione sulla tesi, da quello che ho letto, Devops, è molto utile nei progetti che riguardano il Cloud Computing proprio perchè si integra il lavoro degli sviluppatori con quello dei sistemisti.
Il mio professore di ingegneria del software, da quello che so, si occupa anche di ricerca nel campo del Cloud Computing (quindi potrebbe darmi buoni suggerimenti), secondo voi una tesi che parli di Devops e Cloud Computing (probabilmente ci sarebbe da mettere in mezzo argomenti ingegneria del software, programmazione, reti, macchine virtuali e sistemi operativi) potrebbe andare bene?

apatriarca
Mi sembra sinceramente troppo vasto come argomento. A mio parere le tesi migliori sono quelle in cui si tratta un singolo problema ben definito.

LowSlow
"apatriarca":
Mi sembra sinceramente troppo vasto come argomento. A mio parere le tesi migliori sono quelle in cui si tratta un singolo problema ben definito.

Naturalmente questa è un'idea molto generica, spero che parlandone al professore mi suggerisca un argomento in particolare che integri questi argomenti.
Penso che una cosa del genere faccia una bella figura sul curriculum.
O pensate che non sia fattibile?

Luc@s
Come dice il buon apatriarca, ti conviene limitare lo scope.

LowSlow
"Luc@s":
Come dice il buon apatriarca, ti conviene limitare lo scope.

Vabbè ma è ovvio, se dovessi parlare di tutte quelle cose non verrebbe una tesi, verrebbe un librone da 20000 pagine :D
Quello che volevo sapere è: trovando un argomento in particolare (quindi limitando lo scope) che integri questi argomenti, potrebbe essere starci bene come tesi?
Giovedì ho l'esame di ingegneria del software, già che ci sono vorrei parlare di questa idea al prof e sperare che mi suggerisca un argomento in modo da limitare lo scope, però prima volevo sapere se come idea "generica" potrebbe andare bene.

Luc@s
All'atto pratico io andrei tipo cose come usare una app cloud (magari con interfaccia REST) per analizzare, chesso, la distribuzione di un pattern in un dataset fornito (esempio stipido)

P.S: di mio ultimemente mi sto dedicando alle reti neurali ricorrenti per mettere captions ad immagini.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.