REVIEW : Harvard CS50 Introduction à l’informatique

  • par

CS50 est une véritable introduction complète à l’informatique. Le cours est enseigné par le sémillant David Malan et hébergé sur edX. Il y a 13 semaines d’enseignement avec 8 ensembles de problèmes obligatoires (psets) et un projet final :

  • Semaine 0 : Binaire. ASCII. Algorithmes. Pseudocode. Code source. Compilateur. Code objet. Scratch. Déclarations. Expressions booléennes. Conditions. Les boucles. Variables. Fonctions. Tableaux. Threads. Événements. pset1
  • Semaine 1 : Linux. C. Compilation. Bibliothèques. Types. Sortie standard. pset1
  • Semaine 2 : Casting. Imprécision. Commutateurs. Scope. Chaînes de caractères. Tableaux. Cryptographie. pset2
  • Semaine 3 : Arguments de la ligne de commande. Recherche. Triage. Tri à bulles. Tri par sélection. Tri par insertion. O. Ω .Θ. Récursion. Tri par fusion. pset3
  • Semaine 4 : Pile. Débogage. E/S de fichiers. Hexadécimal. Chaînes de caractères. Pointeurs. Allocation dynamique de la mémoire. pset4
  • Semaine 5 : Heap. Débordement de tampon. Listes liées. Tables de hachage. Essais. Arbres. Piles. Files d’attente.
  • Semaine 6 : TCP/IP. HTTP. pset5
  • Semaine 7 : HTML. CSS. PHP (edit : Python remplace PHP à l’automne 2016). pset6
  • Semaine 8 : MVC. SQL. pset7
  • Semaine 9 : JavaScript. Ajax. pset8
  • Semaine 10 : Sécurité. Intelligence artificielle.
  • Semaine 11 : Intelligence artificielle, suite.
  • Semaine 12 : Conclusion passionnante. (Alerte spoiler : montages, CS50 Family Feud, gâteau !) Projet final

Il y a deux conférences par semaine. Chaque cours magistral dure 50 minutes environ. Chaque semaine a une série de vidéos plus courtes aussi:

  • Walkthroughs : vidéos de 1-3 minutes de David Malan vous promenant à travers l’échantillon de code de la conférence à un rythme plus lent
  • Section : Vidéos de 5 à 30 minutes d’un chargé d’enseignement de Harvard expliquant en profondeur les concepts du cours magistral
  • Courts : Vidéos de 5 à 15 minutes d’autres membres du personnel de CS50 expliquant les concepts du cours magistral avec des exemples supplémentaires (et parfois excentriques)
Un court métrage de la semaine 2 de CS50.

Les ensembles de problèmes sont des « devoirs de programmation qui vous mettent au défi d’appliquer des concepts à des problèmes inspirés de domaines du monde réel. » Ils sont notés par un système de notation automatisé. Votre note globale pour un ensemble de problèmes est la fraction des tests que votre code réussit (1,0 = 100 %).

Le système de notation automatique du CS50.

Timeline

Il n’y a pas d’estimation à l’heure près de la part de Harvard. Ils déclarent cependant que les ensembles de problèmes prennent de 10 à 20 heures à compléter. Avec 8 ensembles de problèmes, ~5 heures de contenu vidéo par semaine et un projet final, une estimation approximative serait quelque part juste au nord de 200 heures. Cela m’a pris 200 heures et cinq minutes, tel que suivi par Toggl.

La répartition hebdomadaire de ma chronologie CS50.

J’ai passé comme un jour et demi à comprendre comment fonctionne l’hébergement web et à monter cette vidéo stupide pour mon projet final, les deux n’étant pas requis, donc 185 heures environ est probablement un nombre plus réfléchi.

Est-ce que ça vaut le prix ?

Le cours est gratuit, donc oui. Vous avez accès à tout le matériel et à la notation sans frais. Probablement le meilleur cours d’informatique de premier cycle au monde est disponible pour toute personne qui a une connexion Internet. C’est toujours aussi cool.

Probablement le meilleur cours d’informatique de premier cycle au monde est accessible à quiconque dispose d’une connexion Internet. C’est quand même trop cool.

