Application Program: Test of ability with arithmetic

From OLPC
Jump to navigation Jump to search

Here is an idea for an application program for the laptop. As well as being a useful application program to have available, hopefully the development of this application program will be an important opportunity to gain valuable experience is the development of applications for the laptop, covering such topics as design, documentation, localization and finding out whether a team of enthusiasts from around the globe can put together an application which will be of practical usefulness to the project.

Please join in and edit this page so that the development of the application program can gradually proceed by utilizing the knowledge and skills of many people.

How do we start?

Is the best way to write the documentation first, in English? If all strings are included in English then maybe people who do not have English as their native language yet who know English will choose to translate the strings into their native language. Hopefully the availability of those strings in various langauges will help a programmer who knows the linux system and has sufficient knowledge of the laptop to produce an application program which will run on the laptop in a variety of languages. How would that be done? Would the strings be built in to the application program or would they be in an external file? Building strings into the program would make the program more self-contained yet putting the strings in a file would mean that localization to another language would be more straightforward. Is it best to start with, say, a Spanish version or a Portuguese version with the strings built in to the program as a first stage with the strings in an external file being a second stage, or should the attempt be made to go straightaway to an application program where the strings are in an external file? What is the best way to localize an application program on the linux platform?

An attempt to produce the documentation

Here is an attempt at the documentation.


Application Program: Test of ability with arithmetic

This program provides a child with the opportunity to test his or her ability to perform basic arithmetical calculations using pen and paper and then enter his or her answer into the computer and receive feedback. The program starts by asking how many digits should the numbers use. The program then generates questions at random within that constraint. The program compares the answer provided by the child with the correct answer which it has computed. Feedback is either that the answer entered is correct or the correct answer is provided. Please note that the program does not state Incorrect or Wrong.


NEEDS MORE IN THE SECTION ABOVE.

How should the program be terminated? Should it be for a fixed number of questions? How is the way to choose whether to have addition, subtraction, multiplication, division questions or a mixture of addition and subtraction questions or a mixture of all four types of question? What strings are needed for that choice to be made?


The following strings are needed. In each case NN refers to numbers expressed using digits. These numbers could vary from one digit to many digits.

How many digits should the numbers use?

Please key your answer into the computer and then press the enter key.

Please add NN to NN and then enter your answer into the computer and then press the enter key.

Please subtract NN from NN and then enter your answer into the computer and then press the enter key.

Please multiply NN by NN and then enter your answer into the computer and then press the enter key.

Please divide NN by NN and then enter your answer into the computer and then press the enter key.

The answer which you entered is correct.

The correct answer is NN.


As well the text strings mentioned above, the following string is needed. It would be convenient for this to be the first string in the list, as that could become the practice for other application programs as well.


0123456789

The program could start by extracting the Unicode code points of ten individual digits to be used in the display. The same Unicode code points could be used for interpreting user responses as numbers. For some languages, such as Spanish and Portuguese the string could be localized as 0123456789 just as used for English: however, for languages written in other than the Latin script, the string may well be different from 0123456789 for localization in that script.

As the program has division it might be a good idea to have a second string which consists of the decimal point, also including various other characters which might possibly be localized.

First attempt at defining that string.

+-*/=.

The . in the above string is for use as a decimal point in numbers, not as a full stop at the end of a sentence. Thus localization is needed for use in producing a number such as 3.5 as the correct answer to the following request.

Please divide 7 by 2 and then enter your answer into the computer and then press the enter key.




since these are randomly generated numbers, what about recuring digits? .. is the child suppose to answer 3 1/2 or 3.5 when s/he is asked 7 / 2?

then what about 10/3? or what might be easier actually, is to say 7/2 = 3 remainder 1 any thoughts on this?

This is a good point. The questions could be produced using random numbers such that the answer and the number by which the first number is divided are random whole numbers and the first number is produced behind the scenes by the program before the question is asked by multiplying together the two random whole numbers. Thus the question asked would be such that the answer would always be a whole number. However, that method does not address the fact that real world divisions do not always work out as whole numbers. However, the idea for this application program is to try to get something started and perhaps to test out the ready-to-test idea if peope think that the ready-to-test idea is something worth trying to put into practice. It might well be that if the basic program could be implemented, tested and deployed that a second stage could be to have a program where divisions do have an answer which is not just a whole number. More information about the ready-to-test idea is available on The ready-to-test idea page of this wiki.
This page already shows that people are willing to provide the translations of the sentences so that the application can be produced in many languages. As far as I know, the application has not been coded and got running on the OLPC platform. This could be for a variety of reasons: one might be that the idea of having the program implemented is not thought to be a good idea by people who could implement it. However, it might be that people have lots to do and that things have priorities and that implementing this application program just does not have enough priority at present, and possibly may never have that priority. It is not clear to this writer as to whether the design of the OLPC laptop software system is yet at the stage where this application program could be implemented if someone wanted to implement it: however, this writer is no expert on the OLPC laptop software system so maybe someone who has knowledge of the OLPC laptop software system will comment upon that aspect by editing this text please.



as stated previously, this is an informal discussion of what could develop to be a very useful application. But what we really have to do is make sure to design something properly from scratch, thats why so many design questions are being asked about program structure/development ideas. I would be happy to invest some time to make a mockup of the program if we actually decided what the best way of going forward is.

Localization into various languages

The OLPC project includes India as a launch country.

English is one of the official languages of India. Into which languages does the program need to be localized for use in India?

india no more: http://hardware.silicon.com/desktops/0,39024645,39160928,00.htm


The strings and their translations

Please see the translations page. Application_Program:_Test_of_ability_with_arithmetic_string_translations removed them from this page to abstract away the details, so that it is easier for people to get a quick overview.

