Je suis un étudiant à l'Université de Floride du Sud qui est frustré par l'environnement éducatif du programme informatique. En ce moment, je prends "Program Design". Je devrais apprendre à organiser mon code source en fonctions et modules afin de rendre mes programmes lisibles et maintenables; au lieu de cela, j'apprends les tableaux et la récursivité en C. Le semestre prochain, je dois prendre "Object-Oriented Design", qui est enseigné par C ++ ( shudder .)
Il y a deux ans, je suis tombée amoureuse de la programmation et depuis, j'apprends autant que possible. La perspective de prendre une autre classe C ++ m'ennuie presque aux larmes. Pour cette raison, j'ai pensé créer un club de programmation afin de rencontrer des étudiants aussi ambitieux, d'apprendre de nouveaux langages, de discuter de sujets de développement logiciel et de travailler avec d'autres étudiants développeurs.
Cependant, je commence à réaliser qu'il n'y a peut-être pas d'autres étudiants qui partagent mon expérience de développement logiciel. Ce n'est pas à cause d'un manque de motivation mais d'un manque d'opportunités: je ne connais qu'une seule autre classe de programmation ("Langages de Programmation") et aucune classe sur le développement de logiciels réels. Tout le monde n'a qu'une expérience dans l'écriture de scripts triviaux en C et C ++.
J'ai réalisé que si je veux travailler avec d'autres développeurs de logiciels étudiants, je vais devoir les former moi-même. Maintenant, je prévois de faire du club un bootcamp de développement logiciel, enseignant aux membres comment développer des logiciels avec des outils et des langages modernes. De toute évidence, commencer un cours de développement logiciel non officiel est une tâche monumentale avec de nombreuses approches possibles. Ma question, cher lecteur, est
Quel est mon plan d'attaque?
Devrais-je
- donner des conférences au club moi-même, en essayant d'équilibrer le travail du club avec les devoirs?
- demander à la faculté CS d'enseigner sur des sujets relevant de leur expertise qui peuvent être moins que pertinents pour les membres?
- essayer de trouver un développeur sympathique et expérimenté à l'intérieur ou à l'extérieur de l'école qui peut partager ma charge de travail?
- montrer des conférences vidéo (de MIT OpenCourseWare , Google Tech Talks , etc.)?
- organiser des ateliers de programmation pratique?
- assigner des devoirs?
- faire autre chose?
la source
Réponses:
Franchement, toute votre attitude me préoccupe. Vous n'avez même pas réuni le groupe et vous supposez déjà que vous ne serez que celui qui aura des connaissances à transmettre et celui qui devrait décider de ce que le groupe fera.
Le meilleur pari est de rassembler le groupe initial et, en tant que groupe, de réfléchir à ce qu'il veut faire. Ce que vous voulez personnellement faire n'a pas d'importance en termes de ce que le groupe veut faire. Décider quoi faire sans la contribution des autres membres du groupe avant la première réunion, vous vous retrouverez comme un idiot arrogant avec lequel je ne voudrais pas travailler volontairement. Ainsi, vous tueriez le groupe avant qu'il ne démarre.
la source
Puisque tout le monde dans votre club vient volontairement, vous devez le rendre intéressant et motivant. Et les devoirs ne sont pas vraiment motivants.
Il est difficile d'enseigner à quelqu'un, mais pourquoi ne pas essayer d'enseigner de façon peu pratique avec un objectif à la fin? Essentiellement, au début, vous réunissez tout le monde et trouvez un projet de groupe et une langue. Le projet doit être intéressant et pouvoir montrer des progrès visibles mais pas trop dur. Une fois que vous avez cloué le langage, vous leur enseignez les bases (syntaxe, packages / espaces de noms, classes, typage statique / dynamique, etc.). Vous leur donnez ensuite des ressources (livres, didacticiels en ligne, documentation en ligne), un moyen facile de vous joindre et une partie spécifique du projet sur laquelle travailler. Chaque personne travaille ensuite sur le projet pendant son temps libre, consultant la documentation et vous au besoin.
Quel est l'avantage de ce processus?
La seule façon de voir si cela fonctionne est de l'essayer.
la source
En regardant l' organigramme du cours pour votre majeure , vous ne comprenez vraiment pas à quoi vous attendre dans les différentes classes d'une majeure en informatique.
Les cours dont vous parlez sont des cours d'introduction qui ont initié les élèves à divers concepts de base du codage. Il ressemble à "Programming Concepts" une introduction à la profession avec des aperçus d'une semaine de tous les domaines de base de l'informatique, sans codage réel. De là, c'est NORMAL d'avoir un cours d'introduction en C, et un autre cours d'introduction en C ++ est NORMAL pour une majeure en informatique. Vous venez peut-être dans le programme avec une certaine expérience de codage, mais la plupart des gens ne le sont pas. Le programme doit enseignerdes concepts comme la récursivité, et comment écrire des classes, et la surcharge d'opérateur, et des modèles et tout ça (sans parler de l'enseignement des variables, des boucles for, des instructions if, etc ...), donc il y a deux classes conçues pour vous apprendre à coder dans un langage de programmation. Et ils ont généralement le genre de noms trompeurs que font les cours de votre université. Les cours qui enseignent le niveau d'organisation que vous souhaitez sont généralement appelés «Génie logiciel» ou «Modèles de conception». Le premier est généralement une exigence, et le second est généralement un choix (peut-être au niveau des études supérieures), mais les deux peuvent être au choix.
Il y a un débat académique et industriel sur le point de savoir si le programme d'informatique se concentre autant sur l'organisation de logiciels que sur la question, si la majeure doit être réorganisée et si l'informatique et le génie logiciel sont des majors différentes, mais pour l'instant, votre programme d'informatique est NORMAL .
(Et accrochez-vous - dans un autre semestre ou deux, vous allez arriver à des classes plus difficiles que vous enseignent des choses que vous ne l' avez pas déjà enseigné vous.)
la source
Et les compétitions de programmation? Même quelque chose comme Perl Golf (ou PHP Golf), où des personnes (ou des équipes) travaillent pour résoudre un problème en utilisant le moins de code possible? C'est un excellent moyen d'en savoir plus sur les langues et les compétitions rendent toujours les choses intéressantes.
Bien sûr, vous devriez offrir plus que de simples compétitions, mais elles sont assez faciles à mettre en place et je les ai toujours appréciées.
la source
Vous avez raison, vous avez besoin d'une structure; vous voulez vous forcer vous-même et les autres à apprendre, et ne pas simplement vous contenter de bavarder sur les logiciels / râler sur la mauvaise sélection de cours. Mais je ne suis pas sûr de traiter cela comme une classe avec vous car son professeur est la voie à suivre; vous n'êtes pas encore un expert et vous êtes là pour apprendre quelque chose aussi.
Que diriez-vous d'organiser le club autour de projets logiciels? Pas certains programmes de devoirs de jouets, mais quelque chose que vous pensez pouvoir trouver utile. (Notez que "marginalement utile" se qualifie toujours comme "utile"; vous essayez d'apprendre par la pratique, pas trouvé de startup. :-)) Si le club a suffisamment de personnes pour plusieurs équipes, formez plusieurs équipes. L'équipe décide de la langue qu'elle souhaite utiliser, des spécifications, de la répartition du travail, etc., etc., et y travaille individuellement en son temps. Ensuite, lors de votre réunion hebdomadaire du club, vous discutez de la façon dont cela se passe en face, où se trouvent les obstacles, des trucs sympas que vous avez appris, etc.
J'aime aussi beaucoup l'idée de faire venir des conférenciers invités, qu'il s'agisse de professeurs, de professionnels ou de vidéos qui, selon vous ou quelqu'un d'autre, méritent d'être partagées. Vous pouvez donc organiser une réunion nocturne comme celle-ci:
Cela prendra une soirée et le remplira de bonté améliorant les connaissances. J'espère.
Quoi qu'il en soit, je vous souhaite bonne chance avec ce projet. Lorsque vous l'aurez décollé, j'espère que vous reviendrez ici et nous direz comment cela fonctionne.
la source
Le projet de groupe est une excellente idée. Surtout si le projet est quelque chose qui peut aider l'université ou vos camarades de classe.
J'ai rejoint un groupe au collège qui travaillait sur des projets pour les étudiants.
Le projet le plus populaire était une visite virtuelle à 360 degrés du campus.
Nous avons acheté l'équipement nécessaire et commencé à prendre des photos sur le campus. Ensuite, nous avons construit un site Web pour héberger la visite, trouvé l'hébergement et l'a présenté sur le site Web de l'université pour les étudiants potentiels. Ce projet s'est étendu sur plus que des tâches de programmation et a également intéressé les non-programmeurs.
Essayez d'identifier un nouveau site Web ou une nouvelle application que non seulement vous utiliseriez, mais que tout le monde sur le campus aimerait utiliser. Je pense que c'est plus facile et plus amusant d'apprendre si vous avez un objectif en tête.
la source
Si cela va être une activité parascolaire, ne faites pas les devoirs. C'est juste boiteux.
Vous pourriez probablement obtenir quelque chose de cool en démarrant simplement un groupe github et en affichant / envoyant des e-mails dans votre école (je suppose que les enfants utilisent aussi Facebook et Twitter de nos jours? Ce pourrait être une bonne idée de toucher ces points également). Lorsque vous obtenez un groupe de 5-6 personnes vraiment intéressées, décidez d'un projet et travaillez-y.
S'il n'y a aucun intérêt, il est assez ridiculement facile de rejoindre un projet open source si vous êtes raisonnablement qualifié. C'est aussi simple que de créer quelque chose qui vous intéresse chez github et de commencer à parler aux développeurs.
L'avantage que vous avez que la génération précédente n'a pas, c'est qu'il n'est pas difficile du tout de se connecter à des programmeurs à votre niveau et dans votre langue, tout en étant très géographiquement disparate. Et je ne veux pas simplement envoyer un e-mail. Skype / iChat / Ventrilo facilitent les conférences vocales, des outils comme git / mercurial (et les pages de projet associées en ligne) facilitent le codage en groupe, même si vous êtes de l'autre côté de l'Atlantique. Il n'y a vraiment aucune raison de ne pas coder socialement ces jours-ci, si c'est ce que vous voulez faire.
Enfin, ne prenez pas l'habitude de juger les gens en fonction des langues qu'ils connaissent / veulent connaître. C'est un piège facile à tomber lorsque vous êtes le seul Smalltalker dans un troupeau de personnes qui pensent que le C ++ représente la limite de la programmation, mais cela ne vous amènera pas beaucoup d'amis et cela vous donnera un parti pris contre certains outils. J'ai rencontré des hackers qui ont des milles d'avance en compétences et en expérience, qui ont utilisé LISP, Perl et C sur le même projet . Les personnes au sommet du tas de développeurs professionnels ne se soucient pas beaucoup du niveau de leurs outils tant qu'ils font le travail.
la source
Cela ressemble à une opportunité de réseautage, je suis sûr qu'il y a un certain nombre d'étudiants intéressés par une programmation avec un niveau d'expérience / de formation similaire ... vous ne les trouvez tout simplement pas ...
Avez-vous assisté à l'un des camps de code (formation gratuite pour les développeurs) dans la région de Tampa Bay, ou rejoint l'un des groupes d'utilisateurs de programmation locale?
Ces deux ressources vous offriront des opportunités de réseautage. Et au lieu de vous sentir obligé de former vos camarades, vous pourrez inviter vos amis avec vous et ensuite discuter de ce qui a été couvert.
Vous aurez également accès à des personnes qui envisagent une carrière et pourrez vous faire une idée des types de situations que vous risquez de rencontrer dans «le monde réel».
Une fois que vous avez exploré ces ressources locales, vous pouvez toujours constater que vous avez la possibilité de partager vos connaissances en faisant vos propres présentations, ce qui est formidable. Partager ce que vous avez appris avec un groupe d'utilisateurs ou en tant que conférencier d'une présentation de camp de code est un bon moyen d'obtenir des commentaires sur ce que vous avez appris et vous permet également d'en apprendre davantage.
J'ai grandi dans la région de Tampa Bay et assisté à de nombreux événements sponsorisés par Microsoft, votre groupe d'utilisateurs local devrait également avoir des informations sur la façon de s'impliquer dans ces événements.
Eh bien, ce fut une réponse de longue haleine ...
Le prochain Code Camp à Tampa aura lieu le 13 novembre 2010 selon le site Web de tampacodecamp.
Voici un lien vers votre groupe d'utilisateurs INETA / programmation local:
http://www.tampadev.org/
(Je suis nouveau dans ce groupe et je n'ai pu inclure qu'un seul lien.)
la source
Que diriez-vous de trouver un projet open-source (ou plus d'un) auquel votre groupe souhaite contribuer?
Je pense que le plus grand défi auquel vous serez probablement confronté est que même si l'écriture de code est amusante, c'est tout l'administrateur environnant, etc. Si vous pouvez trouver un projet open source existant, vous devriez au moins avoir une partie du cadre de support en place.
L'open source vous donnera de bonnes habitudes, et bien que vous soyez un peu mouillé derrière les oreilles par rapport à certains des contributeurs, vous aurez un avantage majeur sur les autres - vous serez tous au même endroit et en mesure de tenir des conversations avec les membres de votre équipe, ce qui est normalement l'une des plus grandes difficultés avec le travail communautaire open source ...
la source