Qui peut apprendre à programmer? [fermé]


17

J'hésite toujours quand je parle aux professeurs d'essayer d'améliorer le pourcentage de personnes qui obtiennent un diplôme de type CS par rapport au nombre qui commencent par penser que c'est ce qu'ils veulent. D'une part, je pense vraiment qu'il est important que les professionnels soient impliqués et donnent cette rétroaction, d'autre part, il serait préférable que des étudiants moins médiocres se retrouvent avec des diplômes CS.

Je ne pense pas que tous les esprits soient construits pour ce domaine et vous devez être un bon élève tout au long de la vie. Vous devez avoir un haut degré de patience et des compétences en résolution de problèmes juste au bout. Si vous avez le "bon" type de cerveau, ces problèmes difficiles vous poussent à continuer. Si vous obtenez simplement une longue liste de problèmes faciles, vous vous ennuyez et ces personnes ne sont donc pas douées pour des emplois plus répétitifs. Je n'ai pas besoin d'entrer dans tous les détails ... si vous lisez ceci, vous savez probablement où je veux en venir.

Donc, la question est: comment trouvez-vous l'équilibre d'un programme d'études qui est accessible à suffisamment de personnes pour être financé et considéré comme réussi, mais qui ne se révèle pas non plus vraiment des personnes qui ne sont pas vraiment adaptées à l'emploi? Peut-être qu'une meilleure question est, quelle métrique utilisez-vous pour savoir si les changements que vous apportez dans un programme d'études le rendent meilleur? Je ne sais pas qu'un taux d'obtention d'un diplôme plus élevé est une bonne mesure. Et il semble que la rétroaction que vous pourriez essayer de capturer de nombreuses années plus tard sur les emplois occupés par les diplômés serait trop tardive.

Je me bats avec cette question depuis longtemps, principalement parce que je ne pense pas qu'il y ait de réponse. Mais j'ai pensé que je demanderais à voir si quelqu'un est au courant des recherches qui ont réellement été faites à ce sujet.

Addition: Récemment, un professeur très sage m'a rappelé que tous ceux qui ont un diplôme CS ne veulent même pas être programmeur à temps plein une fois qu'ils ont réellement découvert ce que cela signifie. Mais, avec l'éducation qu'ils ont reçue, ils pourraient peut-être faire de grands chefs de projet, des gestionnaires, des administrateurs système, etc. Je pense que c'était un très bon point que je n'avais pas pensé à considérer ici. Il y a un pourcentage très élevé de personnes qui ne finissent pas par travailler dans le domaine dans lequel ils se sont spécialisés, CS ne fait pas exception à cela. Avoir les gens supplémentaires aide non seulement à budgéter le diplôme, mais aussi à augmenter le pourcentage de non-programmeurs qui en savent encore assez pour travailler avec les programmeurs.


@ Job- Merci, c'est un excellent point et cela me fait me sentir beaucoup mieux.
Beth Whitezel

2
@job: parlant en psychologie, programmant maintenant des machines RMN, je peux en témoigner.
Matt Ellen

Réponses:


33

D'accord, à la demande générale ... Laissez le marché libre le découvrir. Vous savez, 95% des majors en psychologie finissent par faire autre chose. Pas tout le monde avec un diplôme CS / mineur finit par programmer, mais ils font de meilleurs gestionnaires, analystes, chefs de projet que ceux sans. Ne portez pas le poids du monde sur vos épaules. Le diplôme CS est juste un morceau de papier. Ceux qui ont des diplômes en mathématiques, physique, chimie et biologie deviennent des programmeurs, et tout le monde avec un diplôme CS ne devient pas programmeur. Sans des millions d'enfants aspirant à devenir le meilleur joueur de baseball, nous n'aurions pas de si grandes stars. Le système est autorégulé.


Je suis d'accord dans une certaine mesure, mais j'ai également dû prendre en charge du code écrit par des personnes diplômées en physique, en mathématiques et en génie mécanique qui pensaient être des programmeurs. Ce n'est pas parce que quelqu'un fait quelque chose pour son travail qu'il le fait bien ...
Joel C

7
J'ai vu beaucoup de mauvais code écrit par des étudiants CS. J'ai vu un code incroyable écrit par des gens des mathématiques ou de la physique ou autre. Il n'y a pratiquement aucune corrélation entre ce que vous avez étudié exactement et la qualité de votre code.
jhocking

1
allez aussi à la biologie!
jhocking

11

Bien que je pense qu'il est important de garder à l'esprit la réponse de Job, la même réponse pourrait être appliquée à une usine à diplômes. "J'ai payé 199,95 $, donnez-moi maintenant mon diplôme CS."

