Rust-101
Le but de ce projet est de créer un cours de 5 séances de 2h de théorie avec également 5 fois 2h d'exercices. L'objectif du cours est de se familiariser avec le langage de programmation Rust tout en faisant une introduction à différents concepts avancés de programmation orientée objet et de programmation fonctionnelle.
Contexte
Les élèves ont suivi un cours de C
pendant un an et ont donc des notions de base sur les structures de contrôle,
la compilation, les types, etc, ainsi que des notions algorithmiques de base.
Les élèves recevront du matériel sur une introduction aux bases, très basiques, du Rust à étudier une semaine avant le début du cours qui sera évalué avec un QCM de 15min au début de la première séance.
Inspiration
L'inspiration de ce cours est tirée de deux cours qui ont l'air spectaculairement bons:
- Rust 101: an open-source university course https://tweedegolf.nl/en/blog/80/rust-101-open-source-university-course (cours de base avec introduction au langage).
- Rust-101 de ralfj https://www.ralfj.de/projects/rust-101/main.html (cours plutôt avancé avec beaucoup de notions de programmation fonctionnelle).
Matériel
Le matériel de cours sera composé de trois composants:
- Slides avec la théorie et des exemples.
- Résumés des points importants sur une page.
- Codes source exécutables de tous les exemples des slides.
Syllabus
L'idée principale du cours est de baser toutes les séances sur un exemple très simple de calcul du minimum d'une liste. Cela permet d'introduire tous les concepts du Rust (struct, enum, ownership, pattern matching, itérateurs, etc.) avec une application simple que tout le monde peut comprendre. On pourra ainsi comparer l'implémentation en C et en Rust de
Le cours théorique est découpé comme suit:
- Installation, tooling, Hello World.
- Introduction à la syntaxe (structures de contrôle et types de base).
- Types avancés (enum) et pattern matching.
- Généricité et traits.
- Ownership, Borrowing, etc.
- Clone, Copy.
- Smart pointeurs, mémoire.
- Tests, documentation, outils variés.
- Itérateurs, fonctions d'ordre supérieur, lambdas.
- CLI, I/O.
- Unsafe Rust et FFI.