OFSET Planet (English only)

To content | To menu | To search

Tag - éducation

Entries feed - Comments feed

Sunday, April 3 2011

Participating to a cool project

Dr. Geo is becoming better release after release. It is proposed for all three major systems and the XO OLPC laptop for kid.

It has been downloaded several thousand of times, it is used in several place in the world, we even got a TV show only for DrGeo.

Yet it is a neat way to promote Smalltalk as the DrGeo scripting feature exposes the user to the Smalltalk language and environment. Far beyond my expectation, teachers are exploring DrGeo to use it as an environment to teach programming, see this nice French article in a teacher professional publication.

I hope more will come.

If you are interested to participate to a cool project, for coding, documenting, testing, promoting; come and join, there are many stuff to do:

  • test
  • report defects
  • translate the user interface of the software
  • document and translate the documentation
  • design DrGeo courses
  • design graphics
  • learn from DrGeo design and fix bugs
  • learn from DrGeo design and implement new features

More to read at the DrGeo Community page.

Tuesday, February 22 2011

Greener electronics

The Greenpeace Guide to Greener Electronics ranks the 18 top manufacturers of personal computers, mobile phones, TVs and games consoles according to their policies on toxic chemicals, recycling and climate change.

Nokia is ranked #1, that's the way to be a cool company! Sony is #2, Apple #9. Damn shit! Stop spending millions in brain washing marketing, just spend millions to produce better product.

Thursday, July 8 2010

Sierpinski triangle

With DrGeo, in a workspace, an interactive Sierpinski triangle can be computed when executing:

triangle := [:s1 :s2 :s3 :n |
    c segment: s1 to: s2;
        segment: s2 to: s3;
        segment: s3 to: s1.
    n >0 ifTrue:
        [triangle
            value: s1
            value: (c middleOf: s1 and: s2) hide
            value: (c middleOf: s1 and: s3) hide
            value: n-1.
        triangle
            value: (c middleOf: s1 and: s2) hide
            value: s2
            value: (c middleOf: s2 and: s3) hide
            value: n-1.
        triangle
            value: (c middleOf: s1 and: s3) hide
            value: (c middleOf: s2 and: s3) hide
            value: s3
            value: n-1.]].

c := DrGeoCanvas new.
triangle
    value: (c point: 0 @ 3)
    value: (c point: 4 @ -3)
    value: (c point: -4 @ -3)
    value: 3.

Of course, the result is all interactive.

sierpinski.png

Tuesday, June 1 2010

Horizontal grid artifact

I created a new artifact for Etoys, it is to divde a grid in two parts. It can be use to explain distribution in calculus 5*7=5*5+5*2. It is scriptable graphically with Etoys tiles.

Moreover, now the artifacts appear in a specific Artifacts category of the Object Catalog.

horizontal-grid.png

You can load in Etoys/Squeak/Pharo from its repository

Fraction Box Artifact

I created a new artifact for Etoys, it is to represent m parts among n parts. It is scriptable graphically with Etoys tiles.

FractioBoxMorph.png

You can load in Etoys/Squeak/Pharo from its repository

Friday, April 9 2010

DrGeo move to new user interface

DrGeo user interface is rewritten to use the Polymorph UI framework. Pharo comes by default with this framework. Polymorph comes with a load of widgets and it is themable. Following screenshot was taken with W2K theme:

DrGeo polymorph

Wednesday, October 21 2009

Post tenebras lux

"Post tenebras lux" is the maxim of the republic and city of Geneva. It means something like "After the dark the light". Although it is related to the Reforme, coincidently (may be not) it applies nicely to the recent move of the Geneva's State Council and particularly the Department of Public Education to open format and free software.

R

Since June 2008, a directive of the Department of Public Instruction (DIP) states open standard and free software will become the norm both in the administrative and educative sector of the department. Regarding office software, OpenOffice.org is emerging as the standard tool.

As a matter of fact, in the school we have PC and Apple computers exclusively shipped with OpenOffice.org. To support this move, support resources are proposed too.

Moreover, all the PC are dual boot, shipped with both Ubuntu 9.04 and Windows XP. The Ubuntu booting is not only an excuse to claim we are using free operating system, it is fully configured and ready to use to access the LAN of the school, the network printers and the scanner.