Vainquer le corps étudiant selon une norme de ce que sont les "vrais programmeurs" n'est pas vraiment votre travail. Enseigner aux élèves comment programmer / concevoir est (vraisemblablement?). Si vous n'avez pas changé votre façon de penser au collège, vous y avez perdu votre temps. Votre objectif est de montrer à tout étudiant qui montre un intérêt que devenir programmeur change sa façon de penser pour le mieux. Vous faites cela indirectement en leur montrant ...

  1. ce qu'est vraiment la programmation et ...
  2. qu'ils peuvent le faire.

Nous le faisons mal

Il existe des recherches approfondies qui montrent que la façon dont 95% de nos programmes collégiaux enseignent la programmation / CS est terrible. Le programme CS moyen commence par

  • Un semestre de programmation de base en C ++ / Java / C #, qui passe 16 semaines à enseigner peu de choses plus avancées que "c'est une boucle for". Une analogie pourrait être si le département de physique a passé un semestre à étudier l'alphabet grec avant de commencer la cinématique.
  • Le deuxième semestre de première année entre dans les structures de données de base et laisse généralement complètement 1/3 à la moitié des étudiants.
  • L'année de deuxième année est consacrée à une combinaison d'assemblage, de structures de données, d'analyse algorithmique, d'un cours d'éthique et peut-être de votre premier cours d'actualité. Vous avez tendance à perdre une autre moitié de vos étudiants entrants au cours de cette année.
  • Les juniors et les seniors entrent dans des classes avec des noms comme "Graphics", "Networking I et II", "Operating Systems", et c'est le premier matériel vraiment intéressant que les étudiants voient.

Presque tout le reste est meilleur

Presque toutes les expériences améliorent la situation, mesurée en termes de compréhension par les étudiants des sujets ET des inscriptions au programme ET des taux de diplomation. Certaines des expériences que j'ai vues dans les journaux d' ACM CSE sont ...

  • Construire des machines d'état théoriques très simples à l'assemblage et au C, se terminant par C # / Java dans votre dernière année. L'accent est mis sur l'exploration lente des couches d'abstraction.
  • Choisir un langage très "simple" pour concentrer les étudiants sur les structures de données et l'abstraction. J'ai vu de bons résultats avec des étudiants écrivant des applications Web plutôt complexes dans une variante de schéma d'ici la fin de la première année. (C'était un wiki modifié qui exécuterait le texte de la page à travers le schéma avant d'afficher ... sorta fun)
  • Concentrer les étudiants débutants sur un domaine particulier (réseautage) et enseigner chaque structure / déclaration Java comme un «côté». Les étudiants de la deuxième semaine font un ping sur le serveur de messagerie pour voir une liste de leurs e-mails, le projet final est un simple client de messagerie instantanée. L'objectif est de montrer aux étudiants comment les programmeurs font fonctionner une partie du monde.
  • Certains programmes se concentrent sur la robotique. Freshman joue avec Lego mindstorms ... les étudiants en deuxième année utilisent l'API de type C, les juniors et les seniors travaillent avec les ME et les EE dans une collaboration inter-campus pour construire des systèmes assez complexes.
  • Un programme concentre les étudiants sur la lecture de code pour le premier semestre. Ils analysent le code dans le système X11 pour enseigner le contrôle de flux et la syntaxe de base pendant environ 8 semaines avant même de commencer à écrire du code. Leurs premiers programmes sont de petits correctifs pour modifier un peu le comportement.

Chacune de ces expériences a vu des améliorations massives dans l'intérêt initial des étudiants, le transfert de connaissances et la rétention jusqu'à l'obtention du diplôme. Certains sont plus appropriés pour certains environnements collégiaux que d'autres, mais si vous suivez la structure décrite dans le paragraphe ci-dessus, demandez-vous: «Vais-je rester pendant les deux premières années de ce programme?


Je suis d'accord avec vous en ce que nous devrions nous concentrer sur leur montrer ce qu'est la programmation et comment elle peut changer votre processus de pensée indépendamment de ce que vous faites ensuite. Bonnes pensées.
Beth Whitezel

2

Programmer, c'est instruire de manière logique de manière à obtenir la sortie souhaitée. En d'autres termes, il indique à l'ordinateur d'effectuer une tâche. La seule façon d'avancer est de pratiquer.

Tout comme pour apprendre l'anglais ou toute autre langue, vous devez commencer par apprendre la syntaxe (alphabet), puis passer à la grammaire et à d'autres constructions. Le temps requis varie en fonction de la complexité de la langue. Codant dans des langages de niveau supérieur comme SQL, Python est presque comme écrire en anglais.


