Info 111 «Introduction à Programmation Impérative» (Site enseignants)#
Bienvenue sur le site web / dépôt git des enseignants du cours Info 111 «programmation Impérative» (code apogée: OLIN115).
Le dépôt git est l’espace collaboratif principal pour les enseignants du cours. Il est complété par quelques dépôts privés.
Vous trouverez ci-dessous les informations sur l’organisation et l’infrastructure du cours
Avertissement
[09/2021] Une partie des informations ici présentes a besoin d’un bon coup d’époussetage …
Séances de TD et TP#
La prise en charge d’un groupe de TD/TP (42.5 eq TD, soit 120h-160h de travail effectif) inclue:
10 séances de TD de 1h45
12 séances de TP de 2h; compter 3-4h pour la dernière séance (soutenances de projet)
participer au renouvellement des fiches de TD/TP
participer à la préparation du projet, la rédaction de nouveaux exercices PL; amélioration du site web, contribution à laby-jupyter, … Voir répartition des tâches ci-dessous.
participer à la préparation, la surveillance et la correction du partiel, de l’examen ou de l’examen de deuxième session.
assister à au moins un des amphi
Sauf exception, les séances de TD et TP ont lieu la même journée, les deux étant typiquement regroupées le matin (8h30-10h15, 10h30-12h30). Le sujet de TP est usuellement dans la continuité du sujet de TD ce qui donne de la souplesse. Par exemple, si la salle de TP est disponible, il est envisageable d’envoyer en TP les élèves ayant fini le TD en avance.
Équipe 2022-2023, répartition des groupes et tâches#
Absences#
Infrastructure pour le cours#
Rédaction des fiches de TD et TP#
Conventions de codage#
Organisation des dépôts Info111 et Private#
Info111: matériel pédagogique public: cours, td, tp; informations pour les étudiants
Private matériel pédagogique et autres documents privé (sujets de projet, d’examen, …), forum de discussion
Semaine*: les cours et sujets de TD et TP de chaque semaine
Ces fiches sont conçues pour être à tiroir pour permettre à chaque étudiant de trouver à manger selon son niveau. Le principe est donc de focaliser chaque séance sur la fiche du jour. Bien sûr on peut répondre aux questions sur les fiches précédentes, mais on ne cherche pas à les finir.
Les différentes versions produites à partir des sources (sans solution, avec solutions, avec commentaires pour les enseignants) sont disponibles sur la page web:
/Projet-*/: les sujets de projet /Exercices: une base d’exercices pour les contrôles et examens /2022-2023/ExamenMiSemestre, /2022-2023/Examen: les sujets de partiel, examen, … Pedagogie/: Des notes sur les discussions pédagogiques
2013-2014/, Archives/, …: Archives des années précédentes ou documents pédagogiques d’autres formations
_build: répertoire où sont fabriqués les fichiers à mettre sur la page web.
Notes de projet et de TD/TP#
La saisie des notes de projet et de TD/TP se fait sur e-campus. Vous pouvez partir du modele fourni. Les adresses mail sont fabriquées automatiquement à partir du nom et prénom; comme elles servent de clé d’identification, il faudra ajuster manuellement quelques unes d’entre elles.
Il ne restera plus à exporter en CSV les deux pages correspondant aux
deux projets, supprimer les premières
lignes définissant le barème, puis importer le tout dans e-campus:
Espace de cours -> Tableau de bord -> Carnet de Notes -> Import -> Import CSV
,
en alignant sur l’email et les éléments de note appropriés (projet, TDTP)
Alternativement, vous pouvez saisir les notes à la main à partir de
Affichage -> Affichage simplifié -> Sélectionner un élément d'évaluation
.
Note: vous pouvez obtenir la liste des étudiants de votre groupe à
partir de la liste des participants de l’espace du cours
MPI, en
rajoutant les filtres groupe de TD XXX et Rôle étudiant
. Il y aura
des photos pour quelques uns d’entre eux. Vous pouvez ensuite exporter
cette liste en une fiche vierge avec noms, prénom, e-mail des
étudiants avec Choisir -> Télécharger
tout en bas de page.
La note de TD/TP est à votre libre appréciation. Vous pouvez tenir compte de la présence, de la participation, d’éventuels exercices rendus. En gros:
0: jamais venu
5: venu épisodiquement
10: présent régulier mou
15: présent et actif
20: au taquet
Pour ma part (Nicolas), je profites des soutenances (où j’ai les étudiants et leurs noms simultanément sous les yeux) pour mettre un commentaire sur l’engagement de chacun d’entre eux en TD/TP, que je traduis ensuite en note de TD/TP en tenant compte des autres éléments (présence, dépôts réguliers, …).
Vous pouvez aussi accéder au rendu TP de vos étudiants sur GitLab. Soit directement en vous rendant sur la page GitLab d’un devoir pour un groupe donné. Voilà par exemple l’adresse du devoir Semaine1 pour le groupe MI1 : https://gitlab.dsi.universite-paris-saclay.fr/Info111/2022-2023/MI1/Semaine1
En cliquant sur « fork » en haut à droite, on peut voir tous les dépôts étudiants correspondants à ce devoir. Par ailleurs, chaque étudiant a une page gitlab où vous pouvez voir ses projets auxquels vous avez accès. Le lien est sous la forme : https://gitlab.dsi.universite-paris-saclay.fr/viviane.pons
(remplacez par l’identifiant prenom.nom de votre étudiant dans l’URL). Cela permet d’avoir une vue d’ensemble des dépôts de l’étudiant. Si vous cliquez sur le dépot d’une semaine donnée, vous verrez s’afficher le score de correction automatique. En cliquant sur le score, vous pourrez explorer les carnets des étudiants, après exécution et correction automatique.
Pour pouvoir exécuter les devoirs de vos étudiants, vous pouvez récupérer l’ensemble des dépots d’une semaine donnée pour un groupe donné avec la commande :
$ info-111 collect Semaine1 MI1
(soit depuis votre machine si vous avez installé l’environnement de travail, soit depuis le serveur JupyterHub).
Pour avoir une vue d’ensemble des scores des étudiants sur tous les TPs, vous pouvez suivre les instructions suivantes :
Connectez-vous à JupyterHub via la [ComputerLab/index](case départ).
Ouvrez un carnet Python
Exécutez les commandes suivantes, après avoir ajusté le nom de votre groupe :
student_group = "MI3"
import os
os.environ['LANG'] = 'fr_FR.UTF-8'
from course import course
import pandas as pd
course.forge.login()
dfs = {
a: course.collect_scores(a, student_group=student_group)
for a in course.assignments
}
df = pd.concat(dfs.values())
summary = df.groupby(["student", "assignment"])[["auto_score", "max_auto_score"]].sum()
def score(row):
auto_score = row["auto_score"]
max_auto_score = row["max_auto_score"]
if pd.isna(max_auto_score) or pd.isna(auto_score) or max_auto_score == 0:
return -1
else:
return int(auto_score / max_auto_score*100)
scores = summary.apply(score, axis=1)#.convert_dtypes()
scores.name = "score"
scores = scores.reset_index()
scores = scores.pivot(index="student", columns = "assignment", values="score")
scores = scores[course.assignments]
from matplotlib.colors import LinearSegmentedColormap # type: ignore
score_cmap = LinearSegmentedColormap.from_list("score_cmap", ["red", "orange", "green"])
scores.style.format(precision=0).background_gradient(cmap=score_cmap, vmin=0, vmax=100)
Attention: la correction automatique n’est pas encore 100% robuste, donc le tout est à prendre avec un grain de sel. Un score de -1 indique que le devoir a été déposé, mais qu’il n’y a pas eu de correction automatique. Soit parce que celle-ci a échoué, soit parce qu’il n’y a pas de correction automatique cette semaine là.
Utilitaires#
Pour tout compiler (requiert un certain nombre de logiciels: jupyter-book, …):
make web
Pour compiler un sujet de TD ou de projet (en principe, il devrait suffire d’une bonne installation de latex):
make Devoirs/Semaine1/TD.pdf
make Solutions/Semaine1/TD.pdf
make Enseignants/Semaine1/TD.pdf
Pour mettre à jour la page web (pour l’instant seul Nicolas a les permissions pour le faire):
make install