Pas d'accord. On peut parfaitement apprendre un langage au fur et à mesure des cours d'algo (c'est d'ailleurs comme ça que j'ai appris en IUT). L'important est d'adapter les algos au sous-ensemble du langage considéré. Ensuite, au fur et à mesure on peut ajouter des aspects du langage quand on veut aborder des structures de données plus compliquées — mais pour les algos de base (tri, comprendre le principe d'échange de variables, etc.), on peut se contenter d'un tout petit sous ensemble et faire déjà pas mal. À Versailles, si ça n'a pas changé, en L1 ils ont construit un environnement de travail au-dessus du C en utilisant la SDL, et tous les algos/problèmes à réaliser/résoudre sont faits en utilisant les « nouvelles » primitives (genre tracer_droite, afficher_point, etc.), et au fur et à mesure ils découvrent aussi la bibliothèque standard. Je sais qu'en 1è/2è année de fac à l'université de Rice (Houston,TX USA), ils utilisent Python, mais au moins en 2è année, ils demandent au élèves un truc qui peut sembler bizarre au début : ils ne peuvent écrire qu'une seule fois dans une variable, et doivent numéroter les variables s'ils veulent « écraser » la valeur. La finalité est de faire une intro à un style de programmation plus fonctionnel une fois qu'ils ont les bases (et parce que ça aide pour pas mal d'algos parallèles, qui sont ensuite enseignés en 3è et 4è années).
Que ce soit la méthode à laquelle j'ai été sujet (sous-ensemble du C qu'on agrandit au fur et à mesure, quand la compréhension est suffisante) ou un langage avec de « nouvelles » primitives pour aider à faciliter certaines tâches1, l'important c'est la notion de progression. En IUT, nous faisions tous nos exos d'algo en C sur papier, et c'était à nous d'aller ensuite sur les machines de la fac (ou chez nous) pour coder les programmes sur PC. Nous avions aussi des projets (3 en C en 6 mois) à effectuer en binôme.
Il ne faut pas oublier que les algos et structures de données de bases sont vraiment simples :
Structures de contrôles (while, for, if/elsedo...while, switch)
Types composés (struct en C) et tableaux (et combinaison des deux)
Tris et recherche de tableaux (tri à bulle, recherche dichotomique)
Notion de « sauts » : break, continue, goto (avec les avertissements qui vont bien)
Tableaux d'indices (pour trier suivante différents critères sans toucher au tableau « lourd »)
Une fois que les pointeurs ont été vus : listes chaînées, arbres, et graphes.
Rien que ça, ça prend beaucoup de temps à enseigner à des étudiants qui ne savent rien de la programmation. En IUT génie info en parallèle, les élèves font de la logique formelle, apprennent un peu d'archi des ordinateurs (logique de Boole, tableaux de Karnaugh, portes logiques), commencent à voir ce qu'est une base de données, et font pas mal de génie logiciel. En fac classique, en première année de cursus scientifique, à côté de l'intro à la programmation/algorithmique, il y a les maths, la physique, la chimie, la bio, etc.
Bref, en un semestre, voir déjà les points que j'ai énumérés, c'est pas mal.
Par exemple, j'aurais bien aimé qu'on m'expliquer que gets c'est mal, et qu'on me fournisse un truc genre getline ou lire_ligne qui me simplifie le travail, quitte plus tard à me le faire reprogrammer. ↩
[^] # Re: Ne pas commencer par coder
Posté par lasher . En réponse au journal Python comme premier langage de programmation ?. Évalué à 5.
Pas d'accord. On peut parfaitement apprendre un langage au fur et à mesure des cours d'algo (c'est d'ailleurs comme ça que j'ai appris en IUT). L'important est d'adapter les algos au sous-ensemble du langage considéré. Ensuite, au fur et à mesure on peut ajouter des aspects du langage quand on veut aborder des structures de données plus compliquées — mais pour les algos de base (tri, comprendre le principe d'échange de variables, etc.), on peut se contenter d'un tout petit sous ensemble et faire déjà pas mal. À Versailles, si ça n'a pas changé, en L1 ils ont construit un environnement de travail au-dessus du C en utilisant la SDL, et tous les algos/problèmes à réaliser/résoudre sont faits en utilisant les « nouvelles » primitives (genre
tracer_droite,afficher_point, etc.), et au fur et à mesure ils découvrent aussi la bibliothèque standard. Je sais qu'en 1è/2è année de fac à l'université de Rice (Houston,TX USA), ils utilisent Python, mais au moins en 2è année, ils demandent au élèves un truc qui peut sembler bizarre au début : ils ne peuvent écrire qu'une seule fois dans une variable, et doivent numéroter les variables s'ils veulent « écraser » la valeur. La finalité est de faire une intro à un style de programmation plus fonctionnel une fois qu'ils ont les bases (et parce que ça aide pour pas mal d'algos parallèles, qui sont ensuite enseignés en 3è et 4è années).Que ce soit la méthode à laquelle j'ai été sujet (sous-ensemble du C qu'on agrandit au fur et à mesure, quand la compréhension est suffisante) ou un langage avec de « nouvelles » primitives pour aider à faciliter certaines tâches1 , l'important c'est la notion de progression. En IUT, nous faisions tous nos exos d'algo en C sur papier, et c'était à nous d'aller ensuite sur les machines de la fac (ou chez nous) pour coder les programmes sur PC. Nous avions aussi des projets (3 en C en 6 mois) à effectuer en binôme.
Il ne faut pas oublier que les algos et structures de données de bases sont vraiment simples :
while,for,if/elsedo...while,switch)structen C) et tableaux (et combinaison des deux)break,continue,goto(avec les avertissements qui vont bien)Rien que ça, ça prend beaucoup de temps à enseigner à des étudiants qui ne savent rien de la programmation. En IUT génie info en parallèle, les élèves font de la logique formelle, apprennent un peu d'archi des ordinateurs (logique de Boole, tableaux de Karnaugh, portes logiques), commencent à voir ce qu'est une base de données, et font pas mal de génie logiciel. En fac classique, en première année de cursus scientifique, à côté de l'intro à la programmation/algorithmique, il y a les maths, la physique, la chimie, la bio, etc.
Bref, en un semestre, voir déjà les points que j'ai énumérés, c'est pas mal.
Par exemple, j'aurais bien aimé qu'on m'expliquer que
getsc'est mal, et qu'on me fournisse un truc genregetlineoulire_lignequi me simplifie le travail, quitte plus tard à me le faire reprogrammer. ↩