Enseignement du supercalcul et des compétences en ingénierie SW
Notre cours à l'ETH Zurich enseigne le supercalcul et l'ingénierie logicielle aux étudiants en sciences et en ingénierie. Nous utilisons des GPU et Julia pour des simulations basées sur la physique, un élément clé de la science moderne. Nos étudiants apprennent en faisant, en travaillant sur des projets de recherche numérique réels avec des outils open-source et des ressources ETH. Nous communiquons par le biais de Matrix/Element et GitHub, et évaluons les étudiants par le biais d'exercices et de projets, et non d'examens. Notre cours est innovant, pratique et axé sur la recherche.
Au milieu de la pandémie, nous avons conçu et lancé un nouveau cours pour enseigner les compétences en supercalcul et en génie logiciel aux étudiants en sciences et en génie de l'ETH Zurich. Voici une bonne vue d'ensemble du cours sur son site. site web,qui héberge la majeure partie du matériel. Le cours comble un vide dans le programme d'études de l'ETH concernant le calcul haute performance (HPC) sur les unités de traitement graphique (GPU) avec un accent sur les simulations basées sur la physique. Le cours se concentre sur les calculs difficiles, qui jouent un rôle de plus en plus important dans la science moderne.
Notre cours expose les étudiants en sciences et en ingénierie aux progrès technologiques de l'information et leur enseigne les compétences informatiques. (au-delà du seul calcul par le GPU) qui s'alignent très bien avec la stratégie d'enseignement et de numérisation de l'ETH. De nouveaux langages de programmation avancés, tels que le langage Julia que nous utilisons, permettent désormais aux étudiants en sciences non informatiques de concevoir et de coder des simulations HPC basées sur le GPU sans des années de formation, dans un cours qui ne dure qu'un semestre. Il s'agit de la plus grande contribution de ce cours à l'innovation, telle que définie dans les critères KITE.
Nous fournissons une approche pratique du calcul GPU et HPC, c'est-à-dire que le cours est basé sur Enseignement basé sur le projet, l'outillage et la recherche pour enseigner la conception, la mise en œuvre et l'exploitation de telles applications. Nous voulons que nos étudiants s'approprient le travail (le code) qu'ils ont produit, les outils qu'ils ont appris et les projets qu'ils ont réalisés pendant le cours. Pour ce faire, nous avons conçu notre cours de manière à ce qu'il soit dispensé de façon pratique. Outre l'écriture de code, pour nous, la pratique signifie également que les étudiants doivent apprendre et appliquer les compétences et les outils nécessaires pour créer et exécuter des simulations avec succès : outils d'ingénierie logicielle (par exemple, contrôle de version avec git, GitHub, test) et compétences en gestion de projet (par exemple, écriture de documentation et de rapports, exécution de simulations). A notre avis, toutes ces compétences sont tout aussi importantes si un étudiant veut réussir en tant que scientifique computationnel, et ainsi satisfaire à la Sustainability de l'approche, telle qu'elle est définie dans les critères KITE.
Nous poursuivons un Approche de l'enseignement et de l'apprentissage axée sur la recherche,Les étudiants profitent probablement le plus lorsqu'ils sont activement impliqués dans la mise en œuvre du processus de recherche, au lieu de simplement apprendre le contenu de la recherche. Nous mettons cela en œuvre par le biais de l'apprentissage par projet, qui est une forme d'apprentissage actif dans laquelle les étudiants développent eux-mêmes leurs connaissances plutôt que de les voir présentées par les enseignants. Cela contribue à l'efficacité de l'approche, telle qu'elle est définie dans les critères KITE.
Notre cours est fully open-source, avec l'intégralité du contenu disponible sur son site web, et utilise divers outils et ressources en ligne, pour la plupart alimentés par l'ETH, pour une participation immersive sur site et en ligne. Les cours ont un format hybride. Les deux premières leçons, le codage et les exercices, sont hébergés sur une instance ETH JupyterHub qui s'intègre avec Moodle. Les manipulations ultérieures du cours se font via GitHub, où les étudiants hébergent à la fois leurs devoirs et leurs deux projets.
Le enseignement pratique et basé sur des projets consiste en six exercices hebdomadaires réalisés par les étudiants pendant la première partie du cours. Cela permet d'obtenir un feedback personnalisé et d'acquérir les compétences nécessaires à la réalisation de deux grands projets, qui constituent le cœur du cours. Le projet 1 consiste à résoudre la convection thermique poreuse en trois dimensions sur plusieurs GPU sur le supercalculateur Piz Daint au Centre national suisse de supercalcul (CSCS). Dans le projet 2, les étudiants choisissent des équations de leur intérêt à résoudre en utilisant les méthodes et les outils qu'ils ont appris. Le cours comporte également des éléments d'apprentissage actif pendant les trois heures de cours hebdomadaires sous la forme d'un codage en classe. Un autre soutien actif à l'apprentissage a lieu à la demande via les différents canaux numériques en place pendant et entre les cours.
Éléments innovants
Les étudiants se sentent inspirés et sont motivés par les solutions innovantes que nous proposons dans notre cours. Les résultats incluent une participation accrue et une satisfaction des étudiants supérieure à la moyenne, comme le montre l'enquête menée lors des deux premières éditions du cours (pour les résultats de l'évaluation, voir l'annexe). La motivation des étudiants est également très importante et, au fur et à mesure que le semestre avançait, beaucoup de nos étudiants ont commencé à donner la priorité aux tâches, devoirs et projets liés au cours sur les autres cours. Mais surtout, l'élément innovant du cours favorise l'autonomie des étudiants. Ils apprennent à chercher des solutions, à travailler en équipe dans certains cas, et à faire des rapports sur des questions non professionnelles en créant des exemples minimaux qui mettent en évidence leurs problèmes.
Notre cours innove avec de nouvelles approches et méthodes didactiques, en soutenant de nouvelles formes de transfert de connaissances, d'interactions, d'apprentissage indépendant et de feedback. Notre cours enseigne aux étudiants les compétences informatiques de pointe nécessaires pour réaliser des études de modélisation numérique de pointe. Nous mettons en œuvre de nouvelles approches pédagogiques à l'aide d'une grande variété d'outils numériques disponibles en ligne, notamment JupyterHub, Moodle, Matrix/Element, GitHub et le langage de programmation Julia. Ces outils sont accessibles à l'ensemble de la communauté ETH, et certains (comme JupyterHub ou Moodle) sont spécifiquement conçus pour l'enseignement. GitHub, le principal service d'hébergement de git, est actuellement un standard dans l'industrie et dans le développement de logiciels, et commence à être utilisé dans les flux de travail informatiques scientifiques qui nécessitent une reproductibilité, une documentation et un développement de code collaboratif. Dans notre cours, nous utilisons quelques fonctionnalités avancées de git et GitHub, telles que la réalisation de travaux personnels et de projets entièrement basés sur git, l'utilisation de branches et de demandes d'extraction comme flux de travail pour un feedback personnalisé. En outre, nous utilisons GitHub Actions pour enseigner et mettre en œuvre l'intégration et le test continus, et l'utiliser pour déployer automatiquement le contenu, tel que le site web du cours, sur le web. En plus des outils liés au code, nous avons introduit avec succès et utilisons maintenant la plateforme de chat Matrix/Element pour le personnel/les étudiants afin de faire fonctionner notre service de chat basé sur les cours. L'idée est d'avoir un espace numérique partagé où les étudiants peuvent échanger sur le cours, les exercices et le projet, ensemble et avec les enseignants. En même temps, les enseignants utilisent le service sur un canal privé pour se coordonner au sujet du cours. Après quelques semaines, nous observons une dynamique intéressante dans l'espace de discussion, car les étudiants commencent à interagir, à répondre aux questions de leurs pairs, à favoriser l'engagement et la participation d'une manière auto-soutenue.
Une autre innovation du cours est le contenu entièrement open-source. Le matériel du cours est librement accessible en ligne ; le code, la documentation et les cours entiers peuvent être déployés localement en clonant le repository GitHub du cours, qui fournit un environnement entièrement reproductible à partir d'une source unique. Ce dernier point est crucial pour les enseignants, car le fait d'avoir une source unique à gérer et à éditer permet un flux de travail très efficace et limite les conflits en travaillant de manière collaborative sur le contenu du cours. De plus, les étudiants peuvent suggérer directement des modifications ou des améliorations au contenu en ouvrant une demande d'extraction sur le référentiel principal du cours, ce qui accroît leur participation au cours.
Le contenu du cours est conçu pour soutenir de nouveaux types de transfert de connaissances et favoriser l'apprentissage indépendant. L'approche générale est de fournir un développement progressif des connaissances et des compétences tout au long du cours, afin de fournir aux étudiants un (sous-)ensemble de compétences qu'ils peuvent continuer à appliquer dans les deux projets. Nous avons cherché des modèles d'apprentissage basés sur des projets, car ils sont bien accueillis par les étudiants. L'approche peut être décrite comme une forme d'apprentissage actif dans laquelle les étudiants développent eux-mêmes leurs connaissances plutôt que de les voir présentées par les enseignants. Les apprentissages basés sur des projets qui en résultent renforcent encore l'engagement des étudiants.
Le feedback est un aspect clé du processus d'apprentissage ; les étudiants l'apprécient beaucoup. Nous prenons cet aspect au sérieux et avons décidé, par exemple, de limiter le nombre d'étudiants dans le cours à environ 25 afin de laisser suffisamment de temps à tous les étudiants pour un feedback personnalisé.
Les outils collaboratifs en ligne tels que Moodle, GitHub et l'espace de discussion du cours offrent de grandes opportunités d'interagir avec les étudiants d'une manière entièrement en ligne mais très personnalisée.
Comment avez-vous assuré un retour d'information (continu) sur les progrès d'apprentissage des étudiants ?
Assurer un feedback continu sur les progrès d'apprentissage des étudiants est un aspect difficile à mettre en œuvre dans un cadre pratique. Un feedback réussi permet (i) d'assurer les progrès des étudiants et (ii) de maintenir l'élan et la motivation. Nous mettons en œuvre un feedback continu pour les tâches initiales et pendant le travail sur le projet. Cette approche garantit que les étudiants sont évalués et reçoivent un feedback tout au long du cours. Les étudiants valorisent fortement le feedback continu, comme le montrent les enquêtes, et il y a une marge d'amélioration, surtout après la première édition du cours. L'aspect positif est l'augmentation des progrès et de la satisfaction des étudiants, tandis que l'aspect négatif est la charge de travail importante qu'elle engendre pour les enseignants. Nous pourrions encore affiner cet aspect dans les prochaines versions du cours, en allant potentiellement vers plus de feedback à la demande, en transférant le lieu d'action principal des enseignants vers les étudiants. Les étudiants pourraient par exemple déclencher un retour d'information à partir de certaines procédures automatisées lorsqu'ils en ont besoin, ce qui pourrait se traduire par un allègement de la charge de travail de l'enseignant.
Quels sont les éléments de votre projet que vous recommanderiez à d'autres ?
La motivation qui motive la conception de notre cours repose sur notre idée de transmettre aux (futurs) étudiants en master ou en doctorat les compétences nécessaires pour effectuer des recherches en sciences computationnelles avec nous ou avec d'autres chercheurs dans notre domaine. Ces compétences ne comprennent pas seulement le calcul, mais aussi d'autres compétences informatiques, par exemple le contrôle de version et le test, ainsi que des compétences telles que la gestion de projet et la rédaction. Ainsi, enseigner ce que nous devons savoir aux futurs MSc et PhD est l'un des aspects clés que nous recommandons largement à d'autres enseignants.
De plus, l'approche d'apprentissage basée sur la recherche que nous suivons implique les étudiants dans la mise en œuvre du processus de recherche, une forme d'apprentissage actif. Ainsi, les étudiants développent eux-mêmes leurs connaissances plutôt que de les recevoir de la part des enseignants, ce qui constitue une approche efficace que nous pouvons continuer à recommander.
Permettre aux étudiants de s'approprier leur travail est une autre composante très précieuse. Les pousser à développer leurs propres codes à partir de zéro permet de démystifier certains aspects clés et de les faire se sentir responsables et fiers du contenu qu'ils ont créé.
Enfin, les outils numériques qui peuvent être utilisés sur une base opt-in offrent une plateforme de support intéressante. Le chat en classe que nous menons sur Matrix/Element est un exemple de réussite. La dynamique de questions-réponses qui s'y développe après les premières semaines de cours offre un environnement accueillant et sûr aux étudiants et aux enseignants pour échanger des informations et des contenus pour le cours, et permet une interaction directe si nécessaire. En particulier pour le travail basé sur le code, avoir la possibilité de découper le code et d'échanger des exemples de travail minimaux d'une manière simple mais efficace est très précieux. Nous le recommandons vivement à d'autres cours ayant des besoins similaires.
Équipe de projet
Chaire de glaciologie
Hönggerbergring 26
8093 Zurich
Suisse
V. Génie hydraulique, hydrologie et glaciologie.
Hönggerbergring 26
8093 Zurich
Suisse
Chaire de glaciologie
Hönggerbergring 26
8093 Zurich
Suisse
CSCS
Via Trevano 131
6900 Lugano
Suisse