Prima di tutto, chiedi in cosa sei bravo e cosa ti piace. Preferiresti lavorare in assembler, C, Python, o qualche tecnologia ancora più nuova? Entro la fine di un progetto di 1 anno probabilmente ti risentirai del tuo progetto-argomento, ma puoi minimizzare questo se scegli qualcosa che trovi veramente interessante.
Alcuni progetti di basso livello includono:
- Costruire il tuo compilatore (molta teoria, e molto spazio per scalare).
- Creare un server DNS personalizzato (come PiHole).
- Indagare su problemi di sicurezza a livello di firmware (ad esempio, bit-flipping indotto termicamente).
Non ti piace il codice di basso livello? Considerate qualcosa che ha implicazioni nel mondo reale:
- Costruite un simulatore di malattie. Potete iniziare in modo semplice, e aggiungere complessità/aumento secondo necessità. E potete confrontare i vostri risultati con le malattie del mondo reale e/o con altri modelli.
- Vedete se potete costruire un bot che rileva i bot. Magari individuate account dirottati tramite lunghi periodi di inattività seguiti da un'improvvisa impennata, o messaggi simili ripetuti su più account.
- C'è un sacco di progetti che fanno uso del deep learning, e i risultati sono solitamente misurabili. Alcuni possibili argomenti includono la creazione di una RNN che rimuova il rumore di fondo (come Krisp), la previsione del Forex (potresti collegare la tua NN a Zorro), o un generatore di mondi di gioco/sprite/lore.
Devi trovare un equilibrio tra:
- Utilizzare/apprendere una tecnologia che farà bella figura nel tuo CV.
- Scegliere un argomento che voi (e qualsiasi compagno di squadra/supervisore) troverete interessante e utile.
Parlando come qualcuno che ha fatto la sua tesi di MSc sull'educazione CS, una parola di cautela: evitare argomenti che richiederebbero test umani o dove i risultati sarebbero soggettivi. Per esempio, per quanto utile possa essere la creazione di un programma di CS per l'apprendimento a distanza, sarà difficile dimostrare la validità/viabilità del tuo progetto.