REVISIONE: Harvard CS50 Introduction to Computer Science

  • di

CS50 è una vera, completa introduzione all’informatica. Il corso è tenuto dal vivace David Malan e ospitato su edX. Ci sono 13 settimane di lezione con 8 set di problemi obbligatori (pset) e un progetto finale:

  • Settimana 0: Binario. ASCII. Algoritmi. Pseudocodice. Codice sorgente. Compilatore. Codice oggetto. Graffio. Dichiarazioni. Espressioni booleane. Condizioni. Cicli. Variabili. Funzioni. Array. Threads. Eventi. pset1
  • Settimana 1: Linux. C. Compilazione. Biblioteche. Tipi. Uscita standard. pset1
  • Settimana 2: Casting. Imprecisione. Interruttori. Portata. Stringhe. Array. Crittografia. pset2
  • Settimana 3: Argomenti della linea di comando. Ricerca. Ordinamento. Ordinamento a bolle. Ordinamento a selezione. Ordinamento a inserimento. O. Ω .Θ. Ricorsione. Ordinamento a fusione. pset3
  • Settimana 4: Stack. Debugging. File I/O. Esadecimale. Stringhe. Puntatori. Allocazione dinamica della memoria. pset4
  • Settimana 5: Heap. Traboccamento del buffer. Liste collegate. Tabelle di hash. Tentativi. Alberi. Pile. Code.
  • Settimana 6: TCP/IP. HTTP. pset5
  • Settimana 7: HTML. CSS. PHP (modifica: Python sostituisce PHP nell’autunno 2016). pset6
  • Settimana 8: MVC. SQL. pset7
  • Settimana 9: JavaScript. Ajax. pset8
  • Settimana 10: Sicurezza. Intelligenza artificiale.
  • Settimana 11: Intelligenza artificiale, continua.
  • Settimana 12: Conclusione emozionante. (Spoiler alert: montaggi, CS50 Family Feud, torta!) Progetto finale

Ci sono due lezioni a settimana. Ogni lezione dura circa 50 minuti. Ogni settimana ha anche una serie di video più brevi:

  • Walkthroughs: video di 1-3 minuti di David Malan che vi guida attraverso il codice di esempio della lezione ad un ritmo più lento
  • Sezione: Video di 5-30 minuti di un borsista di Harvard che spiega in profondità i concetti della lezione
  • Corti: Video di 5-15 minuti di altri membri dello staff di CS50 che spiegano i concetti della lezione con esempi aggiuntivi (e talvolta bizzarri)
Un breve dalla settimana 2 di CS50.

I set di problemi sono “incarichi di programmazione che vi sfidano ad applicare concetti a problemi ispirati a domini del mondo reale”. Sono valutati da un sistema automatico di valutazione. Il vostro voto complessivo per un set di problemi è la frazione di test che il vostro codice supera (1.0 = 100%).

Il sistema di valutazione automatica di CS50.

Tempistica

Non c’è una stima all’ora da Harvard. Dichiarano che i set di problemi richiedono 10-20 ore per essere completati. Con 8 serie di problemi, ~5 ore di contenuto video a settimana, e un progetto finale, una stima approssimativa sarebbe da qualche parte appena a nord di 200 ore. Mi ci sono volute 200 ore e cinque minuti, come rilevato da Toggl.

La suddivisione settimanale della mia timeline CS50.

Ho passato un giorno e mezzo a capire come funziona il web hosting e a montare questo stupido video per il mio progetto finale, entrambi i quali non sono richiesti, quindi 185 ore circa è probabilmente un numero più riflessivo.

Vale il prezzo?

Il corso è gratuito, quindi sì. Hai accesso a tutti i materiali e alle valutazioni senza alcun costo. Probabilmente il miglior corso universitario di informatica del mondo è disponibile per chiunque abbia una connessione Internet. Questo è ancora così figo.

Probabilmente il miglior corso di informatica universitaria del mondo è disponibile per chiunque abbia una connessione Internet. Questo è ancora così cool.

