JavaScool:Faq : Différence entre versions
m (→Mais pourquoi apprendre des choses aussi «débilisantes» qu'imprimer «Hello World» ? Pourquoi ne pas attaquer des sujets mathématiquement plus profonds !.) |
m (→Quelle version de Java faut il ? Faut il autre chose ?) |
||
(70 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 5 : | Ligne 5 : | ||
== A propos de l'enseignement de l'informatique. == | == A propos de l'enseignement de l'informatique. == | ||
− | === Quels sont les liens avec les cours | + | === Quels sont les liens avec les cours sur les sciences informatiques ?. === |
− | Ils sont multiples: [http://fr.wikipedia.org/wiki/ | + | Ils sont multiples: [http://fr.wikipedia.org/wiki/Gérard_Berry Gérard Berry] avec [http://www-roc.inria.fr/who/Gilles.Dowek Gilles Dowek] sont des initiateurs (et de bienveillants conseillers) des contenus disponibles sur [http://www.canal-u.tv/producteurs/fuscia/%28onglet%29/collections/%28id%29/217136 CanalU/fuscia], tout particulièrement sur ce qu'est l' [http://interstices.info/reflet-numerique information] et sur les ingrédients des [http://interstices.info/ingredients-algorithmes algorithmes]. |
− | + | Le cours au [http://www.college-de-france.fr/default/EN/all/inn_tec2007 Collège de France] ( [http://www.college-de-france.fr/default/EN/all/inn_tec2007/lecon_inaugurale_.htm vidéo], [http://www.college-de-france.fr/audio/berry/berry-20080117.mp3 audio] [http://www.college-de-france.fr/media/inn_tec2007/UPL13472_Le_on_inaugurale_G_rard_Berry.pdf support visuel ]) reste une très belle introduction. | |
− | + | === Y a-t-il un manuel avec toutes les constructions et instructions ?. === | |
− | |||
− | === Y a t | ||
Bien entenu ce ``manuel´´ existe à la fois: | Bien entenu ce ``manuel´´ existe à la fois: | ||
− | * Pour ce qui est utilisé dans le cadre de <tt>[http://javascool.gforge.inria.fr/ Java'sCool]</tt> | + | * Pour ce qui est utilisé dans le cadre de <tt>[http://javascool.gforge.inria.fr/ Java'sCool]</tt> il est donné dans la documentation intérieure au logiciel. |
* Au niveau du langage Java, par exemple [http://www.eteks.com/coursjava/tdm.html celui-ci], pour se limiter à un document francophone, il explique: | * Au niveau du langage Java, par exemple [http://www.eteks.com/coursjava/tdm.html celui-ci], pour se limiter à un document francophone, il explique: | ||
Ligne 24 : | Ligne 22 : | ||
** les [http://www.eteks.com/coursjava/objetstab.html#Tableaux tableaux] (qui ne sont pas abordés ici) mais cela va bien au delà du programme de 2nd sur ces sujets ! | ** les [http://www.eteks.com/coursjava/objetstab.html#Tableaux tableaux] (qui ne sont pas abordés ici) mais cela va bien au delà du programme de 2nd sur ces sujets ! | ||
− | * Au niveau des fonctions proposées dans les excercices se sont . . tous les [http://java.sun.com/javase/6/docs/api/overview-summary.html objets Java] qui peuvent être utilisés (!) en plus des fonctions définies pour chaque proglet | + | * Au niveau des fonctions proposées dans les excercices se sont . . tous les [http://java.sun.com/javase/6/docs/api/overview-summary.html objets Java] qui peuvent être utilisés (!) en plus des fonctions définies pour chaque proglet. |
+ | |||
+ | * Et un peu d'humour : [http://www.datamation.com/news/tech-comics-geeks-and-the-manual-1.html geeks and the manual] | ||
=== Peut-on consulter un ``vrai´´ cours d'algorithmique ?. === | === Peut-on consulter un ``vrai´´ cours d'algorithmique ?. === | ||
− | + | * Il y un cours de science informatique avec des chapitres selon les grands domaines de l'algorithmique: calcul numérique, manipulation de graphes, optimisation et recherche opérationnelle, automatique et contrôle de système, mesures et statistiques, etc.. Ce sont les ''fondements de la programmation'' | |
+ | ** [http://wiki.inria.fr/sciencinfolycee/Introduction_%C3%A0_la_Science_Informatique Introduction à la science informatique] | ||
− | * | + | * De très bons cours existent en ligne, pour se limiter à quelques documents francophones: |
− | |||
** les documents d')i(nterstices sur [http://interstices.info/jcms/c_5389/algorithmes les algorithmes] avec une bonne [http://interstices.info/algo introduction] et une [http://interstices.info/algo-mode-emploi discussion] sur la théorie, ainsi qu'une description des [http://interstices.info/ingredients-algorithmes ingrédients des algorithmes]. | ** les documents d')i(nterstices sur [http://interstices.info/jcms/c_5389/algorithmes les algorithmes] avec une bonne [http://interstices.info/algo introduction] et une [http://interstices.info/algo-mode-emploi discussion] sur la théorie, ainsi qu'une description des [http://interstices.info/ingredients-algorithmes ingrédients des algorithmes]. | ||
** Le [http://www.pise.info/algo/codage.htm cours] de l'université Paris VII, orienté ``programmation´´. | ** Le [http://www.pise.info/algo/codage.htm cours] de l'université Paris VII, orienté ``programmation´´. | ||
− | ** | + | |
+ | * Surtout nous avons un [http://science-info-lycee.fr SIL:O] de ressources en lignes à disposition. | ||
+ | |||
+ | === Dans quel cadre pédagogique se positionne JavaSccol ? === | ||
+ | |||
+ | * Quelques notes de [[JavaScool:Cadrage|réflexions]] sur ce sujet ont été proposées. | ||
+ | |||
+ | === Mais . .est-il besoin de savoir programmer pour comprendre les fondements de l'informatique ? === | ||
+ | |||
+ | * Cet [http://www.epi.asso.fr/revue/articles/a1012b.htm article collectif] essaye d'y répondre. | ||
+ | |||
+ | * Et un peu d'humour : [http://www.datamation.com/cnews/article.php/3832671/Tech-Comics-The-Art-of-Programming.htm The Art of Programming] | ||
+ | |||
+ | === Quels est le lien de JavaScool avec les programmes officiels ? === | ||
+ | |||
+ | * Les éléments d'analyse sont [[JavaScool:InfoAuLycee|détaillés ici]]. | ||
=== Je suis professeur et j'ai plusieurs idées de sujets, comment aider et se faire aider ? === | === Je suis professeur et j'ai plusieurs idées de sujets, comment aider et se faire aider ? === | ||
− | Facilement ! Plus de 20% de nos contenus ont été crées ou initiés par des professeurs des lycées. | + | Facilement ! Plus de 20% de nos contenus ont été crées ou initiés par des professeurs des lycées. |
− | Toutes les informations et éléments sont [ | + | Toutes les informations et éléments sont [http://javascool.gforge.inria.fr/v4//?page=run&action=licence librement utilisables], tandis que la méthodes est simple: il suffit de nous [http://javascool.gforge.inria.fr/?page=contact contacter]. |
+ | |||
+ | === Mais pourquoi apprendre des choses aussi «débilisantes» qu'imprimer «Hello World» ? Pourquoi ne pas attaquer des sujets mathématiquement plus profonds ! === | ||
+ | |||
+ | C'est une vraie question, et il y a quatre réponse à cette question: | ||
+ | |||
+ | # ''Pas si débilisant que ça:'' les points clé du cours ont été proposés par un professeur d'informatique à l'Ecole Polytechnique et un membre de l'Académie des Sciences (il faut évidemment dépasser la leçon 1 pour le mesurer). Dès la leçon 2 du parcours de formation des mécanismes d'abstraction non triviaux sont abordés ''par l'exemple'', en expérimentant d'abord ces mécanismes, pour permettre à l'enseignant d'en expliciter le fondement. | ||
+ | # ''Pour '''tou(te)s''' les élèves de 2nd:'' cet apprentissage ne cible pas ''uniquement'' les jeunes qui iront vers les sections scientifiques, mais vise bien ''tou(te)s'' les futurs citoyens qui vont devoir maîtriser, sans subir, la société numérique où nous vivons aujourd'hui. En profitant ici du fait que les fondement de l'informatique s'appréhendent par des mécanismes de pensée qui ne se limitent pas aux maths enseignées de la 2nd à la terminale. | ||
+ | # ''Ces sujets mathématiques existent:'' Tous les enseignants de mathématiques disposent ''aussi'' d'exercices de programmation liés au programme de 2nd. Cela requière évidemment les bases de programmation de type «Hello World», pour que l'élève maîtrise les mécanismes algorithmiques fondamentaux avant. Au delà du programme, il faut aussi mentionner des mathématiques passionnantes, spécifiques de l'informatique, ébauchées [http://www.loria.fr/%7Evthierry/cours/information-theories.pdf ici] et détaillées dans l'excellent livre ''Information, complexité et hasard'' de Jean-Paul Delahaye. | ||
+ | # ''Et surtout, il y a effectivement une limite à l'exercice'' d'apprendre l'informatique en mathématique ou physique/chimie alors que c'est de fait une [http://www.epi.asso.fr/revue/articles/a0809d.htm discipline à part entière]. | ||
+ | |||
+ | == Et au delà de JavaScool ?. == | ||
+ | |||
+ | Nous avons référencé à la fois d'autres [[JavaScool:Ailleurs|outils logiciels]] pour apprendre l'informatique et aussi d'autres [[JavaScool:AutresInitiatives|initiatives périscolaires]] qui peuvent fournir des ressources au niveau de l'enseignement. | ||
+ | |||
+ | Tout est évidemment recensé dans le [http://science-info-lycee.fr «SIL:O!»] sur sciences-info-lycee.fr. | ||
+ | |||
+ | == A propos de l'utilisation de JavaScool. == | ||
+ | |||
+ | === Pourquoi le peu pédagogique chaîne1.equals(chaîne2) pour l'égalité de deux chaînes ? === | ||
+ | |||
+ | * Le «==» ne pourrait-il pas être remplacé par equal lors de la traduction de JVS en Java ? | ||
+ | |||
+ | * Non car cela reviendrait à la sématique du langage puisque <tt>s1 == s2</tt> signifie les deux chaînes sont ''égales et au même endroit de la mémoire''; on aurait alors une sémantique divergente par rapport au java et par rapport aux autres objets | ||
+ | |||
+ | * Il a a aussi été proposé <tt>s1 === s2</tt> mais cela va à l'encontre de son sens dans d'autres langages | ||
+ | |||
+ | === Quelle version de Java faut il ? Faut il autre chose ? === | ||
+ | |||
+ | * Une version "récente" de Java (en 1.6). Java est presque toujours installé par défaut. | ||
+ | |||
+ | * Il ne faut rien de plus . . | ||
+ | ** Sauf pour le 3D pour de la proglet «EnVoiture» (qui utilise OpenGL) il faut copier les librairies dynamiques [http://javascool.gforge.inria.fr/documents/sketchbook/enVoiture/opengl-windows.zip disponibles ici] dans le répertoire Java de la machine, c'est à dire, normalement Program Files/java/jre6/bin. Se faire aider du responsable informatique si besoin. | ||
− | + | Avec de trop anciennes versions de Java l'application ne marche pas. Dans tous les cas, il faut vraiment upgrader le système car beaucoup d'applets du web ne marchent sûrement pas non plus. | |
− | + | === Comment passer d'un programme Java à un programme JavaScool === | |
− | |||
− | + | C'est très facile il faut: | |
+ | * Mettre tous les éléments de votre projet Java dans un seul fichier | ||
+ | * Sortir la méthode ''public static void main(String[] args)'' et utiliser une simple méthode ''void main() { }'' | ||
+ | * Noter qu'il n'y a pas besoin d'encapsuler le code dans une classe au niveau de JavaScool | ||
− | < | + | Par exemple d'un fichier ''Main.java'' et ''Classe.java'' avec :<html><pre> |
+ | class Main { | ||
+ | public static void main(String[] args) { | ||
+ | new Classe().run(); | ||
+ | } | ||
+ | }</pre></html> dans l'un et dans l'autre :<html><pre> | ||
+ | public class Classe { | ||
+ | public void run() { | ||
+ | System.out.println("Ma class runs, c'est la classe !"); | ||
+ | } | ||
+ | }</pre></html> il faut mettre dans le fichier JavaScool :<html><pre> | ||
+ | void main() { | ||
+ | new Classe().run(); | ||
+ | } | ||
+ | public class Classe { | ||
+ | public void run() { | ||
+ | System.out.println("Ma class runs, c'est la classe !"); | ||
+ | } | ||
+ | }</pre></html> | ||
− | + | === Comment passer d'un programme JavaScool à un programme Java externe === | |
− | |||
− | |||
− | |||
− | + | C'est très facile il faut: | |
+ | * Copier le contenu du fichier JavaScool dans un fichier de nom, disons, ''Main.java'' | ||
+ | * Renommer la méthode ''void main() { }'' en ''public static void main(String[] args)'' | ||
+ | * Ajouter tous les import static listés ci dessous | ||
+ | * Mettre le Jar ''javascool-proglets.jar'' dans le CLASS-PATH | ||
+ | * Utiliser un autre outil de développement Java | ||
− | { | + | Par exemple d'un fichier ''main.jvs'':<html><pre> |
− | + | void main() { | |
− | < | + | println("Hello world"); |
− | + | }</pre></html> il faut créer un ''Main.java'' :<html><pre> | |
+ | import static java.lang.Math.*; | ||
+ | import static org.javascool.macros.Macros.*; | ||
+ | import static org.javascool.macros.Stdin.*; | ||
+ | import static org.javascool.macros.Stdout.*; | ||
+ | public class Main { | ||
+ | public static void main(String[] args) { | ||
+ | println("Hello world"); | ||
+ | |||
+ | } | ||
+ | }</pre></html>puis utiliser les commandes<html><pre> | ||
+ | javac -cp javascool-proglets.jar Main.java | ||
+ | java -cp .:javascool-proglets.jar Main</pre></html> | ||
+ | et le tour est joué. | ||
− | + | Pour utiliser une proglet, c'est un peu plus compliqué, prenons l'exemple de ''codagePixels'':<html><pre> | |
+ | import static java.lang.Math.*; | ||
+ | import static org.javascool.macros.Macros.*; | ||
+ | import static org.javascool.macros.Stdin.*; | ||
+ | import static org.javascool.macros.Stdout.*; | ||
+ | import static org.javascool.proglets.codagePixels.Functions.*; | ||
+ | public class Main { | ||
+ | public static void main(String[] args) { | ||
+ | // Commande qui permet d'ouvrir la proglet | ||
+ | new org.javascool.widgets.MainFrame().reset("codagePixels", 600, 800, | ||
+ | org.javascool.core.ProgletEngine.getInstance(). | ||
+ | setProglet("codagePixels").getProgletPane()); | ||
+ | // Ici vient le code d'utilisation | ||
+ | }</pre></html> | ||
− | + | Les entrées se font dans les "popup" et les sorties à la console. On peut aussi accéder à la console "graphique" via: <html><pre>javax.swing.JPanel jconsole = org.javascool.widgets.Console.getInstance();</pre></html> mais il faut alors reconstruire une interface graphique à façon. | |
− | |||
− | < | ||
− | |||
− | + | === Quels sont les autres outils d'initiation à la programmation ? === | |
− | + | Bien entendu, [http://javascool.gforge.inria.fr<tt>JavaScool</tt>] n'est pas le seul outil proposé pour les professeur(e)s des lycées au niveau de l'enseignement de l'algorithmique, donc de ''l'informatique'' au lycée. Voici quelques autres très [[JavaScool:Ailleurs|beaux exemples d'outils]] au bout de ce clic. | |
− | |||
− | < | ||
− | |||
− | + | === Pourquoi JavaScool n'a pas de lanceurs .exe ou .app etc.. ? === | |
− | |||
− | |||
− | + | Parce qu'il n'y a pas besoin !!! En se limitant à un fichier .jar on garanti de | |
+ | # pouvoir tourner sur quasiment toutes les machines dès que java est installé | ||
+ | # ne pas ''pertuber'' l'installation de l'ordinateur qui est utilisé pour javascool | ||
+ | #* donc pas d'installation de logiciel qui réclame des droits administrateurs | ||
+ | #* la possibilité de profiter de la dernière version de javascool en un clic | ||
+ | #* etc.. | ||
− | + | === Pourquoi ne pas intégrer JavaScool sous Eclipse, NetBeans, Processing ou utiliser JavaWebStart ? === | |
− | + | Voici notre contrainte d'utilisation: | |
− | + | * il faut que le professeur entre dans sa salle de classe sur les ordinateurs «tels qu'il sont» (il n'y a pas forcément quelqu'un pour installer quoi que ce soit, il ne faut donc que compter sur le run-time Java standard); | |
− | + | * il faut que l'outil se lance en un clic sur les 30 ordis !!!! Sinon le temps de travail est mort; | |
− | + | * Il faut aussi que ça marche hors réseau (qu'il soit en panne, ou coupé pour des raisons scolaire, ou absent), donc passer facilement sur cle USB | |
− | + | Alors: | |
− | + | # Si la version 1 était sous Eclipse (c'était un plugin Eclipse) cette solution a été mise de côté pour éviter à la fois les problèmes d'installation et la baisse de performances sur des machines trop anciennes, mais il est envisagé de "remonter" cette intégration. | |
− | + | # Un de nos développeur prépare une solutions sous NetBeans (conscient que propriété d'Oracle, les portes pourrait se fermer) tandis que http://javafx.com est à une autre possibilité. | |
+ | # Nous avons investi dans http://www.processing.org car son aspect modulaire le rend complètement intégrable et avons rendu JavaScool interopérable avec cette techno. | ||
+ | # Finalement nous n'avons pas déployé JavaWebStart car nos jar restent de taille raisonnable, et surtout des barrières de sécurité rendent l'implémentation trop fragile. | ||
− | == Pourquoi ne pas utiliser algobox plutôt que JavaScool ? | + | === Pourquoi ne pas utiliser algobox ou la calculette, plutôt que JavaScool ? === |
− | + | A l’aide d'un mini-langage algorithmique en français et d'une interface simple et ergonomique, le logiciel [http://www.xm1math.net/algobox algobox] permet de concevoir et de tester facilement les algorithmes que l'on peut rencontrer dans l’enseignement des mathématiques au secondaire. Il est plus facile à prendre en main que JavaScool car il évite de se soucier de la syntaxe et permet, comme [http://scratch.mit.edu/ Scratch], d'insérer les instructions à la main sans les taper. Il est de plus très bien adapté aux algorithmes de mathématiques de secondes, avec beaucoup d'exercices prêts à être utilisés. Les auteurs d'algobox expliquent qu'il a été conçu pour appréhender de suite les structures logiques algorithmiques fondamentales, en choisissant d'introduire un nouveau pseudo-code et mini-langage algorithmique. Et c'est un logiciel libre, multi-plateformes, ce qui est précieux. En revanche, il a trois inconvénients: | |
* Du fait qu'il ne confronte pas l'élève à écrire du code, il ne permet pas d'appréhender la ''syntaxe'' des structures abstraites qui forment les ingrédients des algorithmes. C'est une simplification, donc une limitation pédagogique, au sens où en utilisant un éditeur graphique l'élève est moins incité à s'approprier les abstractions à apprendre, mais peut plus avancer, par exemple en «tâtonnant»: n'oublions pas que le but n'est pas ``d'apprendre à programmer´´ mais bien de commencer à apprendre des abstractions informatique en programmant. | * Du fait qu'il ne confronte pas l'élève à écrire du code, il ne permet pas d'appréhender la ''syntaxe'' des structures abstraites qui forment les ingrédients des algorithmes. C'est une simplification, donc une limitation pédagogique, au sens où en utilisant un éditeur graphique l'élève est moins incité à s'approprier les abstractions à apprendre, mais peut plus avancer, par exemple en «tâtonnant»: n'oublions pas que le but n'est pas ``d'apprendre à programmer´´ mais bien de commencer à apprendre des abstractions informatique en programmant. | ||
Ligne 101 : | Ligne 195 : | ||
* Ici, algobox «réinvente» un nouveau langage, et une interaction spécifique avec le système, ce qui va nécessiter de la part de l'élève un apprentissage provisoire supplémentaire qui ne sera pas directement pérennisable, contrairement aux outils qui adhèrent à une syntaxe existante. | * Ici, algobox «réinvente» un nouveau langage, et une interaction spécifique avec le système, ce qui va nécessiter de la part de l'élève un apprentissage provisoire supplémentaire qui ne sera pas directement pérennisable, contrairement aux outils qui adhèrent à une syntaxe existante. | ||
− | + | Plus généralement, pour certains enseignants, la plus value de ces outils, tels que JavaScool ou Algobox par rapport aux calculettes programmables n'est pas certain. Si l'enseignant veut se limiter aux exercices proposés au niveau du [http://javascool.gforge.inria.fr/documents/Algo_Doc_Ress.pdf programme de seconde], ils peuvent tout aussi bien être réalisés sur une calculette. Mais en acceptant cette fois ci de voir les structures algorithmiques fondamentales implémentées sous forme bien moins visible. Mais l'investissement pour apprendre à manipuler le langage de la calculette sera réutilisable ensuite, de même que JavaScool ouvre sur les langages impératifs usuels (C, PHP, Java, ..). |
Version actuelle datée du 24 novembre 2013 à 11:55
Sommaire
- 1 A propos de l'enseignement de l'informatique.
- 1.1 Quels sont les liens avec les cours sur les sciences informatiques ?.
- 1.2 Y a-t-il un manuel avec toutes les constructions et instructions ?.
- 1.3 Peut-on consulter un ``vrai´´ cours d'algorithmique ?.
- 1.4 Dans quel cadre pédagogique se positionne JavaSccol ?
- 1.5 Mais . .est-il besoin de savoir programmer pour comprendre les fondements de l'informatique ?
- 1.6 Quels est le lien de JavaScool avec les programmes officiels ?
- 1.7 Je suis professeur et j'ai plusieurs idées de sujets, comment aider et se faire aider ?
- 1.8 Mais pourquoi apprendre des choses aussi «débilisantes» qu'imprimer «Hello World» ? Pourquoi ne pas attaquer des sujets mathématiquement plus profonds !
- 2 Et au delà de JavaScool ?.
- 3 A propos de l'utilisation de JavaScool.
- 3.1 Pourquoi le peu pédagogique chaîne1.equals(chaîne2) pour l'égalité de deux chaînes ?
- 3.2 Quelle version de Java faut il ? Faut il autre chose ?
- 3.3 Comment passer d'un programme Java à un programme JavaScool
- 3.4 Comment passer d'un programme JavaScool à un programme Java externe
- 3.5 Quels sont les autres outils d'initiation à la programmation ?
- 3.6 Pourquoi JavaScool n'a pas de lanceurs .exe ou .app etc.. ?
- 3.7 Pourquoi ne pas intégrer JavaScool sous Eclipse, NetBeans, Processing ou utiliser JavaWebStart ?
- 3.8 Pourquoi ne pas utiliser algobox ou la calculette, plutôt que JavaScool ?
Vous nous avez posé des questions à propos de Java'sCool, les voici avec nos meilleures réponses:
A propos de l'enseignement de l'informatique.
Quels sont les liens avec les cours sur les sciences informatiques ?.
Ils sont multiples: Gérard Berry avec Gilles Dowek sont des initiateurs (et de bienveillants conseillers) des contenus disponibles sur CanalU/fuscia, tout particulièrement sur ce qu'est l' information et sur les ingrédients des algorithmes.
Le cours au Collège de France ( vidéo, audio support visuel ) reste une très belle introduction.
Y a-t-il un manuel avec toutes les constructions et instructions ?.
Bien entenu ce ``manuel´´ existe à la fois:
- Pour ce qui est utilisé dans le cadre de Java'sCool il est donné dans la documentation intérieure au logiciel.
- Au niveau du langage Java, par exemple celui-ci, pour se limiter à un document francophone, il explique:
- les types de base
- les instructions et opérateurs
- les tableaux (qui ne sont pas abordés ici) mais cela va bien au delà du programme de 2nd sur ces sujets !
- Au niveau des fonctions proposées dans les excercices se sont . . tous les objets Java qui peuvent être utilisés (!) en plus des fonctions définies pour chaque proglet.
- Et un peu d'humour : geeks and the manual
Peut-on consulter un ``vrai´´ cours d'algorithmique ?.
- Il y un cours de science informatique avec des chapitres selon les grands domaines de l'algorithmique: calcul numérique, manipulation de graphes, optimisation et recherche opérationnelle, automatique et contrôle de système, mesures et statistiques, etc.. Ce sont les fondements de la programmation
- De très bons cours existent en ligne, pour se limiter à quelques documents francophones:
- les documents d')i(nterstices sur les algorithmes avec une bonne introduction et une discussion sur la théorie, ainsi qu'une description des ingrédients des algorithmes.
- Le cours de l'université Paris VII, orienté ``programmation´´.
- Surtout nous avons un SIL:O de ressources en lignes à disposition.
Dans quel cadre pédagogique se positionne JavaSccol ?
- Quelques notes de réflexions sur ce sujet ont été proposées.
Mais . .est-il besoin de savoir programmer pour comprendre les fondements de l'informatique ?
- Cet article collectif essaye d'y répondre.
- Et un peu d'humour : The Art of Programming
Quels est le lien de JavaScool avec les programmes officiels ?
- Les éléments d'analyse sont détaillés ici.
Je suis professeur et j'ai plusieurs idées de sujets, comment aider et se faire aider ?
Facilement ! Plus de 20% de nos contenus ont été crées ou initiés par des professeurs des lycées. Toutes les informations et éléments sont librement utilisables, tandis que la méthodes est simple: il suffit de nous contacter.
Mais pourquoi apprendre des choses aussi «débilisantes» qu'imprimer «Hello World» ? Pourquoi ne pas attaquer des sujets mathématiquement plus profonds !
C'est une vraie question, et il y a quatre réponse à cette question:
- Pas si débilisant que ça: les points clé du cours ont été proposés par un professeur d'informatique à l'Ecole Polytechnique et un membre de l'Académie des Sciences (il faut évidemment dépasser la leçon 1 pour le mesurer). Dès la leçon 2 du parcours de formation des mécanismes d'abstraction non triviaux sont abordés par l'exemple, en expérimentant d'abord ces mécanismes, pour permettre à l'enseignant d'en expliciter le fondement.
- Pour tou(te)s les élèves de 2nd: cet apprentissage ne cible pas uniquement les jeunes qui iront vers les sections scientifiques, mais vise bien tou(te)s les futurs citoyens qui vont devoir maîtriser, sans subir, la société numérique où nous vivons aujourd'hui. En profitant ici du fait que les fondement de l'informatique s'appréhendent par des mécanismes de pensée qui ne se limitent pas aux maths enseignées de la 2nd à la terminale.
- Ces sujets mathématiques existent: Tous les enseignants de mathématiques disposent aussi d'exercices de programmation liés au programme de 2nd. Cela requière évidemment les bases de programmation de type «Hello World», pour que l'élève maîtrise les mécanismes algorithmiques fondamentaux avant. Au delà du programme, il faut aussi mentionner des mathématiques passionnantes, spécifiques de l'informatique, ébauchées ici et détaillées dans l'excellent livre Information, complexité et hasard de Jean-Paul Delahaye.
- Et surtout, il y a effectivement une limite à l'exercice d'apprendre l'informatique en mathématique ou physique/chimie alors que c'est de fait une discipline à part entière.
Et au delà de JavaScool ?.
Nous avons référencé à la fois d'autres outils logiciels pour apprendre l'informatique et aussi d'autres initiatives périscolaires qui peuvent fournir des ressources au niveau de l'enseignement.
Tout est évidemment recensé dans le «SIL:O!» sur sciences-info-lycee.fr.
A propos de l'utilisation de JavaScool.
Pourquoi le peu pédagogique chaîne1.equals(chaîne2) pour l'égalité de deux chaînes ?
- Le «==» ne pourrait-il pas être remplacé par equal lors de la traduction de JVS en Java ?
- Non car cela reviendrait à la sématique du langage puisque s1 == s2 signifie les deux chaînes sont égales et au même endroit de la mémoire; on aurait alors une sémantique divergente par rapport au java et par rapport aux autres objets
- Il a a aussi été proposé s1 === s2 mais cela va à l'encontre de son sens dans d'autres langages
Quelle version de Java faut il ? Faut il autre chose ?
- Une version "récente" de Java (en 1.6). Java est presque toujours installé par défaut.
- Il ne faut rien de plus . .
- Sauf pour le 3D pour de la proglet «EnVoiture» (qui utilise OpenGL) il faut copier les librairies dynamiques disponibles ici dans le répertoire Java de la machine, c'est à dire, normalement Program Files/java/jre6/bin. Se faire aider du responsable informatique si besoin.
Avec de trop anciennes versions de Java l'application ne marche pas. Dans tous les cas, il faut vraiment upgrader le système car beaucoup d'applets du web ne marchent sûrement pas non plus.
Comment passer d'un programme Java à un programme JavaScool
C'est très facile il faut:
- Mettre tous les éléments de votre projet Java dans un seul fichier
- Sortir la méthode public static void main(String[] args) et utiliser une simple méthode void main() { }
- Noter qu'il n'y a pas besoin d'encapsuler le code dans une classe au niveau de JavaScool
Par exemple d'un fichier Main.java et Classe.java avec :
class Main { public static void main(String[] args) { new Classe().run(); } }
dans l'un et dans l'autre :
public class Classe { public void run() { System.out.println("Ma class runs, c'est la classe !"); } }
il faut mettre dans le fichier JavaScool :
void main() { new Classe().run(); } public class Classe { public void run() { System.out.println("Ma class runs, c'est la classe !"); } }
Comment passer d'un programme JavaScool à un programme Java externe
C'est très facile il faut:
- Copier le contenu du fichier JavaScool dans un fichier de nom, disons, Main.java
- Renommer la méthode void main() { } en public static void main(String[] args)
- Ajouter tous les import static listés ci dessous
- Mettre le Jar javascool-proglets.jar dans le CLASS-PATH
- Utiliser un autre outil de développement Java
Par exemple d'un fichier main.jvs:
void main() { println("Hello world"); }
il faut créer un Main.java :
import static java.lang.Math.*; import static org.javascool.macros.Macros.*; import static org.javascool.macros.Stdin.*; import static org.javascool.macros.Stdout.*; public class Main { public static void main(String[] args) { println("Hello world"); } }
puis utiliser les commandes
javac -cp javascool-proglets.jar Main.java java -cp .:javascool-proglets.jar Main
et le tour est joué.
Pour utiliser une proglet, c'est un peu plus compliqué, prenons l'exemple de codagePixels:
import static java.lang.Math.*; import static org.javascool.macros.Macros.*; import static org.javascool.macros.Stdin.*; import static org.javascool.macros.Stdout.*; import static org.javascool.proglets.codagePixels.Functions.*; public class Main { public static void main(String[] args) { // Commande qui permet d'ouvrir la proglet new org.javascool.widgets.MainFrame().reset("codagePixels", 600, 800, org.javascool.core.ProgletEngine.getInstance(). setProglet("codagePixels").getProgletPane()); // Ici vient le code d'utilisation }
Les entrées se font dans les "popup" et les sorties à la console. On peut aussi accéder à la console "graphique" via:
javax.swing.JPanel jconsole = org.javascool.widgets.Console.getInstance();
mais il faut alors reconstruire une interface graphique à façon.
Quels sont les autres outils d'initiation à la programmation ?
Bien entendu, JavaScool n'est pas le seul outil proposé pour les professeur(e)s des lycées au niveau de l'enseignement de l'algorithmique, donc de l'informatique au lycée. Voici quelques autres très beaux exemples d'outils au bout de ce clic.
Pourquoi JavaScool n'a pas de lanceurs .exe ou .app etc.. ?
Parce qu'il n'y a pas besoin !!! En se limitant à un fichier .jar on garanti de
- pouvoir tourner sur quasiment toutes les machines dès que java est installé
- ne pas pertuber l'installation de l'ordinateur qui est utilisé pour javascool
- donc pas d'installation de logiciel qui réclame des droits administrateurs
- la possibilité de profiter de la dernière version de javascool en un clic
- etc..
Pourquoi ne pas intégrer JavaScool sous Eclipse, NetBeans, Processing ou utiliser JavaWebStart ?
Voici notre contrainte d'utilisation:
- il faut que le professeur entre dans sa salle de classe sur les ordinateurs «tels qu'il sont» (il n'y a pas forcément quelqu'un pour installer quoi que ce soit, il ne faut donc que compter sur le run-time Java standard);
- il faut que l'outil se lance en un clic sur les 30 ordis !!!! Sinon le temps de travail est mort;
- Il faut aussi que ça marche hors réseau (qu'il soit en panne, ou coupé pour des raisons scolaire, ou absent), donc passer facilement sur cle USB
Alors:
- Si la version 1 était sous Eclipse (c'était un plugin Eclipse) cette solution a été mise de côté pour éviter à la fois les problèmes d'installation et la baisse de performances sur des machines trop anciennes, mais il est envisagé de "remonter" cette intégration.
- Un de nos développeur prépare une solutions sous NetBeans (conscient que propriété d'Oracle, les portes pourrait se fermer) tandis que http://javafx.com est à une autre possibilité.
- Nous avons investi dans http://www.processing.org car son aspect modulaire le rend complètement intégrable et avons rendu JavaScool interopérable avec cette techno.
- Finalement nous n'avons pas déployé JavaWebStart car nos jar restent de taille raisonnable, et surtout des barrières de sécurité rendent l'implémentation trop fragile.
Pourquoi ne pas utiliser algobox ou la calculette, plutôt que JavaScool ?
A l’aide d'un mini-langage algorithmique en français et d'une interface simple et ergonomique, le logiciel algobox permet de concevoir et de tester facilement les algorithmes que l'on peut rencontrer dans l’enseignement des mathématiques au secondaire. Il est plus facile à prendre en main que JavaScool car il évite de se soucier de la syntaxe et permet, comme Scratch, d'insérer les instructions à la main sans les taper. Il est de plus très bien adapté aux algorithmes de mathématiques de secondes, avec beaucoup d'exercices prêts à être utilisés. Les auteurs d'algobox expliquent qu'il a été conçu pour appréhender de suite les structures logiques algorithmiques fondamentales, en choisissant d'introduire un nouveau pseudo-code et mini-langage algorithmique. Et c'est un logiciel libre, multi-plateformes, ce qui est précieux. En revanche, il a trois inconvénients:
- Du fait qu'il ne confronte pas l'élève à écrire du code, il ne permet pas d'appréhender la syntaxe des structures abstraites qui forment les ingrédients des algorithmes. C'est une simplification, donc une limitation pédagogique, au sens où en utilisant un éditeur graphique l'élève est moins incité à s'approprier les abstractions à apprendre, mais peut plus avancer, par exemple en «tâtonnant»: n'oublions pas que le but n'est pas ``d'apprendre à programmer´´ mais bien de commencer à apprendre des abstractions informatique en programmant.
- Il reste limité à des interactions de type console (lire/écrire une valeur) et l'affichage de courbe et ne permet pas de manipuler des objets numériques (ex: image de pixels) plus riches que des valeurs numériques.
- Ici, algobox «réinvente» un nouveau langage, et une interaction spécifique avec le système, ce qui va nécessiter de la part de l'élève un apprentissage provisoire supplémentaire qui ne sera pas directement pérennisable, contrairement aux outils qui adhèrent à une syntaxe existante.
Plus généralement, pour certains enseignants, la plus value de ces outils, tels que JavaScool ou Algobox par rapport aux calculettes programmables n'est pas certain. Si l'enseignant veut se limiter aux exercices proposés au niveau du programme de seconde, ils peuvent tout aussi bien être réalisés sur une calculette. Mais en acceptant cette fois ci de voir les structures algorithmiques fondamentales implémentées sous forme bien moins visible. Mais l'investissement pour apprendre à manipuler le langage de la calculette sera réutilisable ensuite, de même que JavaScool ouvre sur les langages impératifs usuels (C, PHP, Java, ..).