Pédagogie de la programmation

La question :

Suite à différentes discussions dans différents forums spécialisés sur
tel ou tel langage de programmation (principalement dans les forums
C/C++), j'initie un fil de discussion pour discuter sur la pédagogie de
l'enseignement de la programmation pour des débutants (étudiants ou
informaticiens professionnels mais ne connaissant pas la programmation.
Si, si, ça existe...).
Attention, il ne s'agit pas de se quereller sur tel ou tel langage mais
d'essayer de répondre à des questions telles que :
- Par quoi commence-t-on : directement par un langage et lequel
(attention aux querelles...), par du pseudo-code (séquence, alternative,
itérative, récursion), par des concepts (qu'est-ce qu'une variable, un
littéral, une constante, les classes d'allocation mémoire, les tableaux,
les structures, les modules, etc.) ?
- Quels exercices, quelle progression, quel ordre dans la progression,
quels types de projets ?
- Où place-t-on la qualité du code (en cours, dans les exercices, dans
les projets ?
- Parle-t-on des métriques logicielles ?
- les met-on en oeuvre avec un outil (type logiscope ou son équivalent
(?) dans le monde du libre
- Les tests : unitaire, d'intégration, de validation, les taux de
couverture . Comment parle-t-on de tout ça ?
- Niveau espéré en sortie ? (que sait-on faire ?)
- Par quoi compléter dans la "vraie vie" en entreprise ?

Questions subsidiaires :
Parle-t-on (à quelle "dose")
- des automates (finis, à pile, à mémoire linéairement borné, machine de
Turing)
- de la BNF
- de l'indécidabilité (de l'équivalence de programmes, par exemple)
- problème de l'arrêt
- de la description de la sémantique des langages. Des différentes
sortes de sémantiques, du lambda-calcul, etc.
- de la preuve de programme
- etc. (je sais c'est pas bien mais c'est pour laisser ouvert à d'autres
sujets éventuellement)

L'objectif, à la fin, c'est d'avoir un cursus concernant l'enseignement
de la programmation, avec des indications de pédagogie, et des options
ou des variantes.

Je veux bien faire des synthèses ponctuellement et veiller à ce que la
discussion ne parte pas dans tous les sens.

Je précise que je n'ai aucun intérêt dans l'histoire car je suis depuis
4 mois à la retraite (du privé) mais que j'ai beaucoup développé,
encadré des développeurs (tous ingénieurs), beaucoup donné de formations
en entreprise sur les langages(divers et variés), la conception objet,
uml, la qualité logicielle, les méthodes de tests logiciels,
l'ingénierie des exigences, etc.

Poser votre question sur le forum Programmation

Les 143 réponses :

On 2009-02-05, Wykaaa a écrit :


Suite à différentes discussions dans différents forums spécialisés sur
tel ou tel langage de programmation (principalement dans les forums
C/C++), j'initie un fil de discussion pour discuter sur la pédagogie de
l'enseignement de la programmation pour des débutants (étudiants ou
informaticiens professionnels mais ne connaissant pas la programmation.
Si, si, ça existe...).



Oulà... Ce que tu demandes, c'est de discuter et de construire un plan
de formation. C'est un exercice super long, et déjà difficile en
vis-à-vis, alors sur Usenet...

De plus, il est impossible de faire ce genre de chose sans avoir
le contexte, les objectifs de la formation, etc. On batit pas
le même programme pour un IUT informatique, pour l'option info
d'une ENS ou pour l'approfondissement informatique d'une école
aéronautique.


L'objectif, à la fin, c'est d'avoir un cursus concernant l'enseignement
de la programmation, avec des indications de pédagogie, et des options
ou des variantes.


C'est bien ça le problème: je ne connais pas "un" cursus, mais
des dizaines, avec des objectifs et des contraintes diverses.


Je précise que je n'ai aucun intérêt dans l'histoire car je suis depuis
4 mois à la retraite (du privé) mais que j'ai beaucoup développé,
encadré des développeurs (tous ingénieurs), beaucoup donné de formations
en entreprise sur les langages(divers et variés), la conception objet,
uml, la qualité logicielle, les méthodes de tests logiciels,
l'ingénierie des exigences, etc.