Under the free Ubuntu desktop, a generous selection of software is available to the educators and learners. Most of these software are free, other are a selection of proprietary software the state acquired the license in the past . The curious can get an idea about downloading the GeLibreEdu DVD.

Many training sessions related to free software and operating system are also proposed to the educators.

It is nice to not only see words, but move.

A small selection of documents and articles in the local press:

Sunday, May 4 2008

Operational thinking

About the development of mind in 7-12 years old kids, Piaget elaborated the operational thinking concept (or the thinking through action with instruments). For Vygotsky, in his theory of activity, the learner alway operates through auxiliary instruments. Too often, computerized learning environments for young children are modeled with an adult thinking model. Therefore these environments are inappropriate for children. Squeak, and its educational version, Squeakland is one exception because it is centered on learning by doing and experimenting.

Learning by experimenting

In the mind development in 7-12 years old children, Piaget elaborated the operational thinking concept (or the thinking through action with instruments). This thinking allows the 9-12 year olds to behave with a sort of rational intuition. According to him, It should be encouraged through active and experimental education because at this age, action precedes thinking. The hypothetic-deductive thinking appears later, after 12 years old in secondary education.

For Vygotsky, in his theory of activity, the learner alway operates through auxiliary instruments. These instruments are intermediate between the activity and child thinking. Depending on the domain and the learner, it imposes a representation more or less internalized in his mind.

The instrument is an artifact used in a unique manner by each learner. The way an artifact is used depends on the learner's knowledge, the activity and the environment. The instrumentation is therefore an artifact transformation process, according to the activity and the social schemes of the operator.

When computing, the artifact concept is interesting in transposing the instrumentation dimension, it helps for better action and experimentation usability. Therefore the computerized learning environment for the 7-12 years old children should follow this rule. However such a transposition, and anticipation on what and how instrumentation can take place, is not easy. Scientists like the Dr. Alan Kay thought about that transposition of the active education idea in computerized environment. Squeak, and its Morphic user interface, is such an example.

Squeak, a computerized learning environment

The Piaget contribution explains why a software like DrGeo|http://www.ofset.org/drgeo|fr] is inappropriate for primary school children. Indeed, it is not compatible to the mental scheme of children below 12. Its' experimental dimension is unsuitable, the interactive geometry requires hypothetic-deductive thinking and mental symbolism underdeveloped in primary school children.

However, DrGeoII is better suited to these children. It is not because it proposes the whole experimental environment, but because it is integrated in such a computerized environment. In this environment DrGeoII is only one element among several others. It is a bit like, if one can escape from the DrGeoII box to discover other boxes (software components) and the children can play with these ones, decide to make them interact... Indeed, DrGeoII is only one artifact (quite a complex one) integrated in Squeak, and as any other Squeak artefact's, it can be freely used and instrumented.

As an example,here is a pedagogical sequence on tessellation. It is constructed with DrGeoII, in its experimental environment. The first two videos show the construction of the sequence by a teacher. The third video shows a solution. It is of course open to didactic variation and adaptation to various learner profiles.

drgeoTessallation.png

These videos are on the free Ogg/Theora format, you can use VideoLan to visualize them.

This example is very simple. It will be very interesting if the learner could construct the tessellation pattern. But the objective was to show:

  1. the experimentation environment
  2. the use of artefacts from this environment
  3. the artefacts instrumentalisation process: how I can adapt an artifact to my special need and turn it as a specific instrument

What next?

This instrumentation links us to Vygotsky. The Morph user interface of Squeak allows these instrumentations at the user level. We have already discussed it in a previous article. Squeak already comes with such artifacts, we would like more artifacts to be elaborated, such as DrGeoII, grouped in libraries, to cover more teaching domains and for more experimentation.

Alan Kay, pensée profonde Squeak gives the feeling the most difficult part has been done; but still something is missing. Most teachers can not program artifacts. However, from existing ones and with EToys they can create experimental situations for their students,

Maybe a interested community could help to develop more artifacts? What do you think about that Dr. Kay?

Epilogue

If you have any thoughts about artifacts interesting to be used the Squeak program, please share your though in a comment below.

Thursday, April 24 2008

Why you could consider Smalltalk/Squeak as your preferred development platform for your next educational software - Part II

