diff --git a/Makefile b/Makefile index 0d57178..7c67d57 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,13 @@ -all: - ./script.sh +FORMATION=besançon2_CMI besançon2 besançon bordeaux dijon_EI dijon_MI grenoble lyon nancy rennes +DATA=$(addsuffix .csv, $(addprefix data/, ${FORMATION})) +CAT=$(addsuffix .cat, ${DATA}) + +all: www/programme.html +%.cat: % + ./parse.sh $< +www/programme.html: www/programme.template ${CAT} + ./build.sh deploy: scp -r www/* lccanon@lifc-home.univ-fcomte.fr:public_html/ clean: - -rm data/*.cat data/*.theme data/theme.txt www/programme.html 2> /dev/null + -rm ${CAT} data/*.theme data/csv.cat data/csv.theme data/theme.txt www/programme.html 2> /dev/null diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..18b8825 --- /dev/null +++ b/build.sh @@ -0,0 +1,14 @@ +#! /bin/bash + +# Generate web page with graphical results + +cp www/programme.template www/programme.html + +IFS=$'\n' +for FILE in $(ls -1 data) +do + if [ $(grep "\[$FILE\]" www/programme.html | tr -d '\n') ] + then + sed -i "s/\[$FILE\]/[$(head -c -1 -q data/$FILE)]/g" www/programme.html + fi +done diff --git a/parse.sh b/parse.sh new file mode 100755 index 0000000..60da7b0 --- /dev/null +++ b/parse.sh @@ -0,0 +1,55 @@ +#! /bin/bash + +cut -d ";" -f 4 data/*.csv | sort | uniq > data/theme.txt + +THEMES=$(cat data/theme.txt | tr "\n" ",") +CATEGORIES=$(grep -o -E "^[^(]*" categorie.txt | sed "s/ $//" | tr "\n" ",") +THEMES=$(echo $THEMES | sed "s/,/\",\"/g" | sed "s/^/\"/" | sed "s/,\"$//") +CATEGORIES=$(echo $CATEGORIES | sed "s/,/\",\"/g" | sed "s/^/\"/" | sed "s/,\"$//") + +echo $THEMES > data/csv.theme +echo $CATEGORIES > data/csv.cat + +FORMATION=$1 +echo -n $FORMATION + +echo -n -e " (" +echo -n $(cut -d ";" -f 3 $FORMATION | paste -sd+ | bc) +echo " ECTS)" + +> $FORMATION.theme +> $FORMATION.cat + +echo -e "\tPar thème" + +IFS='' +cat data/theme.txt | +while read THEME +do + echo -n -e "\t\t$THEME " + ECTS=$(grep $THEME$ $FORMATION | cut -d ";" -f 3) + if [[ -z "$ECTS" ]] + then + ECTS=0 + fi + ECTS=$(echo $ECTS | tr ' ' '\n' | paste -sd+ | bc) + THEMES_ECTS=$THEMES_ECTS,$ECTS + echo -n "$ECTS," >> $FORMATION.theme + echo $ECTS +done +sed -i "s/,$/\n/" $FORMATION.theme + +echo -e "\tPar catégorie" + +IFS='' +cat categorie.txt | +while read CAT +do + CATEGORIE=$(echo $CAT | grep -o -E "^[^(]*") + PATT=$(echo $CAT | grep -o "(.*)") + echo -n -e "\t\t$CATEGORIE" + ECTS=$(grep -E $PATT$ $FORMATION | cut -d ";" -f 3 | paste -sd+ | bc) + echo -n "$ECTS," >> $FORMATION.cat + echo $ECTS +done +sed -i "s/,$/\n/" $FORMATION.cat diff --git a/script.sh b/script.sh deleted file mode 100755 index 7788a53..0000000 --- a/script.sh +++ /dev/null @@ -1,71 +0,0 @@ -#! /bin/bash - -cut -d ";" -f 4 data/*.csv | sort | uniq > data/theme.txt - -THEMES=$(cat data/theme.txt | tr "\n" ",") -CATEGORIES=$(grep -o -E "^[^(]*" categorie.txt | sed "s/ $//" | tr "\n" ",") -THEMES=$(echo $THEMES | sed "s/,/\",\"/g" | sed "s/^/\"/" | sed "s/,\"$//") -CATEGORIES=$(echo $CATEGORIES | sed "s/,/\",\"/g" | sed "s/^/\"/" | sed "s/,\"$//") - -echo $THEMES > data/csv.theme -echo $CATEGORIES > data/csv.cat - -for FORMATION in $(ls data/*.csv) -do - echo -n $FORMATION - - echo -n -e " (" - echo -n $(cut -d ";" -f 3 $FORMATION | paste -sd+ | bc) - echo " ECTS)" - - > $FORMATION.theme - > $FORMATION.cat - - echo -e "\tPar thème" - - IFS='' - cat data/theme.txt | - while read THEME - do - echo -n -e "\t\t$THEME " - ECTS=$(grep $THEME$ $FORMATION | cut -d ";" -f 3) - if [[ -z "$ECTS" ]] - then - ECTS=0 - fi - ECTS=$(echo $ECTS | tr ' ' '\n' | paste -sd+ | bc) - THEMES_ECTS=$THEMES_ECTS,$ECTS - echo -n "$ECTS," >> $FORMATION.theme - echo $ECTS - done - sed -i "s/,$/\n/" $FORMATION.theme - - echo -e "\tPar catégorie" - - IFS='' - cat categorie.txt | - while read CAT - do - CATEGORIE=$(echo $CAT | grep -o -E "^[^(]*") - PATT=$(echo $CAT | grep -o "(.*)") - echo -n -e "\t\t$CATEGORIE" - ECTS=$(grep -E $PATT$ $FORMATION | cut -d ";" -f 3 | paste -sd+ | bc) - echo -n "$ECTS," >> $FORMATION.cat - echo $ECTS - done - sed -i "s/,$/\n/" $FORMATION.cat -done - - -# Generate web page with graphical results - -cp www/programme.template www/programme.html - -IFS=$'\n' -for FILE in $(ls -1 data) -do - if [ $(grep "\[$FILE\]" www/programme.html | tr -d '\n') ] - then - sed -i "s/\[$FILE\]/[$(head -c -1 -q data/$FILE)]/g" www/programme.html - fi -done diff --git a/www/programme.template b/www/programme.template index 985564f..15aa08e 100644 --- a/www/programme.template +++ b/www/programme.template @@ -8,10 +8,11 @@
-L'analyse suivante compare le programme de plusieurs licences d'informatique. Il s'agit d'une approche quantitative qui mérite d'être améliorée (n'hésitez pas à me transmettre vos suggestions). L'objectif est d'identifier les lacunes que pourraient avoir nos étudiants qui intègrent d'autres masters qui correspondent mieux à leur projet, mais aussi les lacunes des étudiants extérieurs intégrant le M1.
-Pour chaque formation, un thème a été associé à chaque enseignement ("compilation" par exemple), puis ces thèmes ont été regroupés dans des catégories plus larges de la façon suivante (chaque ligne correspond à une catégorie, les thèmes sont entre parenthèse) :
Cette classification s'inspire de celle de Dowek (Algorithmique, Machine, Langage, Information).
Le nombre total d'ECTS attribué à chaque thème et à chaque catégorie a ensuite été calculé pour chaque formation.
-Cette approche est limitée par la présence des options, le manque d'information (nombre d'ECTS ou contenu exact), l'orientation pluri-disciplinaire de certaines licences (mathématiques, électronique, ...), une catégorisation imparfaite (pour sécurité et graphique notamment) et une comparaison uniquement quantitative.
-Les formations considérées (dans le même ordre que sur les figures) : Besançon (181), Bordeaux 1 (180), Dijon EI (180), Dijon MI (180), Grenoble 1 (180), Lyon 1 (186), Nancy 1 (180) et Rennes 1 (177). Le nombre en parenthèse correspond au nombre d'ECTS total de la formation.
@@ -42,7 +43,7 @@L'hétérogénéité précédente est lissé avec les catégories plus larges. Les constats sont les mêmes : moins d'algorithmique et de mathématiques et plus d'information et de science que toutes les autres licences.
-Pour faciliter la lecture, voici un focus sur les formations les plus comparables (c'est-à-dire avec le moins de mathématiques) : Bordeaux 1, Nancy 1 et Rennes 1. La nouvelle licence non-CMI est rajoutée à droite (la licence actuelle étant toujours à gauche).
@@ -50,7 +51,7 @@Le nouveau programme rajoute des ECTS en Information au détriment de la Programmation.
-Ces données suggèrent qu'il serait pertinent de rajouter 3 à 6 ECTS pour de l'algorithmique (le sujet est vaste) et autant pour les mathématiques (des choses spécifiques à la sécurité ou au graphisme par exemple) en prenant si besoin sur les catégories Information et Science.