Le 11-09-2009, Gabriel Dos Reis a écrit :C'est sûr que si le professeur donne l'impression que c'est compliqué,
les 2/3 des élèves imprimeront que c'est compliqué.
Il y a là une contradiction difficile à gérer pour l'enseignant.
D'une part, il sait qu'il faut que les étudiannts soient attentifs
à ce point, et qu'il les prévienne (à moins d'avoir des étudiants
dont l'attention est constante sur tout son cour, ce qui ne m'a
jamais été donné).
D'autre part, plus on dit que c'est difficile, plus les élèvent
impriment que c'est difficile.
Quel équilibre ? Je suis preneur de toute solution.
Le 11-09-2009, Gabriel Dos Reis <gdr@cs.tamu.edu> a écrit :
C'est sûr que si le professeur donne l'impression que c'est compliqué,
les 2/3 des élèves imprimeront que c'est compliqué.
Il y a là une contradiction difficile à gérer pour l'enseignant.
D'une part, il sait qu'il faut que les étudiannts soient attentifs
à ce point, et qu'il les prévienne (à moins d'avoir des étudiants
dont l'attention est constante sur tout son cour, ce qui ne m'a
jamais été donné).
D'autre part, plus on dit que c'est difficile, plus les élèvent
impriment que c'est difficile.
Quel équilibre ? Je suis preneur de toute solution.
Le 11-09-2009, Gabriel Dos Reis a écrit :C'est sûr que si le professeur donne l'impression que c'est compliqué,
les 2/3 des élèves imprimeront que c'est compliqué.
Il y a là une contradiction difficile à gérer pour l'enseignant.
D'une part, il sait qu'il faut que les étudiannts soient attentifs
à ce point, et qu'il les prévienne (à moins d'avoir des étudiants
dont l'attention est constante sur tout son cour, ce qui ne m'a
jamais été donné).
D'autre part, plus on dit que c'est difficile, plus les élèvent
impriment que c'est difficile.
Quel équilibre ? Je suis preneur de toute solution.
Personellement, quand j'aborde des points difficiles dans un cours,
j'essaie de faire passer un message rassurant comme « bon ok, c'est un
peu délicat, c'est normal si vous avez du mal au début, mais tenez bon
et tout va bien se passer ». Je suis loin de prétendre que c'est /la/
bonne méthode, mais je ne crois pas avoir causé trop de ravages en
faisant comme ça, sur des cours pourtant objectivement difficiles.
Personellement, quand j'aborde des points difficiles dans un cours,
j'essaie de faire passer un message rassurant comme « bon ok, c'est un
peu délicat, c'est normal si vous avez du mal au début, mais tenez bon
et tout va bien se passer ». Je suis loin de prétendre que c'est /la/
bonne méthode, mais je ne crois pas avoir causé trop de ravages en
faisant comme ça, sur des cours pourtant objectivement difficiles.
Personellement, quand j'aborde des points difficiles dans un cours,
j'essaie de faire passer un message rassurant comme « bon ok, c'est un
peu délicat, c'est normal si vous avez du mal au début, mais tenez bon
et tout va bien se passer ». Je suis loin de prétendre que c'est /la/
bonne méthode, mais je ne crois pas avoir causé trop de ravages en
faisant comme ça, sur des cours pourtant objectivement difficiles.
In article ,
Manuel Pégourié-Gonnard <mpg+ wrote:Personellement, quand j'aborde des points difficiles dans un cours,
j'essaie de faire passer un message rassurant comme « bon ok, c'est un
peu délicat, c'est normal si vous avez du mal au début, mais tenez bon
et tout va bien se passer ». Je suis loin de prétendre que c'est /la/
bonne méthode, mais je ne crois pas avoir causé trop de ravages en
faisant comme ça, sur des cours pourtant objectivement difficiles.
Ouaip, je suis pas mal d'accord avec ca.
Ceci-dit, je considere toujours que les pointeurs, c'est essentiellement
trivial. Apres tout, c'est jamais qu'une adresse memoire et un type...
il
y a pas mal de technicite specifiques au C, comme l'arithmetique sur pointeur
ou les problemes d'aliasing lies aux mauvais usage de cast, mais on peut
introduire ca tres tard quand le probleme se pose.
Non, par contre, comprendre ce qu'on peut faire avec, pourquoi c'est
indispensable, montrer les idiomes vitaux aux etudiants, ca c'est
complique. Comprendre le boulot de comptable qu'il faut faire en C
pour la gestion de la memoire.
Un truc qui n'aide vraiment pas, c'est la pedagogie tres universitaire de
style "il n'existe rien en dehors du cours, reinventez la roue a chaque
fois". Il est clair que faire du C avec rien, c'est super-chiant. Tout le
monde utilise des bibliotheques (ou fabrique ses propres bibliotheques et
s'en sert), mais voila, on donne des exemples aux etudiants sans bibliotheque,
ou on leur montre des "faux" fragments de code inventes pour le cours.
Dans les solutions que j'ai testees, passer en C++ est une excellente solution
pour rendre plein de choses moins douloureuses. Si on a le temps, c'est
infiniment MIEUX de commencer par C++ que par C: le type-checking plus
strict, et la bibliotheque standard relativement complete font qu'on peut
tres vite faire des choses agreables... et avec Qt, ces jours-ci,
il n'y a rien a redire par rapport a Java: on peut faire du graphique
sans le moindre souci.
(et je parle de C++ simple, en evitant l'essentiel de la prog. objet et des
complexites des templates). Ca, c'est si on veut faire de la prog.
en general et que le C n'est pas matiere principale.
Mais voila: quand on n'a que peu de temps, ca marche mal. Avec une trentaine
d'heures de cours, je ne sais pas enseigner le C en commencant par le C++
en m'assurant que les etudiants ne melangeront pas les deux a l'arrivee...
In article <20090914090307.16258.73750.XPN@roth.elzevir.fr>,
Manuel Pégourié-Gonnard <mpg+news@elzevir.fr> wrote:
Personellement, quand j'aborde des points difficiles dans un cours,
j'essaie de faire passer un message rassurant comme « bon ok, c'est un
peu délicat, c'est normal si vous avez du mal au début, mais tenez bon
et tout va bien se passer ». Je suis loin de prétendre que c'est /la/
bonne méthode, mais je ne crois pas avoir causé trop de ravages en
faisant comme ça, sur des cours pourtant objectivement difficiles.
Ouaip, je suis pas mal d'accord avec ca.
Ceci-dit, je considere toujours que les pointeurs, c'est essentiellement
trivial. Apres tout, c'est jamais qu'une adresse memoire et un type...
il
y a pas mal de technicite specifiques au C, comme l'arithmetique sur pointeur
ou les problemes d'aliasing lies aux mauvais usage de cast, mais on peut
introduire ca tres tard quand le probleme se pose.
Non, par contre, comprendre ce qu'on peut faire avec, pourquoi c'est
indispensable, montrer les idiomes vitaux aux etudiants, ca c'est
complique. Comprendre le boulot de comptable qu'il faut faire en C
pour la gestion de la memoire.
Un truc qui n'aide vraiment pas, c'est la pedagogie tres universitaire de
style "il n'existe rien en dehors du cours, reinventez la roue a chaque
fois". Il est clair que faire du C avec rien, c'est super-chiant. Tout le
monde utilise des bibliotheques (ou fabrique ses propres bibliotheques et
s'en sert), mais voila, on donne des exemples aux etudiants sans bibliotheque,
ou on leur montre des "faux" fragments de code inventes pour le cours.
Dans les solutions que j'ai testees, passer en C++ est une excellente solution
pour rendre plein de choses moins douloureuses. Si on a le temps, c'est
infiniment MIEUX de commencer par C++ que par C: le type-checking plus
strict, et la bibliotheque standard relativement complete font qu'on peut
tres vite faire des choses agreables... et avec Qt, ces jours-ci,
il n'y a rien a redire par rapport a Java: on peut faire du graphique
sans le moindre souci.
(et je parle de C++ simple, en evitant l'essentiel de la prog. objet et des
complexites des templates). Ca, c'est si on veut faire de la prog.
en general et que le C n'est pas matiere principale.
Mais voila: quand on n'a que peu de temps, ca marche mal. Avec une trentaine
d'heures de cours, je ne sais pas enseigner le C en commencant par le C++
en m'assurant que les etudiants ne melangeront pas les deux a l'arrivee...
In article ,
Manuel Pégourié-Gonnard <mpg+ wrote:Personellement, quand j'aborde des points difficiles dans un cours,
j'essaie de faire passer un message rassurant comme « bon ok, c'est un
peu délicat, c'est normal si vous avez du mal au début, mais tenez bon
et tout va bien se passer ». Je suis loin de prétendre que c'est /la/
bonne méthode, mais je ne crois pas avoir causé trop de ravages en
faisant comme ça, sur des cours pourtant objectivement difficiles.
Ouaip, je suis pas mal d'accord avec ca.
Ceci-dit, je considere toujours que les pointeurs, c'est essentiellement
trivial. Apres tout, c'est jamais qu'une adresse memoire et un type...
il
y a pas mal de technicite specifiques au C, comme l'arithmetique sur pointeur
ou les problemes d'aliasing lies aux mauvais usage de cast, mais on peut
introduire ca tres tard quand le probleme se pose.
Non, par contre, comprendre ce qu'on peut faire avec, pourquoi c'est
indispensable, montrer les idiomes vitaux aux etudiants, ca c'est
complique. Comprendre le boulot de comptable qu'il faut faire en C
pour la gestion de la memoire.
Un truc qui n'aide vraiment pas, c'est la pedagogie tres universitaire de
style "il n'existe rien en dehors du cours, reinventez la roue a chaque
fois". Il est clair que faire du C avec rien, c'est super-chiant. Tout le
monde utilise des bibliotheques (ou fabrique ses propres bibliotheques et
s'en sert), mais voila, on donne des exemples aux etudiants sans bibliotheque,
ou on leur montre des "faux" fragments de code inventes pour le cours.
Dans les solutions que j'ai testees, passer en C++ est une excellente solution
pour rendre plein de choses moins douloureuses. Si on a le temps, c'est
infiniment MIEUX de commencer par C++ que par C: le type-checking plus
strict, et la bibliotheque standard relativement complete font qu'on peut
tres vite faire des choses agreables... et avec Qt, ces jours-ci,
il n'y a rien a redire par rapport a Java: on peut faire du graphique
sans le moindre souci.
(et je parle de C++ simple, en evitant l'essentiel de la prog. objet et des
complexites des templates). Ca, c'est si on veut faire de la prog.
en general et que le C n'est pas matiere principale.
Mais voila: quand on n'a que peu de temps, ca marche mal. Avec une trentaine
d'heures de cours, je ne sais pas enseigner le C en commencant par le C++
en m'assurant que les etudiants ne melangeront pas les deux a l'arrivee...
Un truc qui n'aide vraiment pas, c'est la pedagogie tres universitaire de
style "il n'existe rien en dehors du cours, reinventez la roue a chaque
fois". Il est clair que faire du C avec rien, c'est super-chiant. Tout le
monde utilise des bibliotheques (ou fabrique ses propres bibliotheques et
s'en sert), mais voila, on donne des exemples aux etudiants sans bibliotheque,
ou on leur montre des "faux" fragments de code inventes pour le cours.
Mais voila: quand on n'a que peu de temps, ca marche mal. Avec une trentaine
d'heures de cours,
Un truc qui n'aide vraiment pas, c'est la pedagogie tres universitaire de
style "il n'existe rien en dehors du cours, reinventez la roue a chaque
fois". Il est clair que faire du C avec rien, c'est super-chiant. Tout le
monde utilise des bibliotheques (ou fabrique ses propres bibliotheques et
s'en sert), mais voila, on donne des exemples aux etudiants sans bibliotheque,
ou on leur montre des "faux" fragments de code inventes pour le cours.
Mais voila: quand on n'a que peu de temps, ca marche mal. Avec une trentaine
d'heures de cours,
Un truc qui n'aide vraiment pas, c'est la pedagogie tres universitaire de
style "il n'existe rien en dehors du cours, reinventez la roue a chaque
fois". Il est clair que faire du C avec rien, c'est super-chiant. Tout le
monde utilise des bibliotheques (ou fabrique ses propres bibliotheques et
s'en sert), mais voila, on donne des exemples aux etudiants sans bibliotheque,
ou on leur montre des "faux" fragments de code inventes pour le cours.
Mais voila: quand on n'a que peu de temps, ca marche mal. Avec une trentaine
d'heures de cours,
Mais voila: quand on n'a que peu de temps, ca marche mal. Avec une trentaine
d'heures de cours,
de "cours cours" ou avec TD et TP ?
Mais voila: quand on n'a que peu de temps, ca marche mal. Avec une trentaine
d'heures de cours,
de "cours cours" ou avec TD et TP ?
Mais voila: quand on n'a que peu de temps, ca marche mal. Avec une trentaine
d'heures de cours,
de "cours cours" ou avec TD et TP ?
Mais comme tu le disais, ça dépend si on peut s'appuyer sur une
connaissance des étudiants de ce qu'est la mémoire.
Si ça n'a pas été fait, faut en faire un peu.
C'est plus facile d'enseigner le C après 30h d'architecure des
ordinateurs.
Nous, on faisait le contraire. On leur donnait la spec de strcpy, et
on demandait de le coder, en précisant bien que c'était pour l'exercice,
Mais comme tu le disais, ça dépend si on peut s'appuyer sur une
connaissance des étudiants de ce qu'est la mémoire.
Si ça n'a pas été fait, faut en faire un peu.
C'est plus facile d'enseigner le C après 30h d'architecure des
ordinateurs.
Nous, on faisait le contraire. On leur donnait la spec de strcpy, et
on demandait de le coder, en précisant bien que c'était pour l'exercice,
Mais comme tu le disais, ça dépend si on peut s'appuyer sur une
connaissance des étudiants de ce qu'est la mémoire.
Si ça n'a pas été fait, faut en faire un peu.
C'est plus facile d'enseigner le C après 30h d'architecure des
ordinateurs.
Nous, on faisait le contraire. On leur donnait la spec de strcpy, et
on demandait de le coder, en précisant bien que c'était pour l'exercice,
de "cours cours" ou avec TD et TP ?
Cours-cours,
Je me retrouve
quand meme a devoir expliquer des trucs tel que le parcours d'un tableau
pour y retrouver un element...)
de "cours cours" ou avec TD et TP ?
Cours-cours,
Je me retrouve
quand meme a devoir expliquer des trucs tel que le parcours d'un tableau
pour y retrouver un element...)
de "cours cours" ou avec TD et TP ?
Cours-cours,
Je me retrouve
quand meme a devoir expliquer des trucs tel que le parcours d'un tableau
pour y retrouver un element...)
C'est quoi la question _précise_ ? Si c'est afficher la succession des éléments
d'un tableau d'entiers dont la longueur est donnée en paramètre de la fonction,
aucun problème (et tu le sais bien, cf. ton post de 10:57) :
#include <stdio.h>
void afficher(int t[], int n)
{
Pas l'ombre d'un pointeur ici, c'est complètement transparent pour l'ut ilisateur
C'est quoi la question _précise_ ? Si c'est afficher la succession des éléments
d'un tableau d'entiers dont la longueur est donnée en paramètre de la fonction,
aucun problème (et tu le sais bien, cf. ton post de 10:57) :
#include <stdio.h>
void afficher(int t[], int n)
{
Pas l'ombre d'un pointeur ici, c'est complètement transparent pour l'ut ilisateur
C'est quoi la question _précise_ ? Si c'est afficher la succession des éléments
d'un tableau d'entiers dont la longueur est donnée en paramètre de la fonction,
aucun problème (et tu le sais bien, cf. ton post de 10:57) :
#include <stdio.h>
void afficher(int t[], int n)
{
Pas l'ombre d'un pointeur ici, c'est complètement transparent pour l'ut ilisateur
Marc Boyer a écrit :
Mais comme tu le disais, ça dépend si on peut s'appuyer sur une
connaissance des étudiants de ce qu'est la mémoire.
Si ça n'a pas été fait, faut en faire un peu.
C'est plus facile d'enseigner le C après 30h d'architecure des
ordinateurs.
Tu veux dire de t'appuyer sur des connaissances d'architecture pour
enseigner le C ?
Ça se discute, disons que ça dépend de ton objectif mais en ce qui concerne
mes propres apprentissages, j'essaye d'éviter les empilements.
Mais il est tout à fait possible de s'en passer.
La mémoire est une abstraction et elle peut rester telle quand on
enseigne le C.
Probablement que dans des usages avancés
voire spécialisés, des connaissances d'archi (et d'assembleur) peuvent être
instructives voire utiles.
Nous, on faisait le contraire. On leur donnait la spec de strcpy, et
on demandait de le coder, en précisant bien que c'était pour l'exercice,
Exact, c'est à peu près à quoi on passe son temps et c'est très ingrat car il
n'est pas du tout évident quand on part de zéro d'arriver à un code bien ciselé
comme celui d'un Plauger ou de K&R. Moi ça m'amusait mais les étudiants, en
majorité, ça les fait ch** très rapidement. Déjà, ils se disent "à quoi bon
coder un truc qui existe déjà et qui marche très bien ?"
Marc Boyer a écrit :
Mais comme tu le disais, ça dépend si on peut s'appuyer sur une
connaissance des étudiants de ce qu'est la mémoire.
Si ça n'a pas été fait, faut en faire un peu.
C'est plus facile d'enseigner le C après 30h d'architecure des
ordinateurs.
Tu veux dire de t'appuyer sur des connaissances d'architecture pour
enseigner le C ?
Ça se discute, disons que ça dépend de ton objectif mais en ce qui concerne
mes propres apprentissages, j'essaye d'éviter les empilements.
Mais il est tout à fait possible de s'en passer.
La mémoire est une abstraction et elle peut rester telle quand on
enseigne le C.
Probablement que dans des usages avancés
voire spécialisés, des connaissances d'archi (et d'assembleur) peuvent être
instructives voire utiles.
Nous, on faisait le contraire. On leur donnait la spec de strcpy, et
on demandait de le coder, en précisant bien que c'était pour l'exercice,
Exact, c'est à peu près à quoi on passe son temps et c'est très ingrat car il
n'est pas du tout évident quand on part de zéro d'arriver à un code bien ciselé
comme celui d'un Plauger ou de K&R. Moi ça m'amusait mais les étudiants, en
majorité, ça les fait ch** très rapidement. Déjà, ils se disent "à quoi bon
coder un truc qui existe déjà et qui marche très bien ?"
Marc Boyer a écrit :
Mais comme tu le disais, ça dépend si on peut s'appuyer sur une
connaissance des étudiants de ce qu'est la mémoire.
Si ça n'a pas été fait, faut en faire un peu.
C'est plus facile d'enseigner le C après 30h d'architecure des
ordinateurs.
Tu veux dire de t'appuyer sur des connaissances d'architecture pour
enseigner le C ?
Ça se discute, disons que ça dépend de ton objectif mais en ce qui concerne
mes propres apprentissages, j'essaye d'éviter les empilements.
Mais il est tout à fait possible de s'en passer.
La mémoire est une abstraction et elle peut rester telle quand on
enseigne le C.
Probablement que dans des usages avancés
voire spécialisés, des connaissances d'archi (et d'assembleur) peuvent être
instructives voire utiles.
Nous, on faisait le contraire. On leur donnait la spec de strcpy, et
on demandait de le coder, en précisant bien que c'était pour l'exercice,
Exact, c'est à peu près à quoi on passe son temps et c'est très ingrat car il
n'est pas du tout évident quand on part de zéro d'arriver à un code bien ciselé
comme celui d'un Plauger ou de K&R. Moi ça m'amusait mais les étudiants, en
majorité, ça les fait ch** très rapidement. Déjà, ils se disent "à quoi bon
coder un truc qui existe déjà et qui marche très bien ?"
Marc Espie a écrit :Un truc qui n'aide vraiment pas, c'est la pedagogie tres universitaire de
style "il n'existe rien en dehors du cours, reinventez la roue a chaque
fois". Il est clair que faire du C avec rien, c'est super-chiant. Tout le
monde utilise des bibliotheques (ou fabrique ses propres bibliotheques et
s'en sert), mais voila, on donne des exemples aux etudiants sans bibliotheque,
ou on leur montre des "faux" fragments de code inventes pour le cours.
Absolument, l'enseignement du C est complètement désincarné, c'est super
décourageant, on souffre (parce que la culture du C est intégriste
pousse-au-crime) à coder des algorithmes triviaux. Les étudiants arrivent en L3
et ils n'ont jamais travaillé avec une autre bibliothèque que la lib standard.
On devrait leur proposer d'utiliser une bibliothèque comme ncurses ou la SDL ou
Allegro.
Moi je devais faire un enseignement d'expérimentations algorithmiques en L2 avec
TP en C (je l'ai pratiqué une année) et ce semestre, je vais laisser tomber le C
et le remplacer par Python (que les étudiants ne connaissent pas !) et je suis à
peu près persuadé qu'on ira beaucoup plus loin qu'avec du C et que les étudiants
se sentiront davantage capables.
Marc Espie a écrit :
Un truc qui n'aide vraiment pas, c'est la pedagogie tres universitaire de
style "il n'existe rien en dehors du cours, reinventez la roue a chaque
fois". Il est clair que faire du C avec rien, c'est super-chiant. Tout le
monde utilise des bibliotheques (ou fabrique ses propres bibliotheques et
s'en sert), mais voila, on donne des exemples aux etudiants sans bibliotheque,
ou on leur montre des "faux" fragments de code inventes pour le cours.
Absolument, l'enseignement du C est complètement désincarné, c'est super
décourageant, on souffre (parce que la culture du C est intégriste
pousse-au-crime) à coder des algorithmes triviaux. Les étudiants arrivent en L3
et ils n'ont jamais travaillé avec une autre bibliothèque que la lib standard.
On devrait leur proposer d'utiliser une bibliothèque comme ncurses ou la SDL ou
Allegro.
Moi je devais faire un enseignement d'expérimentations algorithmiques en L2 avec
TP en C (je l'ai pratiqué une année) et ce semestre, je vais laisser tomber le C
et le remplacer par Python (que les étudiants ne connaissent pas !) et je suis à
peu près persuadé qu'on ira beaucoup plus loin qu'avec du C et que les étudiants
se sentiront davantage capables.
Marc Espie a écrit :Un truc qui n'aide vraiment pas, c'est la pedagogie tres universitaire de
style "il n'existe rien en dehors du cours, reinventez la roue a chaque
fois". Il est clair que faire du C avec rien, c'est super-chiant. Tout le
monde utilise des bibliotheques (ou fabrique ses propres bibliotheques et
s'en sert), mais voila, on donne des exemples aux etudiants sans bibliotheque,
ou on leur montre des "faux" fragments de code inventes pour le cours.
Absolument, l'enseignement du C est complètement désincarné, c'est super
décourageant, on souffre (parce que la culture du C est intégriste
pousse-au-crime) à coder des algorithmes triviaux. Les étudiants arrivent en L3
et ils n'ont jamais travaillé avec une autre bibliothèque que la lib standard.
On devrait leur proposer d'utiliser une bibliothèque comme ncurses ou la SDL ou
Allegro.
Moi je devais faire un enseignement d'expérimentations algorithmiques en L2 avec
TP en C (je l'ai pratiqué une année) et ce semestre, je vais laisser tomber le C
et le remplacer par Python (que les étudiants ne connaissent pas !) et je suis à
peu près persuadé qu'on ira beaucoup plus loin qu'avec du C et que les étudiants
se sentiront davantage capables.