Article original : Review of CS50 – Harvard's Introduction to Computer Science Course
Vous envisagez de suivre le cours CS50 d'introduction à l'informatique, mais vous vous demandez s'il vous convient ?
En tant que personne sans diplôme en informatique cherchant à apprendre les bases du domaine, j'étais dans la même situation. C'est pourquoi j'ai décidé de m'inscrire au cours et de documenter mon expérience dans cet article.
Je vais vous donner un aperçu et un avis sur CS50 pour vous aider à décider si c'est le bon cours pour vous.
Qu'est-ce que CS50 ?
CS50 est un cours en ligne et sur campus de dix semaines qui sert d'introduction à l'informatique. Il est enseigné à l'Université Harvard et Yale.
Le responsable du cours est le professeur David J. Malan. Il est soutenu par l'équipe CS50, composée de précepteurs seniors et d'une équipe de production entière. Le cours se déroule du 1er janvier au 31 décembre.
Pourquoi choisir CS50 ?
Il y a plusieurs raisons pour lesquelles CS50 pourrait être un bon choix pour vous. En voici quelques-unes :
C'est un cours très respecté proposé par l'Université Harvard. Cela signifie que vous apprendrez auprès d'instructeurs expérimentés et aurez accès à un cours de haute qualité.
Il couvre un large éventail de sujets, y compris les bases de l'informatique, les algorithmes, les structures de données et les langages de programmation tels que C, Python et SQL. Cela signifie que vous aurez une introduction bien équilibrée au domaine.
Il est à votre rythme, ce qui signifie que vous pouvez suivre le cours à votre propre rythme et l'intégrer à votre emploi du temps. Vous pouvez regarder les conférences sur diverses plateformes, y compris EdX et la chaîne YouTube de freeCodeCamp. Pour moi, cela était important car je n'avais pas beaucoup de temps libre.
C'est gratuit ! Vous aurez accès aux conférences et aux supports de cours.
Quel est le format du cours ?
Il y a dix semaines de conférences, de laboratoires et de séries de problèmes à compléter. À la fin du cours, il y a un projet final.
Est-ce un cours pour débutants ?
Oui. En fait, environ deux tiers des étudiants qui s'inscrivent à CS50 n'ont jamais suivi de cours d'informatique auparavant. Donc, si vous êtes nouveau dans le domaine et que vous cherchez à apprendre les bases, vous serez en bonne compagnie.
Cela dit, ne vous attendez pas à ce que le cours soit facile. Bien que les conférences soient conçues pour être accessibles et engageantes, les séries de problèmes et les laboratoires peuvent être difficiles. En moyenne, les étudiants doivent s'attendre à passer environ 12 heures par semaine sur le cours.
Obtiens-je un certificat à la fin du cours ?
Vous pouvez choisir de recevoir un certificat CS50 gratuit ou de payer pour un certificat vérifié auprès de edX.
Que se passe-t-il si vous ne terminez pas le cours avant le 31 décembre ?
Vous pouvez reporter vos soumissions à l'année suivante. J'ai fait cela et le processus était simple. Le contenu du cours est pratiquement le même avec quelques mises à jour des supports de cours.
CS50, semaine par semaine
Semaine 0 : Apprendre Scratch
Lors de la première semaine du cours, vous serez introduit au monde de l'informatique et apprendrez comment les nombres, le texte et les images sont représentés en binaire.
Vous apprendrez également les algorithmes et le pseudo-code, et aurez une introduction pratique à Scratch, un langage de programmation graphique.
Pour votre première série de problèmes, vous créerez un projet Scratch. Cette semaine est une manière amusante de vous initier au cours et de goûter à la programmation.
Si vous êtes intéressé, voici mon projet Scratch, qui a été inspiré par mon fils fasciné par l'espace.
Semaine 1 : Apprendre C
Lors de la deuxième semaine du cours, vous plongerez dans C, un langage de programmation de bas niveau.
Vous apprendrez les bases de la programmation telles que les fonctions, les conditionnelles, les expressions booléennes, les boucles et les variables.
Pour la série de problèmes, vous créerez un programme qui génère une pyramide de hachures comme à la fin d'un niveau dans un jeu Super Mario.
Semaine 2 : Introduction aux tableaux
Vous continuerez à apprendre la programmation en C et aborderez des sujets tels que la compilation de votre programme, le débogage, les tableaux, les caractères, les chaînes et les arguments de ligne de commande.
Pour le laboratoire, vous écriverez un programme de chiffre de César, et pour la série de problèmes, vous travaillerez sur un défi de type scrabble. Si vous avez complété le certificat JavaScript Algorithm and Data Structures sur freeCodeCamp, cela devrait vous être familier car c'est l'un des défis de codage.
Semaine 3 : Introduction aux algorithmes
Lors de la troisième semaine, vous apprendrez différents types de recherche (linéaire et binaire) et différents types de tri (sélection et bulle), ainsi que la récursivité.
Vous apprendrez également la notation Big O, qui peut être difficile mais est un concept important en informatique. Heureusement, le cours propose des vidéos courtes supplémentaires sur les concepts plus difficiles, qui fournissent une explication plus détaillée avec des exemples.
Semaine 4 : Mémoire de l'ordinateur
La quatrième semaine se concentre sur la mémoire, y compris des sujets tels que les pointeurs, les adresses, l'allocation de mémoire et la libération de mémoire, la détection des fuites de mémoire et l'explication de la manière dont un débordement de pile se produit.
Le laboratoire et la série de problèmes impliquent la manipulation de fichiers audio et image. Ci-dessous un exemple de filtre que j'ai créé en C.

Semaine 5 : Structures de données
Lors de la dernière semaine de programmation en C, vous apprendrez comment les pointeurs peuvent être utilisés pour stocker les adresses en mémoire pour les listes chaînées.
Le laboratoire consolide vos connaissances des pointeurs, et la série de problèmes implique la création d'un programme de vérification orthographique. C'était un exercice particulièrement délicat et il vaut la peine de prendre son temps pour comprendre les fichiers de départ fournis avant de se lancer.
Semaine 6 : Apprendre les bases de Python
La sixième semaine marque la transition de C à Python, un langage de programmation populaire plus facile à apprendre et à utiliser que C. Vous travaillerez sur des séries de problèmes qui impliquent de traduire des programmes précédemment écrits en C vers Python.
Semaine 7 : SQL et bases de données relationnelles
Lors de la septième semaine, vous apprendrez les bases de données relationnelles et SQL (Structured Query Language), en utilisant SQLite pour exécuter des requêtes sur la ligne de commande et en Python.
La série de problèmes est amusante, car vous devrez résoudre un mystère sur qui a volé le canard CS50 à travers une série de requêtes SQL !
Semaine 8 : HTML, CSS et JavaScript
La huitième semaine couvre les bases d'Internet et du web, y compris HTML, CSS et JavaScript côté client.
Pour la série de problèmes, vous créerez une page d'accueil à votre sujet.
Semaine 9 : Flask
Lors de la neuvième semaine, vous apprendrez Flask, un framework Python utilisé pour construire des applications web. Vous aborderez des sujets tels que les formulaires, les mises en page et les templates utilisant Jinja, les requêtes POST et GET, et comment envoyer un email depuis une application Flask. Vous suivrez également le processus de construction d'une application full-stack.
Pour la série de problèmes, vous mettrez vos compétences à l'épreuve en implémentant une application financière full-stack qui rassemble tout ce que vous avez appris tout au long du cours. C'est un projet difficile mais gratifiant qui vous donnera un aperçu de ce que c'est que de construire une application web réelle.
Semaine 10 : Conférence de clôture
Pas d'exercices cette semaine. Il y a un conférencier invité et une clôture par le Professeur Malan.
Le projet final
La dernière partie du cours est le projet final. Le brief est de :
"construire quelque chose qui vous intéresse, qui résout un problème réel, qui impacte votre communauté, ou qui change le monde."
C'est délibérément vague, donc vous avez la liberté de choisir n'importe quel langage de programmation et projet que vous aimez. Vous devrez également enregistrer une vidéo de trois minutes présentant votre application.
J'ai construit une application de suivi pour bébé. Pour le backend, j'ai développé une API REST avec Python et Flask. Pour ma base de données, j'ai utilisé SQLite. Côté client, j'ai utilisé React.js.
C'est un travail substantiel. De la conception à la conception de mon application jusqu'au développement de l'application, j'ai probablement passé plus de 30 heures sur cela.
Votre projet final serait un excellent ajout à votre portfolio personnel, alors amusez-vous avec ! Ci-dessous quelques captures d'écran de mon application.