Design of the program

Here is an attempt to produce the design of the program in a sort of pseudocode with notes. Please join in and edit this attempt so that hopefully we can get a good design.


Clear the screen.


Read in the file containing the strings. At present that is 10 lines of text in the format that the strings are being localized into various languages in the Localization into various languages section of this wiki page. In that section the presence of a number in denoted as NN. Yet how should the strings be encoded in the localization file?

For example, the string of which the English version is as follows.

Please add NN to NN and then enter your answer into the computer and then press the enter key.

Will that translate into all languages as three parts, part 1 NN part 2 NN part 3 if one considers that each part could potentially be empty? If so, should that sentence be in the localization file as one string with what is NN in the Localization into various languages section replaced by a | character? The sentence above would be represented as follows in the file.

Please add | to | and then enter your answer into the computer and then press the enter key.

Another possibility would be to break the string into three lines, though that could potentially produce problems if a langauge into which the strings were localized had part 3 as empty. So maybe the use of the vertical bar as a delimiter would be the best way.

However, there may perhaps be in existence standard ways of expressing such information. Does anyone know the situation about that please?


Break the first string into 10 individual characters so as to produce 10 individual characters in an indexed array. If the 10 characters are the same as 0123456789 then a flag DIGITS_AS_ENGLISH is set as true, otherwise it is set as false.


Break the second string into 6 individual characters so as to produce 6 individual characters in an indexed array.

MORE NEEDED HERE


XML comes into mind, and in particular, it sounds like we need a file similar in structure to rockbox's multi lang file http://www.rockbox.org/twiki/bin/view/Main/LangFiles why reinvent the weel when we have Bridgestone :) Also, we would want to keep the children motivated and eager to use this application. A little game that comes to mind that I use to play at school, which always kept me entertained is Chefren`s Pyramid, which I thought is a novel and interactive way of learning maths. http://www.r-e-m.co.uk/cgi-bin/xrem/M_1/T_25127/G_3 We need to keep the children entertained so giving them a goal (even if it might be hard to achieve) is preferable to simply questions and correct answers on the screen. Anyone with experience in mathematical games (building/playing/anything)?



what about gettext?

How would the program look when running on the laptop?

There are some very elegant mockups in the SugarDesignReview2 page of the screen display when using the laptop for chatting.

How would the display look when running this program, for example, in terms of whether the display would fill the whole screen or would the program run on a panel with a header line at the top and "tabs" for changing programs at the bottom? Windows does it in a way with which many readers are familiar, yet how will the OLPC laptop running linux do it please? Some mockup pictures for this program, perhaps showing the display for adding 17 to 29 after the child has entered the answer 46 and just before he or she presses the Enter key, would be useful. Certainly, if someone could produce the pictures then that would be great, yet if the basic information is provided as to how the program would run then the graphic art could be done by others. In particular, sizes of the screen and any message bars in pixels would be useful.

When it comes to producing the artwork in several languages the method described in the following linked document may be useful.

http://www.users.globalnet.co.uk/~ngo/pai04100.htm

A master drawing could be produced first and made available and then versions of the finished mockup could be produced in various languages. Those in latin script could all use the same font in the same size and colour and the one in Chinese could be made in the same size and colour as best it can be achieved.

Coding the program




Newsflash: 18 May 2006 0724Z

There is a discussion about the Python programming language in the Software_Ideas_-_Education page, in the section about Java not being available.

It is being asked as to whether Python is the programming language which would be used to implement this application program for the laptop.




software_executable_explained

Testing the program

Certification of the program

In order to ensure that this application program has provenance of being of an acceptable level of quality it would be good if the program could pass an assessment made by the management of the One Laptop per Child project. There could be a procedure through which an application program which is purported to be ready for publication and deployment must satisfactorily pass in order for it to become of OLPC Quality Application Program certificated status.

That procedure could be specified in an OLPC Quality Application Program Procedure page. At present, ideas for such a procedure could be put forward in the OLPC Quality Application Program Procedure Ideas page.

Publishing the program

If this program can achieve the certificated status of being an OLPC Quality Application Program (if such a status becomes instituted as an available goal) then it could be published in the OLPC webspace in a part of the webspace from which all OLPC Quality Application Programs could be obtained.

Deploying the program

The program would become deployed by people obtaining copies from the OLPC webspace. In this manner the deployment of the program would be decided by local people on the basis of their local needs.

Verifying the program

If open source software is to be used there should be a way to verify that programs have not been tampered with. Eventually one child will get a version that intentionally or unintentionally reports the correct answer every time, does not grade accurately, or allows them to cheat in some way. There needs to be a way to prove that a program is origional especially if it could be used for testing purposes. Open source is good, but atsome point people will take advantage of it. I know I would have.

  • This is indeed a difficult problem. It is a problem not only for this program but for many programs. Here is an idea for a possible solution. Comments on whether it is feasible are invited. Would it be possible for there to be a special, variant, version of the laptop, say moulded in a colour different from the laptops issued to the children, which is read-only of files, with files being obtainable only over the internet and then only from one particular webspace? This special, variant, version is herein termed a "provenance laptop". The system software for such a provenance laptop could be in read-only memory. Thus, if the idea is feasible, a child could obtain files from a provenance laptop with confidence. The provenance laptop might, from time to time, need to be transported several miles to a place where files could be obtained from the internet. However, the availability of a provenance laptop facility in a rural school where there is no direct connection to the internet could be a good second best to having a direct internet connection. The provenance laptop could be used to select which files are obtained from the one particular webspace. The one particular webspace could either be a special webspace run by the government of the country where the laptop is deployed or a special webspace of the OLPC project run by the OLPC management under secure conditions, depending upon the policy choice of the government of the particular country.