In this series of articles, I will highlight the advantages of using Squeak/Smalltalk to develop educational software. At some point and based on my experience, I will compare with other development languages. The focus of this article is for educators and developers interested in software programming education applications. In these articles, don't expect to learn about Smalltalk/Squeak programming, my goal is simply to give an overall picture, based on real experience. Feedback is of course very welcome. In this article I will discuss about the Smalltalk image concept and its consequences.

The Smalltalk image

Smalltalk comes in two pieces. A binary program specific to the host architecture and the Smalltalk codes.

The Virtual machine

The virtual machine (VM) is a program specific to a physical machine and an operating system. It is in charge of transforming the code produced by the Smalltalk compiler into native machine language, so it can be executed. The great advantage of this system is to make the Smalltalk code completely portable to any machine the virtual machine was ported to. The Smalltalk compiler produces byte code, a specific machine language to the virtual machine.

The virtual machine itself is written with Squeak and recoded in C. For access to resources local to the machine (library, hardware access) or to accelerate some critical parts of Squeak, C language plug-ins are developed for the VM.

Smalltalk codes

There are three files: the squeak.sources, the squeak.changes the and squeak.image:

  • squeak.sources contains the standard source code of the Squeak classes. This source is available through the Squeak development tools.
  • squeak.changes contains the source modifications and additions done by the user in the development environment. All user modifications in the code are immediately recorded in this file, in the form of subsequent changes. All versions are kept, so it is possible to come back to earlier code versions.
  • squeak.image, this file is the strangest one for people used to file based programming. This file is a dump of the virtual machine memory. It contains all the used objects of the environments at a given moment. These objects are the windows, compiled classes, running processes, loaded classes, any kind of object in memory, and even debugging sessions. It is possible to save the image through the world menu (click on the background). Therefore it is possible to save the state of the working environment, and to restore it at any time, and even restore it on a different host with a different virtual machine.

Why should an educator will care about that?

The educator willing to develop educational software will gain productivity, both for writing code and porting their applications to several platforms.

Portability

Thanks to the virtual machine and squeak.image pair, porting an application is easy and safe. To port your application, you just need to make your squeak.image file available to the target host.

