I had contributed as a debugger on Seeds of Empowerment’s Swahili Phonics application a while back. This blog post lists various test cases for Swahili Phonics Learning Application for identification of completed requirements and current issues. Thereafter, it also lists the problems that were solved.

1. User interface and interaction

The application has great user interface. Since the majority of targeted users are young children, it is important to make learning fun. This application successfully does that. The only issue with the user interface is that it does not adapt to the full screen width.

Expected screen:

Current screen:

2. Data collection

The application collects all sorts of data from the players and stores it locally in the user’s device. The players can re-login using their user-name and password and the application allows continuation from where they left before. The application also stores every hits and misses of a user. Although not currently implemented, the data can be used for analysis purposes to identify things like what set of phonetic sound players mostly struggle with.

3. Algorithm

Although the application provides a great framework for scalability, localization in different languages, and analytics there are few issues that we feel need some attention. We have been able to identify the following problems. We were not really sure if these problems were known since the realization came from analysis of the code rather than from the use of application. Therefore, we decided to list these problems with screen-shots so that it becomes more easier to understand.

I) random number generation problem

In the current implementation, random numbers help generation of correct and incorrect answer. However, correct answer is always selected from the current level the player is at but incorrect answer set is generated from level 1 through current level. Because of this, although the options will have certain phoneme that are from previous level, they will never be the correct answer.

Some examples:

If a user is at level 2, the correct option will never be from level 1. To generalize, if the user is at level n, the possible set of answers will only be from the phonemes allocated for that particular level n and not from any levels less than n.

In this case, the answer only be “bo”, “be” or “bi”. With progression of levels, it becomes more noticeable:

Here the possible answer is only one (ie. 4). Also, with the progression of levels, the answers will most likely be the option that the user has not seen before. The game will not chose any phonemes as correct that were part of the option set in previous levels.

II) the phonemes are always chosen from a statically defined list

Since the game always refers to a single static list of phoneme for selecting correct and incorrect options, it does not adapt to re-test previous misses of a user.

III) chances of missing some phonetics because of dynamic array creation

The application generates a list during application runtime to check if all phonemes for a particular level have been tested. If a phoneme is tested twice in a level and the player chose the correct answer again, the stars are not increased because the generated list already has the phoneme. It was added to the list when the player answered correctly the first time around. This is a great implementation. However, there is also a small issue with this. Since the list is generated during runtime but the number of stars a player has in a particular level is stored and retrieved when the player re-logins, chances are, some phonemes are never tested.

An example, If Player A starts the game, and in Level 1 he/she successfully recognizes phonemes for {a, e, o, u}, the screen-shot would look something like this:

When the player is playing the game, the game initializes an array and stores all the successful hits exactly once. The list has “a”, “e”, “o”, and “u” at this point. The player is promoted to another level when he/she has five stars.

The stars are increased if a phoneme can be added to a list (the condition being it does not already exist in the list). In this case, the stars will only be increased if the phonetic for “i” is tested and the player successfully answers that.

But, if the player decides to leave the game at this point to continue at another time, the array that stored all previous successful hits will be reset. Although he/she will still have 4 stars, now all it takes to move to another level is to identify the first phoneme put by the game. Because of this issue, the might progress to next level without having to identify phoneme for “i”.

4. Adaptability

This feature is currently missing because it depends on algorithm design. Once the issues are resolved in that part, the next step would be to work on adapting the levels to test users on previously missed phonetics.

5. Report Generation

Although the application successfully collects useful data, the data is currently not being utilized for analysis.

Identified solutions for aforementioned bugs:

The solutions have already been implemented in the application. Currently, only algorithm specific problems have been solved. The application still needs additional design and game elements to make it more interactive.