Consiglio vivamente il corso Nand2Tetris, che è offerto su Coursera così come in formato libro. Il corso ha un meraviglioso sito web di supporto con download di software di accompagnamento che aiutano il tuo apprendimento durante il corso.
Ho lavorato attraverso questo corso immediatamente dopo aver preso CS50, e ho sentito che ha costruito sulle basi insegnate durante CS50 abbastanza bene (Il corso richiede almeno una certa comprensione della programmazione, quindi non consiglierei di prenderlo come primo corso di CS!) Il corso Nand2Tetris è incredibile perché ti porta fino ai meccanismi fondamentali di un computer digitale. Elon Musk chiama spesso questo tipo di apprendimento un "approccio ai primi principi", e ti permette di capire profondamente (anche più di quanto molti programmatori oggi possano capire) come funziona la tua complessa macchina. Alla fine del corso, sarete in grado di capire come quegli 0 e 1 si traducono alla fine nella funzionalità per cui oggi conosciamo i computer. La parte migliore del corso è l'alto livello di interattività. Non state semplicemente leggendo un libro su come funziona un computer e poi ve ne dimenticate per sempre. Stai costruendo un computer, e nel processo, impianterai un solido tronco di conoscenza che non ti abbandonerà.
Il corso ti porta dalle porte logiche e dalla costruzione dell'hardware di un semplice computer fino alla costruzione di macchine virtuali e alla scrittura di programmi di alto livello sopra il computer che hai costruito tu stesso durante il corso! Non è certamente una passeggiata nel parco, ma la ricompensa per aver finito giustifica la frustrazione provata nel cercare di tradurre un mucchio di codice binario in un computer funzionante 🙂
E no, non hai bisogno di andare a comprare parti di computer da Radioshack! Il corso fornisce dei simulatori che ti permettono di costruire questo computer nella comodità della tua casa!
Per altri libri che raccomando, ecco un breve video che ho messo insieme dei miei libri di programmazione preferiti.