mon-module.py
Ceci est un exemple illustrant ce qu’on peut écrire dans les fichiers python décrivant les ECUEs.
1#!/usr/bin/env python3
2
3# coding: utf-8
4
5import cursus
6
7# !!! Seulement si on utilise des variables globales à plusieurs modules.
8from csmetzvars import lv
9
10# Ici, dans Variables/csmetz/, il y a un fichier lv.py qui définit des variables comme title1 = "...",
11# On peut l'utiliser dans ce script comme lv.title1
12# On peut mettre d'autres toto.py dans Variables/csmetz/, leur contenu sera disponible en faisant
13# from csmetzvars import toto
14# pour disposer de toto.mavariable
15
16cursus.tracks.declare('info', 'phys', 'SDI') # Ne mettre que les tracks concernées
17
18with cursus.script.Module() as module:
19
20 # Nota: on peut varier selon les tracks, avec les expression with cursus.tracks...
21
22
23 ####
24 #### Déclaration de ce qui est à l'emploi du temps
25 ####
26
27 # Déclaration complète:
28 activite = module.cm('titre en francais',
29 ['hfb', 'jf'], # La liste des profs, mettre [] ou None si on ne les connaît pas... ou un seul élément.
30 duration = 1.5, # duree en heure du créneau mis à l'emploi du temps des élèves.
31 nb_teachers = 3, # Nombre d'enseignants. S'il est supérieur au nombre déclaré, cela déclare des enseignants manquants.
32 hour_cost_by_teacher = 1.5, # Le coût d'une heure présentielle en HETD.
33 fixed_cost_by_teacher = 0., # Un coût (en HETD) forfaitaire.
34 face2face = 1) # La durée de présence du prof sur le créneau (None => face2face = duration)
35
36 # Déclaration abbrégée: Certains arguments sont définis par défaut.
37 cm = module.cm('titre en francais')
38 td = module.td('titre en francais', 'jf')
39 tp = module.tp('titre en francais', nb_teachers=2)
40 projet = module.projet('titre en francais', None, duration = 10, nb_teachers=4, face2face = 2, fixed_cost_by_teacher = 1)
41 exam = module.exam('Ecrit', None, duration = 3)
42
43 # On peut respécifier des attributs après création.
44 cm = module.cm('titre en francais')
45 cm.title = 'title in english'
46 cm.teachers = (['jf', 'hfb'], 3) # (teachers, nb_teachers)
47
48 # Declaration pour certaines tracks (voir cursus pour plus de possibilités)
49
50 with cursus.tracks.OneForEach(): # On ajoute un élément par track
51 td = module.td('Boucles', None, duration=2)
52 td['info'].teachers = ('hfb', 1) # spécification pour la track informatique
53 td['phys'].teachers = ('dr', 1) # spécification pour la track physique
54
55 with cursus.tracks.OnlyFor('info'): # Seule la track info aura un projet.
56 proj = module.projet('Matrices', None, nb_teachers=4, duration=10, face2face=2, fixed_cost_by_teacher = 1)
57
58 # On peut grouper et déclarer des séquences
59
60 cm1 = module.cm('titre en francais')
61 cm2 = module.cm('titre en francais')
62 module.group(cm1, cm2)
63
64 with cursus.tracks.OneForEach(): # On ajoute un élément par track
65 td = module.td('Boucles', None, duration=2)
66
67 module.seq(cm1, td)
68
69 # OneForEach et OnlyFor peuvent prendre des arguments.
70
71 with cursus.tracks.OneForEach(['info', 'SDI'], 'phys'):
72 td = module.td('Boucles', None, duration=2) # 2 instances, une pour 'info' et 'SDI', l'autre pour 'phys'
73 td['info'].teachers = ('hfb', 1) # spécification pour la track informatique/SDI (td['SDI'] aurait marché aussi)
74 td['phys'].teachers = ('dr', 1) # spécification pour la track physique
75
76 with cursus.tracks.OnlyFor('info', 'SDI'): # Seule les tracks info et SDI aura un projet.
77 proj = module.projet('Matrices', None, nb_teachers=4, duration=10, face2face=2, fixed_cost_by_teacher = 1)
78 # une seule instance, commune aux deux tracks.
79
80
81 ####
82 #### Descriptions du module
83 ####
84
85 module.description.titre = 'titre en francais'
86 module.description.title = 'title in english'
87
88 module.description.manager = 'hfb'
89 module.description.links = {
90 "site du cours": "https://monsite.centralesupelec.fr",
91 "site des TPs": "https://monsite.centralesupelec.fr"
92 }
93
94
95
96 # On ne se sert pas vraiment des ECTS pour les modules.
97 module.description.ECTS = 2
98 with cursus.tracks.OnlyFor('info'):
99 module.description.ECTS = 3
100
101 module.description.pseudo = 'titre court'
102 module.description.code = 'SPM-INF-003'
103
104 module.description.ODDfr = 'objectif de développement durable'
105 module.description.ODDen = 'sustainable developpement goals'
106
107 # Pour les champs de catalogue, on a pour le champ x:
108 # module.description.x # La version par défaut si l'un des deux suivants manque.
109 # module.description.x_md # La version markdown (on utilisera souvent la triple quote...)
110 # module.description.x_latex # La version latex.
111 #
112 # !!! Attention à l'usage de la triple quote en markdown, les tabulations en début de ligne
113 # !!! peuvent être interprétées.
114
115 # Geode Acquis d’apprentissage visés dans le cours
116
117 module.description.acquis = "Les étudiants apprendront: confiance en soi, fierté."
118 module.description.acquis_md = """Les étudiants apprendront:
119
120- confience en soi,
121- fierté.
122"""
123
124 module.description.acquis_latex = """Les étudiants apprendront:
125 \\begin{itemize}
126 \\item confiance en soi,
127 \\item fierté.
128 \\end{itemize}
129 """
130
131 module.description.outcome = 'in english...'
132 module.description.outcome_md = '...'
133 module.description.outcome_latex = '...'
134
135 # Geode Présentation générale
136
137 module.description.quoi = "Dans ce module, nous traîterons de..."
138 module.description.quoi_md = "Dans ce **module**, nous traîterons de..."
139 module.description.quoi_latex = "Dans ce {\\bf module}, nous traîterons de..."
140
141 module.description.what = "This module is about..."
142 module.description.what_md = "This **module** is about..."
143 module.description.what_latex = "This {\\bf module} is about..."
144
145 # Geode Méthode pédagogique:
146
147 module.description.comment = "..."
148 module.description.comment_md = "..."
149 module.description.comment_latex = "..."
150 module.description.how = "..."
151 module.description.how_md = "..."
152 module.description.how_latex = "..."
153
154 # Geode Moyens
155
156 module.description.moyens = "..."
157 module.description.moyens_md = "..."
158 module.description.moyens_latex = "..."
159 module.description.means = "..."
160 module.description.means_md = "..."
161 module.description.means_latex = "..."
162
163 # Geode Prérequis
164
165 module.description.prerequis = "..."
166 module.description.prerequis_md = "..."
167 module.description.prerequis_latex = "..."
168 module.description.prerequisites = "..."
169 module.description.prerequisites_md = "..."
170 module.description.prerequisites_latex = "..."
171
172 # Geode Contenu :
173
174 module.description.sujets = "..."
175 module.description.sujets_md = "..."
176 module.description.sujets_latex = "..."
177 module.description.topics = "..."
178 module.description.topics_md = "..."
179 module.description.topics_latex = "..."
180
181 # Références
182
183 module.description.bibliography = ['reference 1', 'reference 2']
184 module.description.bibliography_md = ['reference 1', 'reference 2'] # sera bibliography par défaut
185 module.description.bibliography_latex = ['reference 1', 'reference 2'] # sera bibliography
186
187
188 ####
189 #### Evaluation
190 ####
191
192 module.description.modalites = "..."
193 module.description.modalites_md = "..."
194 module.description.modalites_latex = "..."
195 module.description.methods = "..."
196 module.description.methods_md = "..."
197 module.description.methods_latex = "..."
198
199 with cursus.tracks.OnlyFor('info'):
200 module.evaluation.modalites = 'Sur la base du rapport de projet, rattrapable.'
201 module.evaluation.competences = ['ISIN01', 'ISIN04']
202
203 with cursus.tracks.OnlyFor('phys'):
204 module.evaluation.modalites = 'Sur la base de la présence en TD, non rattrapable.'
205 module.evaluation.methods = 'based on attendence, cannot be retaken.'
206 module.evaluation.competences = []
207
208 with cursus.tracks.OnlyFor('SDI'):
209 module.evaluation.modalites = 'Examen écrit de 3h, rattrapable.'
210 module.evaluation.methods = 'Written test (3h), can be retaken.'
211 module.evaluation.competences = ['C1', 'C7']
212
213 ###
214 ### Références croisées entre .py
215 ###
216
217 # C'est comme \label et \ref en latex.
218
219 module.label(cm1, 'toto') # l'objet cm1 est taggué par le label toto.
220 ref = module.ref('titi') # dans un autre .py, quelqu'un a labellisé quelque chose par 'titi'...
221 module.seq(ref, cm2) # ... et on peut déclarer que cm2 doit arriver après.