Moi j'ai enseigné l'informatique dans divers contextes (IUT, IUP,
Ecole ingé Télécom)...

Marc Boyer
--
Au XXIème siècle, notre projet de société s'est réduit
à un projet économique...

Marc Boyer a écrit :


On 2009-02-05, Wykaaa a écrit :


Suite à différentes discussions dans différents forums spécialisés sur
tel ou tel langage de programmation (principalement dans les forums
C/C++), j'initie un fil de discussion pour discuter sur la pédagogie de
l'enseignement de la programmation pour des débutants (étudiants ou
informaticiens professionnels mais ne connaissant pas la programmation.
Si, si, ça existe...).



Oulà... Ce que tu demandes, c'est de discuter et de construire un plan
de formation. C'est un exercice super long, et déjà difficile en
vis-à-vis, alors sur Usenet...

De plus, il est impossible de faire ce genre de chose sans avoir
le contexte, les objectifs de la formation, etc. On batit pas
le même programme pour un IUT informatique, pour l'option info
d'une ENS ou pour l'approfondissement informatique d'une école
aéronautique.


Je ne parlais de pédagogie que pour les débutants en programmation, pas
des cours d'approfondissement.
Quand on démarre l'apprentissage, ça doit être, grossièrement, pour tout
le monde pareil.
On pourrait restreindre le sujet à : comment on aborde la programmation
au début. Ce qui correspond à ma première question : par quoi on commence ?



L'objectif, à la fin, c'est d'avoir un cursus concernant l'enseignement
de la programmation, avec des indications de pédagogie, et des options
ou des variantes.


C'est bien ça le problème: je ne connais pas "un" cursus, mais
des dizaines, avec des objectifs et des contraintes diverses.


Oui mais pour débuter, quel que soit l'objectif final ou la cible métier.



Je précise que je n'ai aucun intérêt dans l'histoire car je suis depuis
4 mois à la retraite (du privé) mais que j'ai beaucoup développé,
encadré des développeurs (tous ingénieurs), beaucoup donné de formations
en entreprise sur les langages(divers et variés), la conception objet,
uml, la qualité logicielle, les méthodes de tests logiciels,
l'ingénierie des exigences, etc.


Moi j'ai enseigné l'informatique dans divers contextes (IUT, IUP,
Ecole ingé Télécom)...

Marc Boyer


Justement, c'est un parcours intéressant pour faire part de ton
expérience. Moi j'ai surtout l'expérience de la formation d'adultes dans
un cadre non universitaire.

On 2009-02-06, Wykaaa a écrit :


Marc Boyer a écrit :


On 2009-02-05, Wykaaa a écrit :


Suite à différentes discussions dans différents forums spécialisés sur
tel ou tel langage de programmation (principalement dans les forums
C/C++), j'initie un fil de discussion pour discuter sur la pédagogie de
l'enseignement de la programmation pour des débutants (étudiants ou
informaticiens professionnels mais ne connaissant pas la programmation.
Si, si, ça existe...).



Oulà... Ce que tu demandes, c'est de discuter et de construire un plan
de formation. C'est un exercice super long, et déjà difficile en
vis-à-vis, alors sur Usenet...

De plus, il est impossible de faire ce genre de chose sans avoir
le contexte, les objectifs de la formation, etc. On batit pas
le même programme pour un IUT informatique, pour l'option info
d'une ENS ou pour l'approfondissement informatique d'une école
aéronautique.


Je ne parlais de pédagogie que pour les débutants en programmation, pas
des cours d'approfondissement.
Quand on démarre l'apprentissage, ça doit être, grossièrement, pour tout
le monde pareil.


Ben non, je ne pense pas.
Tient, si tu as du temps dans l'ensemble de ta formation pour
voir 4-5 langages, tu peux commencer par un langage un peu marginal
(Caml, Pascal, python, Ada) puis aborder des langages mainstream ensuite
(C, C++, Java).
Si tu as a à peine le volume pour faire 1 ou 2 langages, le choix est
contraint de façon très différentes.