If you developed your application on host A, you were using a virtual machine for host A and you were using your standard squeak.image (or maybe your renamed it MyGreatApplication.image. To port to host B, you just need to pack virtual machine B with your MyGreatApplication.image image file, and that's it.

Productivity

From the working environment, the developer can save at any moment the state of their work:

  • They can use a tool called the workspace to write down code snippets to remember specific code examples, or to instantiate quickly objects. I very often use this to write down specific sequences of code or notes. To execute this code, I select it then type Alt+d (or Alt+p to get a printed result). When I save my image, the workspace and its content is saved as well. In the right bottom of the picture below, you can see a workspace with some snipped code I used while developing DrGeoII.
  • When debugging an application, the working environment can be saved with the opened debugger. The picture below shows a working environment where I introduced a bug in DrGeoII, the debugger is opened, When I saved the environment (therefore, a memory dump in the image file), the debugging session is saved as well.

Squeak environment

When you are writing code, and especially while improving the quality of your software, your are working within a specific context of your software. The bug does not show up immediately after you start your application. You need it to be in a given state after you performed a series of interactions with it. It can be very time consuming to do so.

Now I guess you start to understand how Squeak can save you a lot of time when you are improving the quality of your application:

  • You can save in the image the specific context which lead to bugs in your application and you can decide to come back quickly to this context as often as you need it to fix the bugs. It is a big time saver.
  • While your application is running you can fix your code, you don't need to restart your application (and recover from the bug context). This an additional time saver.

Don't search for these features in other languages, you won't find them.

In the next article about the IDE, I will develop some of the concepts presented here, for example the debugger and the possibility to fix code in running applications.

previous article - next article

Why Squeak? Part II

In this series of articles, I will highlight the advantages of using Squeak/Smalltalk to develop educational software. At some point and based on my experience, I will compare with other development languages. The focus of this article is for educators and developers interested in software programming education applications. In these articles, don't expect to learn about Smalltalk/Squeak programming, my goal is simply to give an overall picture, based on real experience. Feedback is of course very welcome. In this article I will discuss about the Smalltalk image concept and its consequences.

previous article - next article

The Smalltalk image

Smalltalk comes in two pieces. A binary program specific to the host architecture and the Smalltalk codes.

The Virtual machine

The virtual machine (VM) is a program specific to a physical machine and an operating system. It is in charge of transforming the code produced by the Smalltalk compiler into native machine language, so it can be executed. The great advantage of this system is to make the Smalltalk code completely portable to any machine the virtual machine was ported to. The Smalltalk compiler produces byte code, a specific machine language to the virtual machine.

The virtual machine itself is written with Squeak and recoded in C. For access to resources local to the machine (library, hardware access) or to accelerate some critical parts of Squeak, C language plug-ins are developed for the VM.

Smalltalk codes

There are three files: the squeak.sources, the squeak.changes the and squeak.image:

  • squeak.sources contains the standard source code of the Squeak classes. This source is available through the Squeak development tools.
  • squeak.changes contains the source modifications and additions done by the user in the development environment. All user modifications in the code are immediately recorded in this file, in the form of subsequent changes. All versions are kept, so it is possible to come back to earlier code versions.
  • squeak.image, this file is the strangest one for people used to file based programming. This file is a dump of the virtual machine memory. It contains all the used objects of the environments at a given moment. These objects are the windows, compiled classes, running processes, loaded classes, any kind of object in memory, and even debugging sessions. It is possible to save the image through the world menu (click on the background). Therefore it is possible to save the state of the working environment, and to restore it at any time, and even restore it on a different host with a different virtual machine.

Why an educator will care about that?

The educator willing to develop educational software will gain productivity, both for writing code and porting their applications to several platforms.

Portability

Thanks to the virtual machine and squeak.image pair, porting an application is easy and safe. To port your application, you just need to make your squeak.image file available to the target host.

If you developed your application on host A, you were using a virtual machine for host A and you were using your standard squeak.image (or maybe your renamed it MyGreatApplication.image. To port to host B, you just need to pack virtual machine B with your MyGreatApplication.image image file, and that's it.

Productivity

From the working environment, the developer can save at any moment the state of their work:

  • They can use a tool called the workspace to write down code snippets to remember specific code examples, or to instantiate quickly objects. I very often use this to write down specific sequences of code or notes. To execute this code, I select it then type Alt+d (or Alt+p to get a printed result). When I save my image, the workspace and its content is saved as well. In the right bottom of the picture below, you can see a workspace with some snipped code I used while developing DrGeoII.
  • When debugging an application, the working environment can be saved with the opened debugger. The picture below shows a working environment where I introduced a bug in DrGeoII, the debugger is opened, When I saved the environment (therefore, a memory dump in the image file), the debugging session is saved as well.

Squeak environment

When you are writing code, and especially while improving the quality of your software, your are working within a specific context of your software. The bug does not show up immediately after you start your application. You need it to be in a given state after you performed a series of interactions with it. It can be very time consuming to do so.

Now I guess you start to understand how Squeak can save you a lot of time when you are improving the quality of your application:

  • You can save in the image the specific context which lead to bugs in your application and you can decide to come back quickly to this context as often as you need it to fix the bugs. It is a big time saver.
  • While your application is running you can fix your code, you don't need to restart your application (and recover from the bug context). This an additional time saver.

Don't search for these features in other languages, you won't find them.

In the next article about the IDE, I will develop some of the concepts presented here, for example the debugger and the possibility to fix code in running applications.

Thursday, April 17 2008

Why you could consider Smalltalk/Squeak as your preferred development platform for your next educational software - Part I

In this series of articles, I will highlight the advantages of using Squeak/Smalltalk to develop educational software. At some point and based on my experience, I will compare with other development languages. The focus of this article is for educators and developers interested in software programming education applications. In these articles, don't expect to learn about Smalltalk/Squeak programming, my goal is simply to give an overall picture, based on real experience. Feedback is of course very welcome.

Have you noticed in my title I wrote development platform and not programming language. Indeed Smalltalk, and Squeak particularly, is not only a language it is also an environment to write code. This aspect is rooted to the whole history of Smalltalk in the 70s at the Xerox Parc, where Alan Kay's team created several versions of Smalltalk in a specific graphical user interface environment with a mouse and windows. It came with unique features such as a virtual machine and an image architecture, a full object oriented and reflexive language.

Why an educator will care about that?

Some key aspects in Squeak/Smalltalk I find the most interesting when writing educational applications are:

  • the GUI, called Morph
  • the Smalltalk image, an unique environment to test your ideas and instantly save the state of your work
  • your application is portable to many OS architectures
  • a nice integrated development environment (IDE)
  • an unique way to debug your application
  • a rich set of interactive and multimedia classes
  • a skilled community

I will develop these points with concrete examples. One point per article. I will first discuss the Morph GUI system.

The Morph GUI

In this GUI framework, a Morph is a graphical unit. It can be a bitmap, a geometric object as a segment, an ellipse, a polygon, a character, a string, a video canvas, etc. A Morph can be inserted into another one, with or without layout. All the graphical objects in Squeak are assembled Morph. Morph can be manipulated interactively by the user. One helper for such manipulation is the halo system.

The halo

The first special feature a user meets with Morph is the halo system. Within the Morph GUI, Halo is a collection of object handles surrounding any kind of graphical objects such as windows, button, graphic, text strings, etc. The halo can be called on demand.

Morph halos

There are various functions like duplicating, resizing, rotating, repainting, etc. I won't be explaining further, several starter guides are doing it. The halo strong point, is being able to let the user manipulate the object freely. If you design an educational application with Squeak, keep in mind the user will be empowered by the halo system, so be sure to consider the halo effect when designing your software.

As I just explained, Morph can be physically manipulated, assembled or disbanded by the user. But this is not the end of the story, Morph can be logically manipulated and interlinked through a graphical scripting system.

Squeak scripting

In the halo, one handle is responsible for opening the viewer (the blue eye on the left). A viewer presents a set of graphical commands. Commands are about physical or logical characteristics regarding a Morph. Command work is input or output.

Not only can the user assemble various commands from one Morph, but he can also put together commands from several Morphs. So it it possible to link their behaviors.

In Dr. Geo II, I decided to use Morph as my graphical canvas underneath. Indeed, I wanted to take advantage of the Morph features for: inter-inclusion of Morph external to Dr. Geo II into it, and vis-versa, and also to give the freedom to the user to use Squeak Scripting with Dr. Geo II. It really empowers your application to do so.

In the screen shot bellow, Squeak scripting is used to attach the y-axis position of a Dr. Geo II Moprh point to a Morph slider: when the user moves the slider, the Dr. Geo's point moves accordingly. Not only do the point and the slider not know about each other, but this logical relation is performed at the user level.

Squeak scripting

Programming the Morph

What we described in the two previous sections was about how the Morph GUI empowers the end user. On the other hand, the Morph GUI programmer is able to:

  • reuse existing Morphs to fit his needs. Reuse, can be: aggregate several Morphs in a new type of Morph, extend the behavior of a Morph,
  • write from scratch a new Morph. Writing a new Morph is fun because you are completely free to decide how it will behave and look (with drawOn: method).

Bellow are a few examples of Morph I wrote through reuse and modification of previous ones, or from scratch.

Pyramide de nombre PythagorasTable Rectange de point Dice.png

A few years ago, Python was becoming my favorite programming language to write educational application. I wrote a few articles on this topic (article 1, article 2, article 3) . The biggest advantage was the ease of use of the programming language. Using GTK+ with Python was pretty easy once you knew about it. However as the documentation about the GTK+ Python binding was mostly inexistent, I had to read the GTK+ C documentation and the Python source code binding then guessed about how to use it in Python. It was pretty do-able but quite time consuming. Funnily enough, I happened to do the same thing with Squeak and the Morph GUI as the documentation was also very thin, but thanks to the Smalltalk reflective nature, it is so much easier to find, to test and to understand the necessary features. This is another advantage which empowers the programmer this time. I will explain it later when discussing the Smalltalk IDE.

Why Squeak? Part I

In this series of articles, I will highlight the advantages of using Squeak/Smalltalk to develop educational software. At some point and based on my experience, I will compare with other development languages. The focus of this article is for educators and developers interested in software programming education applications. In these articles, don't expect to learn about Smalltalk/Squeak programming, my goal is simply to give an overall picture, based on real experience. Feedback is of course very welcome.

next article

Have you noticed in my title I wrote development platform and not programming language. Indeed Smalltalk, and Squeak particularly, is not only a language it is also an environment to write code. This aspect is rooted to the whole history of Smalltalk in the 70s at the Xerox Parc, where Alan Kay's team created several versions of Smalltalk in a specific graphical user interface environment with a mouse and windows. It came with unique features such as a virtual machine and an image architecture, a full object oriented and reflexive language.

Why an educator will care about that?

Some key aspects in Squeak/Smalltalk I find the most interesting when writing educational applications are:

  • the GUI, called Morph
  • the Smalltalk image, an unique environment to test your ideas and instantly save the state of your work
  • your application is portable to many OS architectures
  • a nice integrated development environment (IDE)
  • an unique way to debug your application
  • a rich set of interactive and multimedia classes
  • a skilled community

I will develop these points with concrete examples. One point per article. I will first discuss the Morph GUI system.

The Morph GUI

In this GUI framework, a Morph is a graphical unit. It can be a bitmap, a geometric object as a segment, an ellipse, a polygon, a character, a string, a video canvas, etc. A Morph can be inserted into another one, with or without layout. All the graphical objects in Squeak are assembled Morph. Morph can be manipulated interactively by the user. One helper for such manipulation is the halo system.

The halo

The first special feature a user meets with Morph is the halo system. Within the Morph GUI, Halo is a collection of object handles surrounding any kind of graphical objects such as windows, button, graphic, text strings, etc. The halo can be called on demand.

Morph halos

There are various functions like duplicating, resizing, rotating, repainting, etc. I won't be explaining further, several starter guides are doing it. The halo strong point, is being able to let the user manipulate the object freely. If you design an educational application with Squeak, keep in mind the user will be empowered by the halo system, so be sure to consider the halo effect when designing your software.

As I just explained, Morph can be physically manipulated, assembled or disbanded by the user. But this is not the end of the story, Morph can be logically manipulated and interlinked through a graphical scripting system.

Squeak scripting

In the halo, one handle is responsible for opening the viewer (the blue eye on the left). A viewer presents a set of graphical commands. Commands are about physical or logical characteristics regarding a Morph. Command work is input or output.

Not only can the user assemble various commands from one Morph, but he can also put together commands from several Morphs. So it it possible to link their behaviors.

In Dr. Geo II, I decided to use Morph as my graphical canvas underneath. Indeed, I wanted to take advantage of the Morph features for: inter-inclusion of Morph external to Dr. Geo II into it, and vis-versa, and also to give the freedom to the user to use Squeak Scripting with Dr. Geo II. It really empowers your application to do so.

In the screen shot bellow, Squeak scripting is used to attach the y-axis position of a Dr. Geo II Moprh point to a Morph slider: when the user moves the slider, the Dr. Geo's point moves accordingly. Not only do the point and the slider not know about each other, but this logical relation is performed at the user level.

Squeak scripting

Programming the Morph

What we described in the two previous sections was about how the Morph GUI empowers the end user. On the other hand, the Morph GUI programmer is able to:

  • reuse existing Morphs to fit his needs. Reuse, can be: aggregate several Morphs in a new type of Morph, extend the behavior of a Morph,
  • write from scratch a new Morph. Writing a new Morph is fun because you are completely free to decide how it will behave and look (with drawOn: method).

Bellow are a few examples of Morph I wrote through reuse and modification of previous ones, or from scratch.

Pyramide de nombre PythagorasTable Rectange de point Dice.png

A few years ago, Python was becoming my favorite programming language to write educational application. I wrote a few articles on this topic (article 1, article 2, article 3) . The biggest advantage was the ease of use of the programming language. Using GTK+ with Python was pretty easy once you knew about it. However as the documentation about the GTK+ Python binding was mostly inexistent, I had to read the GTK+ C documentation and the Python source code binding then guessed about how to use it in Python. It was pretty do-able but quite time consuming. Funnily enough, I happened to do the same thing with Squeak and the Morph GUI as the documentation was also very thin, but thanks to the Smalltalk reflective nature, it is so much easier to find, to test and to understand the necessary features. This is another advantage which empowers the programmer this time. I will explain it later when discussing the Smalltalk IDE.