406 lines
16 KiB
Markdown
406 lines
16 KiB
Markdown
# Implémentation des parcours du BUT dans ScoDoc
|
|
Cette page est *destinée aux développeurs* et à tous ceux qui souhaitent
|
|
comprendre le fonctionnement du logiciel: ce sont des notes un peu désordonnées
|
|
prises au moment de la conception.
|
|
|
|
ScoDoc est livré avec les référentiels de compétences de tous les parcours de toutes
|
|
les spécialités de BUT. En effet, ces référentiels sont nationaux, publiés par
|
|
le ministère (voir
|
|
[https://cache.media.enseignementsup-recherche.gouv.fr/file/SPE4-MESRI-17-6-2021/32/3/_Annexe_1_PN_BUT_version_post_CNESER_20210511_18-05-2021-1_1411323.pdf](https://cache.media.enseignementsup-recherche.gouv.fr/file/SPE4-MESRI-17-6-2021/32/3/_Annexe_1_PN_BUT_version_post_CNESER_20210511_18-05-2021-1_1411323.pdf))
|
|
et ne sont pas susceptibles d'adaptations locales.
|
|
|
|
Nous nous sommes basés sur les versions exportées du logiciel Orébut.
|
|
|
|
## Rappel général sur le BUT et ScoDoc
|
|
Rappel simplifié, se concentrant sur les points utiles pour l'évaluation
|
|
et les liens avec le cursus de formation:
|
|
|
|
- Chaque parcours de BUT est défini par un ensemble de compétences.
|
|
- Une compétence est décomposée en deux ou trois *niveaux*, chacun constitué de
|
|
deux UE consécutives (sur semestres pair et impair de la même année
|
|
scolaire).
|
|
- Les UE sont des UE "LMD" habituelles; associées à des crédits ECTS,
|
|
capitalisables. Chaque UE est associée à une note (moyenne d'UE) et une
|
|
décision de jury (validée, ajournée, ...).
|
|
|
|
Dans le BUT, le référentiel de formation n'est pas fixé nationalement. Une part
|
|
est publiée (2/3) par le ministère, le reste est défini localement par les
|
|
universités (*adaptation locale*).
|
|
|
|
Les modules: on appelle ici "module" tout dispositif pédagogique évalué, dans le
|
|
BUT ce sont les *ressources* et les *SAÉ*.
|
|
|
|
Dans ScoDoc, le programme pédagogique définit les UE et modules pour l'ensemble
|
|
des semestres d'un ou plusieurs parcours. De cette façon, on pourra utiliser les
|
|
mêmes éléments dans plusieurs parcours, et grouper les étudiants de plusieurs
|
|
parcours dans le même semestre si on le souhaite.
|
|
|
|
## Modélisation ScoDoc
|
|
|
|
On a d'une part le *programme de formation*, et de l'autre le *référentiel de
|
|
compétences*.
|
|
|
|
### Programme de formation
|
|
Le programme de formation est constitué des classes suivantes (en BUT et dans
|
|
tous les types de formation. La notion de "matière" n'est pas utilisée en BUT).
|
|
|
|
- `Formation` (ex: "BUT R&T")
|
|
- `UniteEns` (UE, ex: "Administrer les réseaux")
|
|
- `Modules` (ressources, SAÉs) *<-> `ApcAppCritique`*, *<-> `ApcAnneeParcours`*
|
|
|
|
On voit que les modules ont toujours une UE de rattachement. Cependant, en BUT,
|
|
un module peut intervenir dans le calcul des notes de plusieurs UE, via une
|
|
matrice de coefficients.
|
|
|
|
On va aussi rattacher les Modules à un ou plusieurs ApcParcours, de façon à
|
|
pouvoir vérifier que les parcours couvrent les AC, et à faciliter les
|
|
inscriptions des étudiants aux modules (par ex. page présentant les modules
|
|
auxquels inscrire un groupe).
|
|
|
|
#### Cas des modules présents dans plusieurs parcours
|
|
|
|
Si un module est utilisé dans plusieurs parcours de la même formation BUT, cela
|
|
ne pose aucun problème, _sauf_ si ce module doit avoir des coefficients (vers
|
|
les UEs) différents selon le parcours dans lequel il intervient. Dans ce cas,
|
|
*il sera conseillé de créer plusieurs versions du module*, que l'on associera
|
|
aux divers parcours.
|
|
|
|
### Référentiel de compétences
|
|
Le référentiel de compétences est structuré par les classes suivantes:
|
|
|
|
- `ApcReferentielCompetences`
|
|
- `ApcCompetence`
|
|
- `ApcSituationPro`
|
|
- `ApcComposanteEssentielle`
|
|
- `ApcNiveau` (année (BUT1, BUT2, ...), ordre (1,2) ou (1,2,3)) *<-> `UE`*
|
|
- `ApcAppCritique` *<-> `Module`*
|
|
- `ApcParcours`
|
|
- `ApcAnneeParcours` (ordre=1,2,3) *<-> `Module`*
|
|
- *`ApcCompetence`* <- `ApcParcoursNiveauCompetence` (niveau 1, 2, 3) -> *`ApcAnneeParcours`*
|
|
|
|
Notons:
|
|
|
|
- Le lien entre UE et Niveau de compétence (`ApcNiveau`).
|
|
|
|
- Le lien à entre Compétence et Année de Parcours à travers la table
|
|
(*many-to-many*) `ApcParcoursNiveauCompetence` qui indique le niveau ce
|
|
compétence concerné.
|
|
|
|
- Le lien entre les apprentissages critiques (`ApcAppCritique`) et les
|
|
modules, qui permet d'établir les critères d'évaluation de chaque module.
|
|
|
|
### FormSemestres
|
|
La formation est mise en œuvre dans des `FormSemestre` (date début, fin,
|
|
enseignants responsables, ...) constitués de `ModuleImpl` (module avec enseignant,
|
|
évaluations, ...).
|
|
|
|
- `FormSemestre`
|
|
- `ModuleImpl`
|
|
- `Evaluation`
|
|
|
|
### Inscriptions des étudiants
|
|
Les étudiants sont inscrits:
|
|
|
|
- dans un `FormSemestre` (`FormSemestreInscription`, avec état (`I`, `D`,
|
|
`DEF`) et étape Apogée)
|
|
- dans un ModuleImpl (`ModuleImplInscription`)
|
|
- et, pour le BUT, dans un `ApcParcours`: l'inscription au formsemestre
|
|
`FormSemestreInscription` comporte:
|
|
|
|
- l'état (`I`, `D`, `DEF`);
|
|
- l'étape Apogée;
|
|
- un `ApcParcours`.
|
|
|
|
Un formsemestre est associé à un ensemble de parcours. L'étudiant peut être
|
|
inscrit à l'un d'entre eux. Certaines formations commencent par une année de
|
|
tronc commun, durant laquelle l'étudiant n'a pas encore choisi son parcours. On
|
|
considérera que si l'étudiant n'est pas inscrit à un parcours, il est
|
|
implicitement inscrit à tous les parcours du semestre.
|
|
|
|
### Associations (nouvelles pour le BUT):
|
|
|
|
Pour la gestion des parcours BUT, il faut introduire les associations suivantes,
|
|
qui n'existent pas dans ScoDoc 9.2:
|
|
|
|
- UE <-> `ApcNiveau` : choix sur la page `ue_edit`
|
|
- `Module` ||--o{ ensemble de `ApcParcours`
|
|
- `Module` ||--o{ `ApcAppCritique` : choix sur la page `module_edit`
|
|
- `FormSemestre` ||--o{ `ApcParcours` : choix sur la page
|
|
`formsemestre_editwithmodules`
|
|
- `FormSemestreInscription` ||--|| `ApcParcours` : inscription au parcours, page à créer.
|
|
|
|
### Cas d'usage
|
|
|
|
#### Niveau de compétence d'un formsemestre
|
|
|
|
Le formsemestre est lié à un ensemble d'`ApcParcours`.
|
|
|
|
La liste des niveaux (`ApcNiveau`) associés aux UEs:
|
|
```
|
|
[ ue.niveau_competence
|
|
for ue in formsemestre.query_ues() if ue.niveau_competence ]
|
|
```
|
|
|
|
#### Inscription d'un étudiant aux ModuleImpls
|
|
L'inscription reste libre (chaque individu peut être inscrit à un sous-ensemble
|
|
quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir:
|
|
|
|
- Créer des groupes de parcours (via `edit_partition_form`)
|
|
|
|
- Inscrire les étudiants d'un groupe à tous les modimpls du parcours:
|
|
Les modimpls d'un parcours sont donnés par la méthode `modimpls_parcours` de
|
|
`FormSemestre`.
|
|
|
|
#### Comment ScoDoc détermine-t-il les modules d'un parcours ?
|
|
Un parcours étant associé à des compétences, et les niveaux compétences à des
|
|
UE, on peut déterminer, pour un semestre de rang donné, l'ensemble des UE
|
|
associées à un parcours.
|
|
|
|
Par ailleurs, chaque niveau de compétence est associé à un ensemble d'AC
|
|
(`ApcAppCritique`), et chaque module est aussi associé à son ensemble d'AC.
|
|
|
|
Pour chaque parcours d'un `FormSemestre`, on déterminera l'ensemble des `ModuleImpl`
|
|
de ce semestre ayant des AC communs avec ceux des niveaux de compétences
|
|
associés aux UE du semestre (sic). Notons que les niveaux de compétences sont
|
|
annuels, mais que les `ModuleImpl` sont semestriels.
|
|
|
|
#### Vérifier que les ModuleImpls d'un parcours couvrent l'ensemble de ses ACs
|
|
|
|
Vérification utile en fin de formation.
|
|
|
|
##### En fin de formation, pour un étudiant
|
|
|
|
Soit un étudiant inscrit à un parcours. En fin de formation (S6), on peut
|
|
facilement vérifier que les AC ont été couverts:
|
|
|
|
- Lister les `ModuleImpl` auxquels l'étudiant a été inscrit dans ses semestres
|
|
(S1 à S6);
|
|
- En déduire l'ensemble des AC évalués pour cet étudiant (indépendamment de sa
|
|
réussite);
|
|
- Comparer aux AC du parcours tels que décrits dans le référentiel de compétence.
|
|
|
|
##### Au moment de la définition d'une formation
|
|
|
|
Le parcours du ref. de compétence indique un ensemble d'AC pour chaque niveau
|
|
(année). On pourra vérifier que les `Module`s de chaque année suffisent à
|
|
couvrir le parcours. Mais si les `Module`s ne sont pas associés à un parcours,
|
|
on ne peut pas aller plus loin.
|
|
|
|
#### Lister les UEs d'un parcours d'une formation
|
|
```
|
|
# Soit un parcours:
|
|
parcour = formation.referentiel_competence.parcours.filter_by(code="ROM").first()
|
|
# Listes UEs de ce parcours:
|
|
formation.query_ues_parcour(parcour)
|
|
# Liste des UEs du semestre 3:
|
|
formation.query_ues_parcour(parcour).filter_by(semestre_idx=2)
|
|
```
|
|
|
|
#### Lister les regroupements d'UE d'un étudiant (RCUE)
|
|
|
|
Pour une année donnée: l'étudiant est inscrit dans ScoDoc soit dans le semestre
|
|
impair, soit pair, soit les deux (il est rare mais pas impossible d'avoir une
|
|
inscription seulement en semestre pair, par exemple suite à un transfert ou un
|
|
arrêt temporaire du cursus).
|
|
|
|
1. Déterminer l'*autre* semestre: semestre précédent ou suivant de la même
|
|
année, formation compatible (même référentiel de compétence) dans lequel
|
|
l'étudiant est inscrit.
|
|
|
|
2. Construire les couples d'UE (regroupements cohérents): apparier les UE qui
|
|
ont le même `ApcParcoursNiveauCompetence`.
|
|
|
|
Un `RegroupementCoherentUE` est simplement un couple d'UE du même niveau dans le
|
|
cursus (BUT1, BUT2 ou BUT3).
|
|
|
|
#### Déterminer si un étudiant peut passer dans l'année suivante
|
|
|
|
Note: on peut bien sûr toujours forcer le passage, pour traiter les cas
|
|
particuliers (décision de jury manuelle).
|
|
|
|
**Rappel:** le passage est de droit si
|
|
|
|
- [x] plus de la moitié des niveaux de compétences de l'année sont validés
|
|
- [x] aucun regroupement d'UE (niveau de compétence) de l'année < 8 /20
|
|
- [x] pour le passage en S5, avoir validé toutes les UE du BUT 1 (S1 et S2).
|
|
|
|
Il faut donc:
|
|
|
|
1. Construire les regroupements d'UE et calculer la moyenne des moyennes d'UE
|
|
(a priori de même poids, cela n'est pas spécifié dans les textes).
|
|
|
|
2. Vérifier les conditions ci-dessus.
|
|
|
|
3. Pour le passage en S5, construire l'ensemble des semestres de formations
|
|
relevant du même référentiel de compétences dans lesquels a été inscrit
|
|
l'étudiant, et vérifier que les UE de S1 et S2 sont validées.
|
|
|
|
|
|
#### Cas particulier: formations dont le nombre d'ECTS varie selon le parcours
|
|
|
|
Ce cas a été soulevé à propos du BUT MMI, qui préconiserait par exemple, au S4,
|
|
une compétence développer avec 10 ECTS dans le parcours "web", et 5 ECTS dans le
|
|
parcours "crea".
|
|
|
|
Si on veut pouvoir utiliser la même formation, et éventuellement mélanger les
|
|
étudiants des différents parcours dans le même `FormSemestre` (ce qui
|
|
simplifierait la gestion des modules communs), il faut modifier la modélisation:
|
|
Les ECTS sont actuellement des attributs de UEs.
|
|
Il faudrait avoir une association `UniteEns` }o..o{ `ApcParcours` qui contienne
|
|
les valeurs des ECTS.
|
|
|
|
## Enregistrement des validations de compétences
|
|
|
|
### Rappel: validations en formations classiques
|
|
Pour toutes les formations, ScoDoc enregistre les validations de semestres et
|
|
d'UE, via la classe `ScolarFormSemestreValidation`, dont les instances stockent:
|
|
|
|
- `etudid, formsemestre_id, code, event_date`
|
|
|
|
et pour les validations de semestres:
|
|
|
|
- `assidu, compense_formsemestre_id`
|
|
|
|
ou pour les validations d'UE
|
|
|
|
- `ue_id, is_external`
|
|
|
|
Les codes sont définis dans `sco_codes_parcours.py`, avec les valeurs: `ADC,
|
|
ADJ, ADM, AJ, ATB, ATJ, ATT, CMP, DEF, NAR, RAT` (voir [Gestion des Jurys
|
|
DUT](GestionJury.md)).
|
|
|
|
### Validation des niveaux de compétences
|
|
|
|
Pour le BUT, il faut enregistrer la validation des *niveaux de compétences*,
|
|
constitués de *regroupements cohérents d'UE* ("RCUE"), qui sont les UEs de la
|
|
même année de parcours associées à la même compétence.
|
|
|
|
On va stocker les validation des RCUE dans `ApcValidationRCUE`:
|
|
|
|
- `etudid`
|
|
- `formsemestre_id` (dernier déclenchant cette validation).
|
|
- `ue_1`, `ue_2` : les deux UE associées à ce niveau.
|
|
- `ApcParcours` : optionnel, le parcours dans lequel se trouve la compétence.
|
|
- `datetime` de la validation.
|
|
- `code` de validation: `ADM`, `CMP`, `AJ`.
|
|
|
|
Rappel: chaque UE est associé à un niveau de compétence
|
|
(`ue.niveau_competence`), qui doit ici être le même.
|
|
|
|
### Validation des années du BUT
|
|
Pour le BUT, ScoDoc enregistre les validations d'années `ApcValidationAnnee`
|
|
|
|
- `etudid`
|
|
- `ordre`: 1, 2, 3 pour BUT1, BUT2, BUT3.
|
|
- `formsemestre_id` (dernier déclenchant cette validation, None si extérieure)
|
|
- `annee_scolaire` (int, année de début, eg 2021 pour "2021-2022")
|
|
- `datetime` de la validation.
|
|
- `code` de validation: `PASD`, `PAS1NCI`, `RED`, `REO`, `DEM`, `EXC`, `ABAN`, `ABL`.
|
|
|
|
|
|
### Codes préconisés par l'AMUE pour le BUT
|
|
On associe lors du jury un code de décision:
|
|
|
|
- À chaque UE: `VAL`, `COMP`, `AJ`, `UESBL`.
|
|
- À chaque niveau de compétence (RCUE): `VAL`, `AJ`, `CODJ`.
|
|
- À chaque année:
|
|
|
|
- `PASD`: Passage en Année Supérieure de Droit (+ de 50% des UE VAL et RCUE Ajourné(s) >=8)
|
|
- `PAS1NCI`: Passage en Année Supérieure avec au moins 1 Niveau de Compétence Insuffisant (RCUE<8)
|
|
- `RED`: Redoublement de l'année
|
|
- `REO`: REOrientation - décision automatique (revient à une exclusion), plus de 4 semestres RED ou décision de Jury
|
|
- `DEM`: DEMission (lettre de l'étudiant).
|
|
- `EXC`: EXClusion, décision réservée à des décisions disciplinaires
|
|
- `ABAN`: ABANdon constaté (sans lettre de démission)
|
|
- `ABL`: Année BLanchie
|
|
- Au diplôme: `ADM`
|
|
|
|
|
|
#### Correspondance avec les codes de ScoDoc
|
|
|
|
ScoDoc utilise des codes [documentés ici](GestionJury.md).
|
|
|
|
- Pour les semestres: `ADM`, `ADC`, `ADJ`, `ATT`, `ATB`, `ATJ`, `AJ`, `NAR`. En
|
|
BUT, pas besoin de codes semestriels. On ajoutera un code `JSD` (*Jury Sans
|
|
Décision*) pour simplement indiquer que le jury s'est tenu. Ce code ne sera pas
|
|
exporté vers Apogée.
|
|
|
|
- Pour les UEs: **codes d'état d'UE**
|
|
|
|
ScoDoc | BUT AMUE |
|
|
----------|-----|-----
|
|
ADM | VAL | UE validée automatiquement |
|
|
CMP | COMP| UE validée par compensation|
|
|
AJ | AJ | UE ajournée (échec) |
|
|
- | UESBL | blanchissement (non dispo en ScoDoc 9) |
|
|
|
|
- Pour les RCUE:
|
|
|
|
ScoDoc | BUT AMUE |
|
|
----------|-----|-----
|
|
ADM | VAL | validée automatiquement |
|
|
CMP | CODJ| Niveau validée par "compensation" ???|
|
|
AJ | AJ | RCUE ajournée (échec) |
|
|
|
|
Rappel: les codes exportés vers Apogée sont configurables (table de transcodage dans la
|
|
config générale).
|
|
|
|
|
|
## Diagramme de classes
|
|
|
|
Juste pour rire, car ce diagramme est quasiment inexploitable (dessin réalisé
|
|
automatiquement en Mermaid).
|
|
|
|
``` mermaid
|
|
erDiagram
|
|
FormSemestre ||--|{ ModuleImpl : contient
|
|
ModuleImpl ||--o{ Evaluation : contient
|
|
Module ||--o{ ModuleImpl : ""
|
|
Formation ||--o{ UE : ""
|
|
UE ||--|{ Module : ""
|
|
|
|
Formation {
|
|
str titre
|
|
str acronym
|
|
str code
|
|
}
|
|
|
|
Etudiant {
|
|
str nom
|
|
}
|
|
|
|
FormSemestre {
|
|
int dept_id
|
|
str titre
|
|
date date_debut
|
|
date date_fin
|
|
}
|
|
|
|
Etudiant }|..|{ ModuleImpl : ModuleImplInscription
|
|
Etudiant }|..|{ FormSemestre : FormSemestreInscription
|
|
FormSemestreInscription ||..o{ ApcParcours : "optionnel"
|
|
|
|
Formation ||--o{ FormSemestre : ""
|
|
|
|
ApcReferentielCompetences ||--o{ ApcCompetence : ""
|
|
ApcCompetence ||--o{ ApcNiveau : ""
|
|
ApcCompetence ||--o{ ApcSituationPro : ""
|
|
ApcCompetence ||--o{ ApcComposanteEssentielle : ""
|
|
ApcNiveau }o..|| UE : "optionnel"
|
|
ApcNiveau ||--o{ ApcAppCritique : ""
|
|
ApcAppCritique }o..o{ Module : "optionnel"
|
|
|
|
ApcReferentielCompetences ||--o{ ApcParcours : ""
|
|
ApcParcours ||--o{ ApcAnneeParcours : ""
|
|
|
|
ApcAnneeParcours {
|
|
int ordre
|
|
}
|
|
|
|
ApcCompetence }o--o{ ApcAnneeParcours : "ApcParcoursNiveauCompetence (1,2,3)"
|
|
|
|
Module }o--o{ ApcParcours : "parcours_modules"
|
|
FormSemestre }o--o{ ApcParcours : "parcours_formsemestre"
|
|
UE }o..o{ ApcParcours : "pour les ECTS"
|
|
```
|