Je vais participer à une sorte de "journée portes ouvertes" dans mon université dans quelques semaines. Dans le cadre de cette période, je suis accompagné (avec un collègue) de tout un groupe d’étudiants du secondaire pendant deux heures, ainsi que d’un laboratoire informatique assez grand pour tout contenir, et je dois faire une sorte de activité ou un ensemble d'activités avec eux pour les encourager à faire de l'informatique (à mon université, idéalement, mais en général aussi). Je ne sais absolument pas quoi faire ici et j'accueille toutes les suggestions.
40
Réponses:
la source
Découvrez Computer Science Unplugged . De leur site:
la source
La plupart des étudiants en informatique que je connais considèrent l'apprentissage de la programmation comme la partie la plus pénible et la plus démoralisante de leur éducation. Je resterais donc à l'écart de tout ce qui concerne la programmation elle-même. Comme l'a déjà signalé scphantm , vous n'aurez probablement pas le temps pour cela.
Ce que vous cherchez, c'est un exercice de deux heures qui répond à deux objectifs:
Le premier objectif est assez indépendant de ce que vous allez réellement montrer et a beaucoup plus à voir avec le fait d'être un bon enseignant / présentateur. Bonne pratique didactique, c'est-à-dire garder votre public sur pied, le laisser essayer de petites choses en groupe, lui donner une respiration toutes les 15 minutes, etc.
Le deuxième objectif est un peu délicat, et ce qui, à mon avis, fonctionne le mieux ici est de prendre un problème qui peut être expliqué avec leurs connaissances actuelles, de montrer comment vous pouvez décrire la solution de manière algorithmique, puis de montrer comment cette solution peut être analysée. et amélioré.
Un bon exemple est le problème de chemin le plus court dans les graphiques, également appelé système de navigation GPS. Aucune explication nécessaire. Vous pouvez leur donner une petite carte avec des poids / longueur des bords dessinés et un groupe de crayons pour exécuter réellement l'algorithme tel que vous le décrivez.
Vous pouvez ensuite entamer une discussion sur la manière de trouver le chemin le plus court, et ainsi de suite, laissez-les essayer de le formuler sous forme d'algorithme, etc. Vous décrivez ensuite l'algorithme de Dijkstra , leur permettant de colorer les nœuds comme étant visités , provisoires et ensembles non visités . Bam. Vous avez un algorithme!
la source
Si vous avez seulement 2 heures, vous n'allez pas faire beaucoup de codage. Juste apprendre la syntaxe sera difficile à cette époque, mais il y a beaucoup de choses qui peuvent être faites à la place.
À titre de suggestion, essayez de leur enseigner le contrôle des flux et l’importance d’être spécifique:
En guise d'exemple, configurez des bacs de billes de couleurs différentes, avec des bandes de papier de couleur correspondante ailleurs et suffisamment de petits seaux pour chaque paire robot / programmeur. La tâche consiste à obliger le robot à remplir le seau avec des billes. Toutefois, il ne peut prendre que des billes correspondant à une bande de papier spécifique. S'il n'y a plus de balles de cette couleur dans une baignoire, le robot doit alors rendre sa bande de papier et en ramasser une nouvelle.
Cette tâche nécessite un branchement conditionnel, la mise en boucle, la gestion des erreurs et une réflexion continue. Tout ce qu'un programmeur doit bien maîtriser, quelle que soit la langue ou l'activité.
Exécutez quelque chose comme ça deux fois pour que les "robots" et les "programmeurs" puissent échanger. Entre les deux, donnez une petite leçon sur les schémas de pensée ci-dessus, et ils performeront beaucoup mieux dans la seconde, puis clôturez avec une petite discussion sur les grands événements de la programmation - vaincre les nazis, aller sur la lune, Internet et vous aurez une salle de programmeurs potentiels et engagés!
la source
J'ai formé de nombreux programmeurs. Si tout ce que vous avez est de 2 heures, ne vous embêtez pas pour leur apprendre à coder. Le laboratoire informatique est également inutile. Pour passer de zéro à hello world, vous perdrez la moitié de la classe et consacrerez 45 heures sur 2 aux problèmes de bugs sans que rien ne soit fait.
Vous aurez peut-être plus de chance en leur montrant ce que c'est que de penser comme un programmeur. Donnez à chacun d'eux un bloc de papier et un stylo et dites-leur de rédiger un programme dans leur propre langue sur la façon de prendre leur téléphone portable sur le bureau et de passer un appel. Traversez leurs réponses. Si votre code vous intéresse, vous pouvez parcourir leurs programmes et leur dire comment les améliorer et comment gérer les détails dont vous avez besoin. Puis, demandez-leur d’écrire un programme avec leurs propres mots pour faire autre chose de banal. mets ton pantalon, lave-toi les dents, ouvre une porte, peu importe. Faites la même chose avec ce programme.
Donnez-leur un avant-goût de ce que c'est de penser comme un programmeur. Ils en tireront certainement plus que d'essayer de leur enseigner le python en 2 heures.
la source
Vous pourriez essayer Alice . C'est un IDE et une API pour l'animation 3D. Il contient toutes sortes d'objets intégrés (lapins, extraterrestres, arbres, bâtiments, ...) que vous pouvez placer dans une scène initiale, avec des méthodes de très haut niveau: comme
walk(north)
(qui anime les bras et les jambes pendant que le personnage bouge) etsay("my name is Winky")
qui pourrait faire sortir une bulle de bande dessinée de la bouche des personnages.Il vous permet de raccrocher des événements clavier et souris afin de pouvoir effectuer des tâches interactives.
Le langage de programmation sous-jacent est Java, mais l'EDI vous propose une variante graphique dans laquelle vous faites glisser des parties d'expressions dans une fenêtre d'éditeur. (Cela ne vous laissera pas créer une erreur de syntaxe.)
Je pense que vous pourriez tout organiser avec une scène de sorte qu'une personne sans expérience en programmation puisse faire quelque chose d'intéressant en seulement quelques heures.
la source
Le codage, même dans un langage de jouet ou graphique, semble exagéré en une heure. Bon sang, je ne suis pas sûr de pouvoir reprendre Alice et faire quelque chose qui vaille la peine en 2 heures. Peut-être un week-end, mais pas 2 heures.
Je suggérerais de résumer le CS à l'essentiel: résolution de problèmes et analyse. Divisez le groupe en équipes. Prenez 10 minutes pour décrire quelques problèmes de calcul de haut niveau. Ce sont des problèmes faciles qui peuvent être facilement expliqués à des personnes ayant peu de connaissances en mathématiques ou en CS. Les exemples comprennent:
Prenez encore 10 minutes pour poursuivre la discussion et expliquer la tâche. Chaque groupe se voit attribuer un problème pour lequel il doit trouver des solutions. L’équipe disposera d’une demi-heure pour trouver, en collaboration, une ou plusieurs solutions au problème qui leur est attribué. Ensuite, prenez une heure pour examiner les solutions de l’ensemble du groupe et laissez les enfants savoir s’ils travaillent ou non, s’il existe un moyen plus rapide ou meilleur de résoudre le problème, etc.
Si les enfants n'atteignent pas une solution correcte / optimale, ce n'est pas grave. Ne vous contentez pas de donner les réponses, c'est absolument essentiel. La raison pour laquelle les enfants ne font plus de STEM, c'est parce que les éducateurs leur donnent l'impression que tout est déjà prévu. Il faudra des conseillers très mûrs pour permettre aux enfants d’essayer de résoudre ces problèmes et de réussir ou d’échouer seuls. Obtenir la bonne réponse n'est pas la question. Il s’agit de donner aux enfants d’intéressants problèmes et de leur montrer en quoi consiste l’informatique: résoudre les problèmes et évaluer les solutions pour les corriger et les rendre plus efficaces. Laisser les enfants trouver leurs propres réponses leur donnera un sentiment d'appartenance et les aidera à se sentir engagés.
Bien sûr, si les enfants demandent s'ils ont la réponse correcte / bonne / la plus connue, dites-leur la vérité. Mais ne donnez pas simplement les réponses, sauf si elles sont abordées de manière organique à la suite de discussions sur les solutions des étudiants. Résumer:
la source
J'ai 17 ans maintenant et j'ai commencé à programmer à peu près à l'âge de 16 ans. Je vais raconter mon histoire et faire quelques suggestions: Mon intérêt pour la programmation a commencé lorsque je regardais un informaticien que j'appelais avec des registres et une invite de commande ( même s'il voulait 500 $ pour réparer mes BSOD et que je ne payais pas, je les ai réparés moi-même). J'ai donc cherché dans Google "langage d'invite de commande" et découvert qu'il y avait quelque chose appelé "code source" et qu'il vous permettait de programmer . À l'époque, je ne savais pas ce que c ++ était, je ne pense même pas en avoir entendu parler. Je suis donc allé sur cpp.com (de très mauvais tutoriels, vous apprendrez des pratiques mauvaises et obsolètes) et j'ai commencé à apprendre les bases. Mon esprit est devenu fou et j'ai en fait appris que le virus par lequel j'étais infecté était écrit en c ++, ce qui m'intéressait davantage. J'ai ensuite commencé à lire, à apprendre l'assemblage et d'autres langages de haut niveau. J'ai commencé par vouloir apprendre sur les logiciels malveillants et la programmation graphique, et c'est ce que j'ai fait.
Lego Mindstorms est une excellente idée. Si vous ne voulez pas emprunter le long chemin et utiliser un langage majeur, il est livré avec un langage de programmation de style bloc que vous pouvez utiliser. J'ai compris la langue en environ 30 à 40 minutes, tout s'aligne quand on y pense
Vous pouvez rapidement développer une application et la montrer, leur parler des revenus pouvant découler du développement d'applications.
la source
certains de mes favoris
générer des fractales . ils ont un lien étroit avec les mathématiques profondes et l’infographie, et sont naturellement adaptés au parallélisme. il illustre la complexité et les comportements émergents , en particulier lorsque vous zoomez sur des échelles arbitraires, et a des liens étroits avec la science et les phénomènes naturels. il n'est pas difficile d'écrire du code fractal parallèle s'exécutant sur plusieurs machines. une des expériences consiste à afficher sur chaque machine les lignes aléatoires qu’elle a traitées (par exemple, les machines "esclaves" qui traitent les lignes d’une file), puis sur une machine centrale, d’afficher les résultats combinés.
robotique lego (ou autres kits de robotique, par exemple un tampon ). mindstorms est un jouet, mais il peut être très avancé et servir de démonstration tangible de concepts abstraits. le logiciel qui peut être exécuté sur eux peut être très complexe, et ils peuvent avoir des boucles / algorithmes complexes sens-penser-agir. il y a beaucoup de bons livres de constructions. les résolveurs de cube Rubiks , qui ont récemment battu le record du monde, sont également impressionnants .
Raspberry Pi est une nouvelle plate-forme peu coûteuse qui suscite beaucoup d’intérêt et d’utilisation. il peut être utilisé pour illustrer la programmation Linux, la robotique, etc., et possède une sortie HD, etc. Voir par exemple le supercalculateur Southhampton Raspberry Pi avec un rack Lego.
Le logo mentionné dans l'autre réponse est un vieux classique. Un autre angle plus récent est la programmation de jeux, par exemple avec un nouveau langage populaire émergent appelé Scratch (inventé au MIT ). il peut enseigner de nombreux sujets de CS naturels / avancés.
la source
Heres un autre angle. il y a tellement de problèmes ouverts intéressants ou de technologies émergentes en informatique aux frontières de la compréhension scientifique qui peuvent éveiller la curiosité / émerveillement, c'est-à-dire l'exploration de la terra incognita à proximité . si vous soulevez les problèmes et demandez ensuite à la classe de participer à une discussion sur les ramifications des solutions, cela peut susciter un intérêt / une inspiration significatif. [Étant donné que vous mentionnez la disponibilité du laboratoire informatique, il serait également possible de concevoir de manière créative des exercices pratiques sur ordinateur liés à ces domaines.]
Cela peut prendre un sens de la science-fiction, mais dans CS comme aucun autre domaine, il transforme ce qui était autrefois scifi dans la réalité en peu de temps. ils peuvent également être controversés et opportuns, en lien avec les gros titres d'aujourd'hui et les étudiants peuvent commencer à comprendre à quel point la société civile est omniprésente dans notre monde / société et à quel point elle est significative lorsqu'elle est interprétée de manière large. en voici quelques unes:
ADN au problème de repliement des protéines . Existe-t-il un algorithme pour le calculer avec précision?
intelligence artificielle en général. c'est possible? y at-il une éthique impliquée?
la robotique a divers domaines émergents clés. par exemple autos / conduite autonomes . son à l'horizon proche. Comment cela affectera-t-il la société? La vidéo du concours DARPA d'il y a peu de temps est impressionnante. Kurzweil a beaucoup à écrire dans ses écrits. Les drones sont un sujet compliqué, rarement discuté ouvertement et seront de plus en plus utilisés au pays. les rovers mars sont une technologie extraordinaire et il y a des histoires étonnantes derrière, comme par exemple comment les systèmes devaient être débogués à distance - de manière inter -planétaire en cas d'échec.
Les systèmes de surveillance basés sur les technologies de l'information pour détecter le crime / le terrorisme font beaucoup parler de nous ces derniers temps.
le boson de Higgs n'aurait pas pu être découvert et le supercollider ne pourrait pas fonctionner du tout sans les grands systèmes d'analyse du "big data" basés sur CS.
La loi de Moore . Jusqu'où ira-t-il? à quel point a-t-il déjà affecté la société / l'humanité?
Ordinateurs quantiques . sont-ils possibles? seront-ils plus rapides? seront-ils lowcost ou toujours unweildy? Dwave est une étude de cas colorée, il y a un excellent article de SciAm par Aaronson, etc.
L'algorithme de pagerank de Google est l'une des merveilles de l'informatique moderne multimilliardaire. sera-t-il prolongé? Comment fonctionne le filtrage anti-spam? l'entreprise semble s'orienter vers l'analyse d'images, etc.
le trading algorithmique / haute fréquence déplace maintenant des quantités massives de volume / valeur de trading. est-ce bien / mal? est-ce qu'il augmente / diminue? sera-t-il réglementé à l'avenir? quel genre de course aux armements informatique est impliqué?
Les superordinateurs sont énormes, ils résolvent des problèmes incroyables et s'agrandissent. Y a-t-il des limites? Que calculent-ils et que vont-ils calculer à l'avenir? un peu lié, Big Data et datamining .
Les sites de réseaux sociaux ont eu d’énormes conséquences en moins d’une décennie de croissance. ils contribuent à alimenter les soulèvements populaires, par exemple le printemps arabe et Occupy wall st . quel est leur avenir?
la source
J'ai une proposition qui
Nous avons organisé de petits ateliers sur le démineur avec des lycéens . L'atelier ressemblerait à peu près à ceci:
Jouons un peu au jeu (la plupart le savent).
Qu'est-ce qu'on vient de faire? Quel est le problème que nous essayons de résoudre? Peut-on formuler des règles générales?
Cela prendra généralement un certain temps. Les enfants ne sont pas habitués à formuler des problèmes d’entrée et de sortie, pas de règles générales pour les résoudre. Ceux qui ont déjà programmé apprécieront l'effort; référencer "code spaghetti" peut aider. Néanmoins, les règles seront simples la plupart du temps, en ne considérant qu'une cellule à la fois.
Exposer des problèmes avec les règles.
À ce stade, vous souhaitez introduire un simulateur Démineur . Celui de Bayer, Snyder et Chouiery n’est pas parfait mais vous permet d’exposer des scénarios conçus avec soin.
Améliorez le jeu de règles pour couvrir plus de scénarios.
Cela incitera généralement les étudiants à étudier de plus en plus de cellules ensemble. Vous pouvez également les inciter à adopter des approches «tout résoudre», telles que l’expression de l’information disponible sous forme de système d’équation linéaire - cela se produit si vous essayez d’exprimer l’information disponible en termes mathématiques. Les étudiants savent déjà comment résoudre de tels systèmes!
Notez les limites.
Premièrement, il existe des scénarios sans solution (déterministe). De plus, nous pouvons opposer la force brute à nos stratégies développées. Pouvons-nous faire un compromis entre vitesse et puissance? Si l’approche par système d’équation se révèle, notez que nous ne pouvons résoudre ce problème efficacement que sur le réel, mais nous avons besoin de réponses binaires. Il n’est pas trop difficile de construire des scénarios qui conduisent à des durées d’exécution (nous avons utilisé l’algèbre informatisée pour illustrer).
Selon le groupe, cette approche permet de couvrir de manière naturelle de multiples principes de l'informatique: la définition de problèmes, la description d'algorithmes généraux, la résolution de problèmes itérative ainsi que des problèmes de calcul et de complexité peuvent tous être abordés.
Les réactions des étudiants ont été globalement positives. ils se sentent impliqués et expriment leur intérêt pour les concepts. Il est important de les laisser faire le gros du travail, en les guidant avec précaution dans la direction souhaitée en leur posant des questions pointues.
la source
vous avez beaucoup de choses à faire ... mais une chose qui semble si excitante, "présentez la question" P ≠ NP "et le prix du septième millénaire. Quand j'étais au collège, je lisais je ne connaissais pas les notations la seule chose que je comprenne: il y a un gros prix et une question! d'autres choses seraient présenter le lien entre les mathématiques et l'informatique comme: résoudre des équations, vérifier des solutions en utilisant des ordinateurs.
Je suggère également de présenter Alan Turing "le père de l'informatique" et de raconter son histoire. la dernière chose que je suggère est la preuve de connaissance zéro et le jeu "où est waldo?" et jouer sans tricherie et sans cryptographie ni cyberattaques.
la source
Faites n'importe quoi avec facebook, ils adorent ça. C’est peut-être trop difficile pour les débutants, mais vous pouvez les laisser dessiner des graphiques de liaisons qui montrent comment leurs profils sont reliés les uns aux autres. Je recommanderais Javascript comme langage de programmation.
la source