Vous pouvez payer pour un certificat vérifié, qui coûte actuellement 90 $, si vous le souhaitez pour des raisons personnelles ou professionnelles.

Learning C

Les 6 premières semaines de Harvard CS50 sont passées en C, un langage réputé pour sa complexité. Cela semble un choix curieux, non ? Même si je n’utiliserai probablement pas beaucoup le C à l’avenir, je suis très heureux que ce soit le langage de choix pour cette raison :

L’avantage de connaître le C est que vous avez une très bonne idée de la façon dont un ordinateur fonctionne. Pas seulement le fonctionnement de votre modèle de programmation, mais aussi la disposition de la mémoire, etc. Connaître le C vous permet également d’apprécier combien le travail à faire dans un langage de plus haut niveau est moindre… et le coût impliqué dans le travail dans ce langage de plus haut niveau.

Les équivalents CS101 d’Udacity et du MIT (via edX) utilisent tous deux Python. Le cours de Nick Parlante à Stanford utilise C, mais le niveau de difficulté de ce cours n’est pas à la hauteur des trois susmentionnés.

Combien c’est difficile ?

C’est difficile, mais c’est bien difficile. À aucun moment je ne me suis sentie perdue. Le cours est bien structuré et il y a des tonnes de ressources supplémentaires. En gros, chaque plateforme de médias sociaux à laquelle vous pouvez penser a une communauté CS50 officielle – j’ai trouvé Reddit et Stack Exchange les plus utiles.

Le personnel du CS50 dit que la section des pointeurs du cours est la plus difficile et ils ont raison. Vous traitez intimement les pointeurs et l’allocation de mémoire dans pset5 et pset6. Une gymnastique mentale est nécessaire. Avoir enfin compris les pointeurs est probablement la chose dont je suis le plus fier en sortant de ce cours.

Un tweet sur pset5.

Les 10 à 20 heures pour chaque ensemble de problèmes sont exactes. Votre code ne fonctionnera pas et vous serez frustré (surtout parce que la moitié du cours est en C), mais la frustration est bonne. La frustration conquise, c’est l’apprentissage.

Addressing the PHP Haters

Edit (8/26/16) : L’édition de l’automne 2016 du CS50 remplace PHP par Python, un autre langage de programmation de haut niveau, ce qui annule la préoccupation suivante.

J’ai failli ne pas m’inscrire au CS50 après avoir lu cette réponse populaire de Quora concernant le CS50 enseignant le développement web à l’aide de PHP:

Crois-moi. Vous ne voulez PAS passer votre temps à apprendre PHP en 2014.

C’est peut-être vrai, mais ce n’est pas particulièrement pertinent pour la décision de suivre ce cours. Il n’y a qu’une semaine de contenu de cours et deux ensembles de problèmes qui utilisent PHP. Vous n’y consacrez pas une quantité importante de temps. La fonction éducative de PHP est de démontrer comment les langages de programmation de plus haut niveau sont utiles.

L’une des raisons pour lesquelles ils utilisent PHP dans le cours CS50 est qu’il est fortement inspiré du C. À la semaine 7, les étudiants ont une base solide de C. Ramasser PHP à ce moment-là n’est pas difficile en raison des similitudes syntaxiques.

La ligne de fond : ne laissez pas deux semaines de PHP vous dissuader de cette expérience d’apprentissage unique en son genre.

Pensées de clôture

J’ai du mal à décrire CS50 sans paraître hyperbolique. Le cours était juste tellement bon. Cet article dans le Harvard Crimson est ridiculement dramatique, mais c’est tellement vrai. Le contenu est passionnant. David Malan est trop bon dans son travail. La valeur de la production est absurde. Honnêtement, allez voir une conférence rien que pour la valeur de production. L’édition de l’automne 2016 sera encore plus folle : ils filment les conférences en 6K et en VR.

La première conférence de l’édition 2015 de Harvard CS50.

J’ai maintenant terminé CS50, Stanford CS101 et la moitié de Udacity CS101 et sans conteste l’introduction à l’informatique de Harvard est ma préférée. Quelques semaines après l’obtention du diplôme, j’ai déjà une nostalgie légitime. C’était une expérience.

Cotation : ★★★★★

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *