layout | title |
---|---|
lecture |
Pourquoi ce cours ? |
Au cours d'une formation traditionnelle en informatique, il y a de fortes chances que vous suiviez de nombreux cours sur des sujets avancés, allant des systèmes d'exploitation aux langages de programmation en passant par le machine learning. Mais dans de nombreuses institutions, il y a un sujet essentiel qui est rarement abordé et qui est laissé à l'initiative des étudiants : la connaissance de l'écosystème informatique.
Au fil des ans, nous avons participé à l'enseignement de plusieurs cours au MIT, et nous avons constaté à maintes reprises que de nombreux étudiants ont une connaissance limitée des outils mis à leur disposition. Les ordinateurs ont été conçus pour automatiser les tâches manuelles, mais les étudiants effectuent souvent des tâches répétitives à la main ou ne parviennent pas à tirer pleinement parti d'outils puissants tels que le contrôle de version et les éditeurs de texte. Dans le meilleur des cas, il en résulte un manque d'efficacité et une perte de temps ; dans le pire des cas, il en résulte des problèmes tels que la perte de données ou l'impossibilité d'accomplir certaines tâches.
Ces sujets ne sont pas enseignés dans le cadre du programme universitaire : les étudiants n'apprennent jamais à utiliser ces outils, ou du moins pas à les utiliser efficacement, et perdent donc du temps et des efforts pour des tâches qui devraient être simples. Le programme d'études standard en sciences informatiques ne comprend pas de sujets essentiels sur l'écosystème informatique qui pourraient rendre la vie des étudiants beaucoup plus facile.
Pour remédier à cela, nous organisons un cours qui couvre tous les sujets que nous considérons comme essentiels pour devenir un informaticien et un programmeur efficace. Le cours est pragmatique et pratique, et il fournit une introduction pratique aux outils et techniques que vous pouvez immédiatement appliquer dans une grande variété de situations que vous rencontrerez. Le cours est dispensé pendant la "période d'activités indépendantes" du MIT en janvier 2020 - un semestre d'un mois qui propose des cours plus courts gérés par les étudiants. Bien que les conférences elles-mêmes ne soient accessibles qu'aux étudiants du MIT, nous mettrons à la disposition du public tous les supports de cours ainsi que les enregistrements vidéo des conférences.
Si cela vous semble être pour vous, voici quelques exemples concrets de ce que le cours enseignera :
Comment automatiser les tâches courantes et répétitives avec des alias, des scripts et des systèmes de compilation automatique. Plus besoin de copier-coller des commandes à partir d'un document texte. Plus besoin de "lancer ces 15 commandes l'une après l'autre". Plus de "vous avez oublié d'exécuter cette chose" ou "vous avez oublié de passer cet argument".
Par exemple, une recherche rapide dans votre historique peut vous faire gagner énormément de temps. Dans l'exemple ci-dessous, nous montrons plusieurs astuces liées à la navigation dans l'historique de votre shell pour les commandes de conversion convert
.
Comment utiliser correctement le contrôle de version et en tirer parti pour éviter les catastrophes, collaborer avec d'autres personnes et trouver et isoler rapidement les modifications problématiques. Plus de rm -rf ; git clone
. Plus de merge conflicts (ou du moins, moins de conflits). Plus d'énormes blocs de code commenté. Plus d'inquiétude sur la façon de trouver ce qui a cassé votre code. Plus de "oh non, avons-nous supprimé le code qui fonctionnait ?!". Nous vous apprendrons même à contribuer aux projets d'autres personnes par le biais de demandes de modification (pull requests) !
Dans l'exemple ci-dessous, nous utilisons git bisect
pour trouver quel commit a fait échouer un test unitaire, puis nous le corrigeons avec git revert
.