On m'a proposé d'enseigner un nouveau programme de lycée TCS, qui nécessite la construction d'un curriculum. J'aimerais beaucoup entendre des opinions et des suggestions à ce sujet.
Premièrement, quelqu'un connaît-il des écoles secondaires où un programme TCS a été enseigné avec succès (ou sans succès)?
L'idée est un programme de 3 ans (10e-12e années, 16-18 ans), environ 8 heures hebdomadaires, pour des étudiants exceptionnels sélectionnés, ce qui signifie qu'il peut et doit être exigeant. Contrairement au programme "informatique" standard, ce programme ne doit pas se concentrer sur la programmation, mais plutôt sur des sujets sélectionnés dans CS, principalement dans TCS. Jusqu'à présent, les sujets que nous avons à l'esprit sont:
- Analyse asymptotique
- Structures et algorithmes de données de base (listes, tableaux)
- Algorithmes graphiques, également comme démonstration d'algorithmes gourmands vs programmation dynamique.
- Autres algorithmes (par exemple probabilistes)
- Calculabilité - le concept d'une MT, réduction, décidabilité.
- Complexité - NP, P, peut-être PSPACE et NL. Complétude.
- Théorie des automates
Fondamentalement, cela couvre la partie TCS des deux premières années d'un B.Sc en CS. Cependant, nous devons garder à l'esprit que ces élèves n'ont pas les bases mathématiques nécessaires pour la plupart de ce matériel. En particulier, des choses comme la théorie des ensembles, la combinatoire, la probabilité et l'artihmétique modulaire ne sont pas enseignées au lycée (malheureusement).
Pour résumer et poser des questions précises:
- Quelqu'un connaît-il un programme similaire quelque part?
- Y a-t-il des suggestions de sujets concrets / généraux qui, selon vous, peuvent et devraient être enseignés en plus / au lieu des sujets ci-dessus, tout en gardant le programme intéressant ainsi qu'important et directement pertinent (par exemple, la théorie de groupe est importante et intéressante, mais pas suffisamment pertinente) pour justifier le temps qu'il faudra)
- J'aurais été heureux d'introduire l'apprentissage automatique sous une forme ou une autre, car c'est un sujet vraiment brûlant de nos jours. Toutes les idées sur la façon dont l'apprentissage automatique peut être présenté sans outils tels que les théorèmes de mesure-concentration sont les bienvenues.
Réponses:
De nombreux pays organisent des écoles d'été pour leurs équipes IOI (composées d'élèves du secondaire âgés d'environ 16 ans de l'IIRC). Celui que nous avons en Iran avait l'habitude d'avoir les cours suivants:
Je pense que l'Association des professeurs d'informatique d'ACM a un programme K12 sur sa page Ressources pédagogiques, bien qu'il soit probablement beaucoup trop léger pour les adolescents talentueux.
Je pense que la programmation doit définitivement faire partie du curriculum. Python devrait être une bonne première langue à apprendre.
Vous voudrez peut-être également couvrir certains sujets accessibles avec des applications (la joie de créer quelque chose de cool peut avoir un grand effet sur leur intérêt). Je pense que le cours ML d'Andrew Ng sur Coursera devrait être accessible aux étudiants talentueux (spécialement pour ceux dans des pays comme le vôtre où il existe un programme de mathématiques K12 plus sérieux).
Un sujet non standard que vous voudrez peut-être considérer est la théorie des jeux combinatoires, ce n'est peut-être pas très intéressant avec 16 ans (je n'ai pas d'expérience), mais cela fonctionne assez bien pour les étudiants un peu plus jeunes de mon expérience.
Personnellement, je pense que le thème central et de connexion devrait être autour des algorithmes, je pense que cela fonctionnerait mieux que la théorie des automates comme thème central et sans doute la perspective algorithmique (pas les machines de Turing, les automates, etc.) est l' essence de l'informatique.
la source
Curieusement, il y a quelqu'un qui a fait valoir que l'apprentissage automatique est parfaitement adaptéparmi les sujets d'informatique à enseigner aux élèves du secondaire, car il est censé être l'un des rares sous-domaines où les mathématiques de base peuvent vous aider à comprendre suffisamment pour apprécier les défis importants. Je ne suis pas d'accord avec cette affirmation - les algorithmes de base (par exemple pour la recherche, le tri) peuvent être présentés comme des énigmes, et vous pouvez très rapidement passer à un état très simple à énoncer, mais des problèmes ouverts fondamentaux comme «la multiplication peut être effectuée avec essentiellement le même nombre d'opérations comme addition ", ou le tri d'entiers en temps linéaire, ou la factorisation (je suppose que le concept de nombres premiers ne serait pas nouveau pour le groupe restreint d'élèves du secondaire?). D'un autre côté, beaucoup d'apprentissage automatique serait difficile à saisir sans un bon niveau d'expérience en statistique et en théorie des probabilités. Cependant,
En termes de programme d'enseignement, il y en a un plus détaillé par Essinger et Rosen à Drexel.
En plus de cela, je pense que l'on peut tenter d'esquisser certaines des idées les plus avancées de la théorie de l'apprentissage:
Une autre suggestion est d'introduire des circuits et d'essayer une esquisse de la limite inférieure de Shannon. Cela dépend de la façon dont les élèves sont à l'aise avec le comptage. Si c'est trop lourd, cela pourrait tout de même aider à faire valoir l'argument tout en demandant aux élèves de compter eux-mêmes les circuits sur la foi. Je pense que l'idée de «la plupart des problèmes nécessitent de grands circuits car il y a trop de problèmes et trop peu de petits circuits» sera frappante. Cette idée est importante et omniprésente dans la complexité.
la source
voici une direction prometteuse pour aller dans ce sens. AP / NSF a récemment annoncé une nouvelle initiative du programme CS de placement avancé dans les écoles secondaires. il y aura de nombreux avantages à utiliser un tel programme, comme un plan de cours normalisé, l'accréditation d'un collège, etc.
il est en cours d'élaboration et devrait être prêt pour 2016. Le programme de cours provisoire et le matériel sont disponibles en ligne. (pour les experts universitaires, il pourrait même y avoir une possibilité à ce stade d'influencer le contenu futur via une collaboration de type «intelligence collective».)
le programme existant s'appelle AP Computer Science A et le nouveau programme s'appelle AP Computer Science Principles. la classe existante existe depuis de nombreuses années et est également utile en tant que modèle pour les enseignants développant un programme.
la source
Une idée que j'ai essayée récemment est de savoir comment enseigner aux étudiants HS la notion d'une réduction entre les problèmes. J'ai trouvé que c'était l'un des sujets les plus intéressants mais les plus difficiles quand j'ai été initié à la complexité, car il est assez difficile (au moins initialement) de se faire une idée du fait qu'un problème comme le 3-SAT est "tout aussi difficile" comme Vertex-Cover.
L'exemple que j'ai trouvé était une réduction entre Vertex Cover (VC) et Independent Set (IND-SET), formulée comme suit;
"Vous êtes le directeur d'un musée et vous êtes chargé d'embaucher des agents de sécurité pour garder les couloirs. Lorsqu'il est placé à une intersection de couloirs, un gardien peut surveiller TOUS les couloirs adjacents à lui. Quel est le nombre minimum de gardes nécessaires pour patrouiller l'ensemble du musée? "
"Un peu plus tard, certains enfants décident de jouer à cache-cache dans le musée. Leur objectif est de se cacher de sorte qu'aucun autre enfant ne puisse les voir. Cependant, les gardes ne veulent pas qu'ils courent dans le couloirs, donc ils sont relégués à "se cacher" dans les intersections. Quel est le plus grand nombre d'enfants qui peuvent se cacher dans le musée sans se voir? "
La raison pour laquelle j'ai choisi VC & IND-SET est qu'il n'est pas trop difficile de voir que les problèmes sont étroitement liés; chaque fois qu'il y a un ensemble indépendantS , il induit une couverture vertex V∖ S dans g .
la source