2

Quelques aspects pourraient aider, je pense -

  • Des profs qui connaissent le monde réel moderne . S'ils sont capables de parler de la technologie actuelle et de la façon dont elle s'intègre dans les cadres théoriques, cela est beaucoup plus pertinent pour les étudiants de premier cycle ignorant l'histoire que les dissections de VAXen sans référence à la technologie actuelle.

  • Stages financés par le département. Si le ministère peut garantir au moins 2 étés de travail rémunéré avec des entreprises technologiques, il y a alors une grande incitation à rester.

Franchement, les étudiants en informatique moderne sont beaucoup plus bénis que ceux qui vivaient il y a encore 5 à 10 ans. La possibilité d'acheter un système bas de gamme, puis d'installer une machine virtuelle et d'apprendre gratuitement plusieurs langues, systèmes d'exploitation, etc., est un tel catalyseur, il est difficile de le surestimer.

Bien sûr, les personnes séminales comme Hopper et Knuth se sont enseignées sans les brillants. Le génie sortira.


Bien que l'idée soit géniale ... deux étés de stage rémunéré garanti ne sont malheureusement pas réalistes. Oui, il existe des stages rémunérés, mais la plupart des diplômés ont la chance d'en obtenir un dès maintenant et doivent souvent se contenter d'un salaire non rémunéré. Cela peut être différent dans d'autres États. Je pense que vous avez raison de dire qu'ils ont plus d'opportunités. Ils peuvent contribuer à de nombreux autres projets open source alors qu'il y a quelques années également.
Beth Whitezel

@BitOff: Je n'ai jamais entendu parler d'un stage CS non rémunéré.
Paul Nathan

Sans blague? Ce doit être alors une chose localisée.
Beth Whitezel

1

Créez une zone de préparation pour les étudiants potentiels qui réussissent en dehors de votre programme d'études afin d'atténuer les risques. Cela pourrait inclure le parrainage de classes AP CompSci dans les écoles secondaires locales pour séparer de manière préventive le blé de l'ivraie. Si cela s'avère trop difficile, essayez d'infiltrer les sections locales de DECA (ou créez-en une nouvelle) avec un programme orienté CS dans les divisions du lycée ou du collège. À l'inverse, vous montrerez aux étudiants en entrepreneuriat à la recherche de compétences en gestion, éventuellement avec un potentiel de CS non réalisé, une nouvelle voie pour répondre à leurs aspirations commerciales à travers votre milieu académique.


Oui, je suis tout à fait d'accord pour dire que nous devons faire plus pour introduire la CS à un âge plus précoce que l'université. Je sais que la plupart des lycées offrent un ou deux cours d'informatique avancés qui peuvent entrer dans un langage de programmation mais je ne pense pas que ce soit suffisant. J'ai souvent pensé que si vous pouviez enseigner une langue simple et adaptée aux enfants de la 4e à la 6e année, vous capteriez leur intérêt au bon âge. J'ai d'abord appris les bases quand j'avais 8 ou 9 ans et, même s'il m'a fallu encore une dizaine d'années pour vraiment m'y mettre, cela m'a laissé un excellent souvenir de "programmation".
Beth Whitezel

1

Je dirais que la clé est de comprendre différents niveaux de ces programmes:

Universités - C'est généralement là que l'on peut étudier juste pour le plaisir d'étudier. Dans ce cas, une norme très différente peut exister en termes de création de programmes et de les ajuster car cela peut être tout à fait théorique, ou du moins c'est ce dont je me souviens en étudiant l'informatique dans mes cours de dernière année.

Collèges - Ceux-ci ont tendance à être davantage axés sur la carrière, c'est là que le retour d'information de l'industrie et la connexion des entreprises avec les collèges est un point clé. L'examen des stages 6 à 12 mois après l'obtention du diplôme pourrait être une mesure utilisée pour voir dans quelle mesure les gens réussissent après l'obtention de leur diplôme, car la question clé est de savoir si quelqu'un a considéré son temps et son argent pour obtenir cette éducation comme utile. La mise à jour du programme sera probablement plus fréquente car les programmes ici peuvent être un peu plus courts, par exemple, les programmes universitaires de baccalauréat honorifique ont généralement duré 4 ans tandis qu'un programme de diplôme collégial peut durer de 18 à 24 mois. Ainsi, le défi consiste davantage à obtenir que cette partie ait des liens avec les entreprises afin que les gens puissent être exposés au travail et voir ce qui fonctionne ou ne fonctionne pas pour eux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.