È possibile pagare per un certificato verificato, che attualmente costa $90, se lo si desidera per motivi personali o professionali.

Imparare il C

Le prime 6 settimane di Harvard CS50 sono spese in C, un linguaggio noto per la sua complessità. Sembra una scelta curiosa, no? Anche se probabilmente non userò molto il C in futuro, sono molto contento che sia stato il linguaggio scelto per questa ragione:

Il vantaggio di conoscere il C è che si ha un’idea molto buona di come funziona un computer. Non solo come funziona il vostro modello di programmazione, ma come è disposta la memoria e cose simili. Conoscere il C ti permette anche di apprezzare quanto meno lavoro devi fare in un linguaggio di livello superiore … e il costo che comporta lavorare in quel linguaggio di livello superiore.

Gli equivalenti CS101 di Udacity e MIT (via edX) usano entrambi Python. Il corso di Nick Parlante a Stanford usa il C, ma il livello di difficoltà di quel corso non è alla pari con i tre sopracitati.

Quanto è impegnativo?

E’ difficile, ma è bello difficile. In nessun momento mi sono sentito perso. Il corso è ben strutturato e ci sono tonnellate di risorse aggiuntive. Praticamente ogni piattaforma di social media a cui puoi pensare ha una comunità ufficiale CS50 – ho trovato Reddit e Stack Exchange le più utili.

Lo staff di CS50 dice che la sezione puntatori del corso è la più difficile e hanno ragione. Si ha a che fare intimamente con i puntatori e l’allocazione della memoria in pset5 e pset6. È necessaria una ginnastica mentale. Capire finalmente i puntatori è probabilmente la cosa di cui sono più orgoglioso dopo il corso.

Un tweet su pset5.

Le 10-20 ore per ogni problema sono accurate. Il vostro codice non funzionerà e sarete frustrati (specialmente perché metà del corso è in C), ma la frustrazione è un bene. La frustrazione conquistata è l’apprendimento.

Individuare gli odiatori di PHP

Modifica (8/26/16): L’edizione autunnale 2016 di CS50 sostituisce PHP con Python, un altro linguaggio di programmazione di alto livello, il che annulla la seguente preoccupazione.

Ho quasi rinunciato a iscrivermi a CS50 dopo aver letto questa risposta popolare su Quora riguardo a CS50 che insegna lo sviluppo web usando PHP:

Fidati di me. NON volete passare il vostro tempo ad imparare PHP nel 2014.

Questo può essere vero, ma non è particolarmente rilevante per la decisione di seguire questo corso. C’è solo una settimana di contenuto delle lezioni e due serie di problemi che usano PHP. Non gli si dedica una quantità significativa di tempo. La funzione educativa di PHP è quella di dimostrare come i linguaggi di programmazione di livello superiore siano utili.

Una delle ragioni per cui usano PHP in CS50 è perché è fortemente ispirato al C. Alla settimana 7, gli studenti hanno una solida base di C. Prendere in mano il PHP a quel punto non è difficile a causa delle somiglianze sintattiche.

In conclusione: non lasciate che due settimane di PHP vi scoraggino da questa esperienza di apprendimento unica nel suo genere.

Pensieri conclusivi

Ho difficoltà a descrivere CS50 senza sembrare iperbolico. Il corso era così dannatamente buono. Questo pezzo nel Harvard Crimson è ridicolmente drammatico, ma è così vero. Il contenuto è coinvolgente. David Malan è troppo bravo nel suo lavoro. Il valore della produzione è assurdo. Onestamente, andate a vedere una conferenza solo per il valore della produzione. L’edizione dell’autunno 2016 sarà ancora più folle: stanno girando le lezioni in 6K e VR.

La prima lezione dell’edizione 2015 di Harvard CS50.

Ora ho completato CS50, Stanford CS101, e metà di Udacity CS101 e senza dubbio l’introduzione all’informatica di Harvard è la mia preferita. A poche settimane dalla laurea, ho già avuto qualche legittima nostalgia. È stata un’esperienza.

Valutazione: ★★★★★

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *