Prova Udacity o Coursera.org. Hanno corsi gratuiti (e certificazioni a pagamento, crediti universitari o nanodegree) con video lezioni, quiz e anche grafici online in modo da poter presentare un compito di programmazione per la valutazione e sapere se il tuo programma funziona correttamente.
Queste classi mostrano anche come impostare un buon ambiente di programmazione (come una shell interattiva/REPL) per giocare con comandi/strutture di controllo/espressioni per familiarizzare con loro e seguire le lezioni e i tutorial.
Inoltre, per lo sviluppo web, il tutorial AngularJS Phonecat è ottimo per i principianti. È un tutorial passo dopo passo che ti introduce a Git (controllo della versione), ai test unitari e ai concetti di base dello sviluppo Angular. Ciò che è particolarmente bello è che le istruzioni utilizzano il progetto Angular Seed, che vi imposta con un'applicazione bootstrapped dove i test unitari, l'automazione della compilazione, ecc. sono tutti preconfigurati per voi. Non è un singolo programma, ma piuttosto un insieme preconfezionato di strumenti correttamente configurati che aiutano davvero i principianti a imparare un flusso di lavoro professionale di sviluppo front-end in modo indolore.
CheckiO è un altro dei miei preferiti. È un gioco di programmazione in cui si devono risolvere sfide di programmazione per avanzare nel gioco. Ce ne sono molti altri là fuori (CodeWars, CodeCombat, ecc.), ma questo è più veloce e non si concentra così tanto su problemi banali. CodeCombat potrebbe essere più adatto ai bambini, ma inizia in modo incredibilmente basilare, e non sono sicuro di quanto possa progredire, mentre CheckIO inizia senza presupporre che abbiate alcuna esperienza di programmazione, ma inizia immediatamente a farvi imparare utili compiti di programmazione.
C'è anche un classico della vecchia scuola, AT-Robots e i suoi vari cloni moderni, che non è istruttivo ma può ancora essere un modo divertente per imparare la programmazione assembly di base. Essenzialmente, si codifica l'IA di bot da battaglia virtuali in assembly e poi li si fa duellare in battaglie/tornei simulati.