Idem, il y a des formations qui vont être ammenées à programmer de petites
choses. J'avais des collègues de traitement du signal, qui faisaient du
Matlab, des codes qui dépassaient très rarement 5000LOC, et dont les
utilisateurs étaient des gens qui faisaient du traitement du signal, donc
qui iront voir le code.
La problématique qualité est très différente d'un logiciel de 500KLOC
dont les utilisateurs ne verront que le binaire.


On pourrait restreindre le sujet à : comment on aborde la programmation
au début. Ce qui correspond à ma première question : par quoi on commence ?


Variable, sequence, test, boucle.


Oui mais pour débuter, quel que soit l'objectif final ou la cible métier.


C'est là que je ne suis pas d'accord. L'objectif importe dès le début.

Marc Boyer
--
Au XXIème siècle, notre projet de société s'est réduit
à un projet économique...

Marc Boyer a écrit :


On 2009-02-06, Wykaaa a écrit :


Marc Boyer a écrit :


On 2009-02-05, Wykaaa a écrit :
Suite à différentes discussions dans différents forums spécialisés sur
tel ou tel langage de programmation (principalement dans les forums
C/C++), j'initie un fil de discussion pour discuter sur la pédagogie de
l'enseignement de la programmation pour des débutants (étudiants ou
informaticiens professionnels mais ne connaissant pas la programmation.
Si, si, ça existe...).

Oulà... Ce que tu demandes, c'est de discuter et de construire un plan
de formation. C'est un exercice super long, et déjà difficile en
vis-à-vis, alors sur Usenet...

De plus, il est impossible de faire ce genre de chose sans avoir
le contexte, les objectifs de la formation, etc. On batit pas
le même programme pour un IUT informatique, pour l'option info
d'une ENS ou pour l'approfondissement informatique d'une école
aéronautique.


Je ne parlais de pédagogie que pour les débutants en programmation, pas
des cours d'approfondissement.
Quand on démarre l'apprentissage, ça doit être, grossièrement, pour tout
le monde pareil.


Ben non, je ne pense pas.
Tient, si tu as du temps dans l'ensemble de ta formation pour
voir 4-5 langages, tu peux commencer par un langage un peu marginal
(Caml, Pascal, python, Ada) puis aborder des langages mainstream ensuite
(C, C++, Java).


Si on a le temps, c'est effectivement ce qu'il faut faire.

Au début des années 90, j'avais expérimenté l'apprentissage de la
programmation avec Ada (en remplacement de Pascal parce qu'il y a les
packages qui sont propres en Ada) et ensuite on passait au C en disant
que l'équivalent d'un package Ada c'était un .h et un .c. Du coup les
participants programmaient très proprement en C car ils avaient pris de
bonnes habitudes avec Ada.


Si tu as a à peine le volume pour faire 1 ou 2 langages, le choix est
contraint de façon très différentes.


Oui c'est sûr.



Idem, il y a des formations qui vont être ammenées à programmer de petites
choses. J'avais des collègues de traitement du signal, qui faisaient du
Matlab, des codes qui dépassaient très rarement 5000LOC, et dont les
utilisateurs étaient des gens qui faisaient du traitement du signal, donc
qui iront voir le code.
La problématique qualité est très différente d'un logiciel de 500KLOC
dont les utilisateurs ne verront que le binaire.


En traitement de signal, la problématique est très différente pour la
programmation. Matlab me paraît une bonne idée et, effectivement, ils
ne'auront pas à tremper dans des projets de centaines de milliers de
lignes de code.



On pourrait restreindre le sujet à : comment on aborde la programmation
au début. Ce qui correspond à ma première question : par quoi on commence ?


Variable, sequence, test, boucle.


En pseudo-code au tout début ou directement dans un langage ? si oui,
quel langage , (je penche toujours pour Ada, mais je suis peut-être
influencé par les milieux et les applications que j'ai fréquentées :
essentiellement des très grosses applis toujours > à 200 à 300 KLOC)