Quels sont les avantages de suivre CS50 ?
Les conférences sont de haute qualité, tant en termes de contenu que de production. Le professeur Malan est animé, enthousiaste et très passionné par l'enseignement de l'informatique et de la programmation. Les exemples visuels sur scène et sur les écrans interactifs sont utiles pour comprendre les concepts difficiles.
Les séries de problèmes sont bien structurées et fournissent des vidéos détaillées, des spécifications et du code de départ avec des commentaires pour vous guider à travers les tâches. Vous pouvez également tester votre code pour voir s'il répond à toutes les exigences avant de le soumettre.
La configuration de votre environnement de développement intégré (IDE) est simple, grâce à une version modifiée de GitHub Codespaces, qui vous permet de coder dans le navigateur.
La bibliothèque CS50 est une ressource utile avec une excellente documentation. La bibliothèque fournit des fonctions telles que
get_string, qui invite un utilisateur à saisir une chaîne dans l'interface de ligne de commande (CLI). Ces fonctions agissent comme des roues d'entraînement pendant les premières semaines du cours, vous aidant à vous concentrer sur la familiarisation avec le langage de programmation.Pour certaines des séries de problèmes, il y a deux options : une pour quand vous vous sentez "moins à l'aise" et une pour quand vous vous sentez "plus à l'aise". Cela vous permet de choisir le niveau de difficulté qui vous convient.
Le cours est structuré de manière à construire sur vos connaissances des conférences et séries de problèmes précédents. Vous commencerez avec C, un langage de bas niveau, puis passerez à la manière d'implémenter les mêmes choses en Python et JavaScript plus tard dans le cours.
Il existe une grande et active communauté en ligne CS50 sur diverses plateformes telles que Facebook, Twitter, Discord et LinkedIn, où vous pouvez vous connecter avec d'autres étudiants et obtenir de l'aide pour les séries de problèmes et les laboratoires.
Le cours est gratuit et accessible à toute personne disposant d'un ordinateur et d'une connexion Internet.
Quels sont les inconvénients de CS50 ?
Le cours est difficile. Il peut avoir une courbe d'apprentissage abrupte. J'ai trouvé que je devais faire des lectures supplémentaires sur des sujets avec lesquels je n'étais pas familier/confortable.
La plupart des gens ne terminent pas le cours, mais même si vous ne le terminez pas, vous pouvez toujours bénéficier de ce que vous apprenez. Comme le dit le Professeur Malan :
"Ce qui compte finalement dans ce cours, ce n'est pas tant où vous en êtes par rapport à vos camarades de classe, mais où vous en êtes par rapport à vous-même lorsque vous commencez."
Résumé
CS50 est un cours complet et très respecté qui fournit une solide base en informatique.
En tant que développeur frontend autodidacte sans diplôme en informatique, j'ai trouvé que le cours était une excellente manière de combler les lacunes de connaissances et de renforcer ma compréhension des bases du domaine.
Les conférences sont engageantes et bien produites, et les séries de problèmes sont difficiles mais offrent une opportunité précieuse d'appliquer ce que vous avez appris.
Le cours couvre un large éventail de sujets, ce qui en fait une excellente introduction à l'informatique. Dans l'ensemble, c'est un cours exceptionnel et l'une des meilleures expériences d'apprentissage en ligne que j'ai eues.
J'espère que vous avez trouvé cet article utile et qu'il vous a aidé à prendre la décision de suivre ou non CS50.