Quali sono alcuni interessanti progetti di programmazione estivi che si possono fare?
Se ti interessa un po' la matematica applicata e dove è collegata alla CS (ad esempio, computer grafica, scienza computazionale/ingegneria, ottimizzazione, AI/ML), potresti provare a implementare alcuni problemi canonici in queste aree.
Penso sia una buona idea per le persone imparare la matematica. Quello che è meglio è che voi avete un modo di impararla che altri non possono avere - attraverso la programmazione di una soluzione. Ancora meglio, si arriva a vedere come altre persone lo hanno fatto anche. Ancora più importante, l'alfabetizzazione matematica mostra una grande abilità che le persone che conoscono qualsiasi cosa vedranno come un vantaggio, quindi mettetela su GitHub.
Ecco alcune cose:
- Codificare un metodo Newton-Raphson, gradient descent, annealing simulato, o algoritmo genetico per l'ottimizzazione
- Scrivere un semplice solutore di equazioni di diffusione su una griglia 2D (o 1D) piatta
- Implementare il clustering k-means, qualche semplice modello di Markov, o SVM lineare (potete imbrogliare un po' e usare solo alcune librerie di ottimizzazione)
- Scrivere una routine di trasformata di Fourier, poi fare la trasformata veloce di Fourier. O Walsch-Hadamard, qualunque cosa.
- Scrivi una semplice libreria di algebra lineare (cioè addizione/sottrazione, matrice-matrice, moltiplicazione matrice-vettore, prodotti interni ed esterni, prodotti tensoriali/Kronecker, inversione di matrice, risoluzione di sistemi lineari, e davvero fin dove vuoi andare con essa. Se siete davvero interessati, provate l'eigendecomposizione o variazioni su questi altri metodi per particolari matrici... se siete arrivati a questo punto, sarebbe consigliabile prendere un libro di algebra lineare numerica)
- Scrivere un semplice simulatore di circuito quantistico (stato iniziale, applicare porte (leggi: operatori) ad esso, controllare i risultati) e implementare alcuni algoritmi di base. Potresti voler prendere un libro su questo, ma non è necessario.
** Punti bonus se fai un'implementazione multithreaded, a memoria distribuita, su GPU, o ottimizzata a basso livello (per esempio SSE). Penso che sarebbe una buona cosa per chiunque. E non dimenticare di metterlo sul tuo GitHub, dannazione!
Penso che questa sia una grande opportunità per acclimatarsi con la matematica. Un sacco di gente usa le cose di cui sopra o versioni più complicate di esse. La matematica è tutta uguale nella vostra testa, dovete solo iniziare da qualche parte. Una volta che sai come ragionare su una trasformata di Fourier potresti capire ulteriormente come risolvere certe ODE/PDE, o se capisci la eigendecomposizione/SVD potresti capire la riduzione della dimensionalità in ML. Da lì puoi costruire una buona comprensione della matematica e di come puoi sfruttarla nei tuoi problemi quotidiani.
Buona fortuna! Se decidi di affrontare uno di questi problemi, sentiti libero di commentare/messaggiare per libri o ulteriori risorse.
Articoli simili
- Quali sono alcuni progetti interessanti che si possono fare con il Raspberry Pi?
- Quali sono alcuni progetti Java interessanti per i principianti?
- Quali sono alcune Macro/Programmi/Progetti VBA interessanti che hai fatto?
- Quali sono alcuni dei migliori progetti C/C++ che i principianti possono provare?