Oui mais pour débuter, quel que soit l'objectif final ou la cible métier.


C'est là que je ne suis pas d'accord. L'objectif importe dès le début.


Finalement tu a certainement raison. Et pour les administrateurs ? du
Shell ?

On 2009-02-06, Wykaaa a écrit :


Marc Boyer a écrit :


Ben non, je ne pense pas.
Tient, si tu as du temps dans l'ensemble de ta formation pour
voir 4-5 langages, tu peux commencer par un langage un peu marginal
(Caml, Pascal, python, Ada) puis aborder des langages mainstream ensuite
(C, C++, Java).


Si on a le temps, c'est effectivement ce qu'il faut faire.

Au début des années 90, j'avais expérimenté l'apprentissage de la
programmation avec Ada (en remplacement de Pascal parce qu'il y a les
packages qui sont propres en Ada) et ensuite on passait au C en disant
que l'équivalent d'un package Ada c'était un .h et un .c. Du coup les
participants programmaient très proprement en C car ils avaient pris de
bonnes habitudes avec Ada.


Pareil.
Mais l'arrivée de Java a changé la donne: obligé de faire C et Java
dans le volume dans lequel tenait Ada+C, la formation à laquelle
je pense a remplacé Ada par Java...


On pourrait restreindre le sujet à : comment on aborde la programmation
au début. Ce qui correspond à ma première question : par quoi on commence ?


Variable, sequence, test, boucle.


En pseudo-code au tout début ou directement dans un langage ? si oui,
quel langage , (je penche toujours pour Ada, mais je suis peut-être
influencé par les milieux et les applications que j'ai fréquentées :
essentiellement des très grosses applis toujours > à 200 à 300 KLOC)


Ce furent de longues discussions avec un collègue.
J'était très content de Pascal, mais la disponibilité du compilo
laisse à désire.
J'aime beaucoup Ada, mais le collègue trouvait le traitement des E/S
rebuttant pour les débutants.


Oui mais pour débuter, quel que soit l'objectif final ou la cible métier.


C'est là que je ne suis pas d'accord. L'objectif importe dès le début.


Finalement tu a certainement raison. Et pour les administrateurs ? du
Shell ?


Existe-il quelque part une formation spécifique pour les Admins ?
J'ai toujours eut l'impression que c'était des informaticiens généralistes
formés à l'admin sur le tas.

Marc Boyer
--
Au XXIème siècle, notre projet de société s'est réduit
à un projet économique...

Poser votre question sur le forum Programmation

Questions similaires :

Initiation à la programmation

Je viens de le retrouver http://www.codecademy.com/#!/exercises/0 mais c’est en anglais

Nouveaux langages pour la programmation des processeurs multicoeurs

On 16 juin, 17:18, Wykaaa wrote: Oui mais quel travail, et comment connaitre tous les environnements. C'est aux fabricants de compilateurs de connaitre leur environnement et de coder proprement la STL. Sinon à quoi bon la mettre dans la norme? Non, je ne suis pas vraiment...

Programmation par contrainte

tao wrote: La programmation par contrainte a été popularisée, à l'origine, par des langages tels que Prolog (programmation déclarative). La programmation par contrainte permet de résoudre, plus simplement qu'avec une programmation dite impérative, des problèmes de placements (les huit reines,...

Creation forum sur zoo-logique - programmation.APL

Cela concerne aussi tous les J Man, "Jean-Pierre Bordenave" a écrit dans le message de news: 420bace4$0$5219$7a628cd7@news.club-internet.fr...

la programmation objet est-elle toujours justifiee ?

wrote: Ah ? Ah ??? Ah ??? hum... Ahum... Bon, soyons sérieux. Le 'monde réel' n'est ni objet, ni fonctionnel, ni procédural (sauf dans les administrations...). 'Modéliser le monde réel' n'a pas de sens. Ce qu'on va chercher à modéliser, c'est le domaine d'application du programme à écrire, et...