mattiaferdeghini.com

EN · Read in English
Torna al Playground
Lo stemma di Harvard sopra la scritta "This is CS50." su sfondo biancoInformatica

CS50x: l'introduzione all'informatica di Harvard

Il corso introduttivo di informatica di Harvard, che ho portato avanti nei ritagli di tempo tra i corsi universitari. Dieci problem set tra C, Python, SQL e web, più un progetto finale che trasforma una rubrica in un grafo interattivo.

Da dove è partitoLink a questa sezione

CS50x è il corso introduttivo di informatica di Harvard, tenuto da David J. Malan: dieci problem set e un progetto finale. Mi ci sono iscritto da studente di ingegneria meccanica, perché volevo capire cosa succede davvero sotto al software che uso ogni giorno. È stata una delle cose più faticose che abbia fatto fuori dall'università, e anche una delle più soddisfacenti.

Il corso, passo per passoLink a questa sezione

Si comincia quasi per gioco con Scratch, poi si passa subito al C. Lì impari finalmente cosa sono una variabile, un ciclo e (più avanti) un puntatore. Da quel punto la difficoltà sale con costanza: array e algoritmi, quanto costa un ciclo in più, ordinamento e ricerca, e poi la memoria vera e propria. malloc, lo stack, lo heap e l'ansia da segmentation fault.

A metà corso si passa al Python, e tutto quello che in C ti era costato fatica all'improvviso sembra facile. Poi arrivano le strutture dati, SQL e i database, e per ultimo il web: HTML, CSS, JavaScript e Flask.

La sorpresa per me è stata SQL. Lavorare con i database, cioè strutturare i dati, interrogarli e farli rispondere a domande concrete, è la parte che mi è venuta più naturale. Gestire dati mi piace, e non me l'aspettavo.

Il progetto finaleLink a questa sezione

Per il progetto finale volevo qualcosa che avrei usato davvero: una rubrica interattiva. È un'agenda dei contatti ridisegnata come una rete, ispirata alla graph view di Obsidian.

Ogni contatto è un nodo e ogni relazione è un collegamento: un amico, un collega, un familiare, la persona che te ne ha presentata un'altra. Invece di scorrere centinaia di nomi in una lista piatta, hai una mappa della tua rete di conoscenze che si legge a colpo d'occhio.

Il grafo dei contatti del progetto finale, con il nodo centrale "Tu" e i contatti collegati intorno; i nomi dei contatti sono sfocati e le iniziali nascoste
Il progetto finale in funzione: ogni contatto è un nodo e ogni relazione un collegamento, così vedi tutta la rete in una volta. Ho sfocato i nomi dei contatti e nascosto le iniziali.

Disposta come un grafo, la struttura delle relazioni salta all'occhio: chi conosce chi, quali gruppi esistono, chi fa da ponte tra cerchie diverse. Vederla come un grafo mi aiuta a tenere traccia delle persone che conosco già.

Come funzionaLink a questa sezione

Il backend è in Flask, quindi Python. Gestisce i contatti e le relazioni tra loro e serve un front-end scritto in HTML, CSS e JavaScript. L'interfaccia disegna la rete come un grafo interattivo: puoi trascinare i nodi, seguire i collegamenti ed esplorare le connessioni direttamente nel browser.

Il certificatoLink a questa sezione

È stato un percorso lungo e a singhiozzo. L'ho infilato nei buchi tra i corsi universitari principali: un problem set qui, una lezione lì, quando riuscivo a trovare il tempo. Alla fine ci sono arrivato comunque, e ne è valsa la pena.

Con tutti e dieci i problem set e il progetto finale ho ottenuto il certificato ufficiale CS50, firmato da David J. Malan. Si può verificare sul sito di CS50 di Harvard.

Dettagli

Corso
CS50x · Harvard
Completato
2026
Carico
10 problem set + progetto finale
Stack
Flask · JavaScript · HTML/CSS
  • Computer Science
  • C
  • Python
  • SQL
  • Flask
  • JavaScript

Altre side quest