What Boldungu is About

I want to use this post to explain what boldungu is about.  The best way to understand boldungu is to look at it as a platform for helping learners practice to master mathematics.

When we say Boldungu is determined to create fun with mathematics, see what we mean. No rote learning and no cramming. Because each question is specially built using Boldungu Advanced Artificial Intelligence, together with the answer and explanation. No recorded videos, no record audio, no pre-determined questions. Every thing on the fly but specific to the class as per the Uganda Primary curriculum.
If you have a learner in primary 3 to primary 7, create an account on https://boldungu.com and test drive for yourself.

No views yet

Introducing Boldungu.com – fun with mathematics for primary school children

During the lockdown, I have had time to cleanup one of my old projects. The project initially intended for home use, has proved interesting for the larger public.

While helping out on homework with my children I noticed that children quickly get bored by print textbooks because  of the same questions and content. Besides, children like being children and the books easily get into a very sorry state. The other problem I have found with conventional textbooks is that they have a fixed set of questions on given topic. Whenever we go through a book just a few times, and then use it to revise, children just apply rote learning and recite the book without understanding, applying or remembering the underlying concepts. I ended up spending much time creating variations of the same questions to allow variety and practice. Interestingly,  with a small change in a digit or phrasing , the child struggles to answer of fails to answer something similar to what he or she has been reciting in the book.

Using existing digital platforms was not very helpful because they use recorded videos and audio or text. Whereas children seem not have much problem watching the same cartoon many times, for recorded educational content, the morale just evaporates after watching more than twice.

Leveraging on my  vast software engineering expertise coupled with extra time during lockdown, I decided to create a utility for generating as many questions as possible. In essence, we are able to generate very many new  questions on the same topic to allow unlimited practice. In fact the number of possible questions we can generate for a given sub topic are only limited by the curriculum scope. When we moved the practice and revision  from print textbooks to one of my older computers, the results have been exceptional. With extra effort, the system can mark, give answers and also provide detailed solutions.

With this system, the children generate the questions; they mark themselves and are eager to see how many they have passed. Now my task has shifted from begging them to revise but to regulate them on how much they should practice. In fact, winning the computer is their new goal. They want 10 out 10 for every quiz cycle.  Mental work has increased, some concepts now seem obvious but the beauty is that the questions are always different.

Welcome to boldungu, where bold learning by doing is the ultimate prize. With boldungu, the process is simple, choose one or more topics, generate questions, answer the questions and see the results. Working with 10 questions per quiz cycle created curiosity and the learners always aspired for 10 out 10. Check it out, for a free trial and give us feedback.

441 total views, 5 views today

Introducing “Gastro Trek” the innovative way of teaching primary school science

Meet Gastro Trek, the game for teaching primary school children about the digestive system.  Similar to the well known computing principle of gabbage in, gabbage out (GIGO), Gastro Trek is founded on the philosophy that we are what we are because of what we eat.  In fact digestion starts much earlier before the food reaches the mouth!  The salivary glands begin engaging as soon as you see and smell that arousing aroma  from the power house.  At one primary school, the learners know that they owe their energy to food and fondly refer to the school kitchen as the power house.From oral cavity, or mouth as the first point of entry of food into the digestive system, it takes a long trek until it disembarks via the anus, assuming all is well. Along the way, it undergoes both mechanical and chemical transformations from large chunks, to bolus, to fluids that can be taken up by the cells while separating and packaging the waste.

Gastro Trek is not an ordinary simulation of the digestive system, it is a game where the learner is the player and he/she interacts and controls the flow of the game.   Gastro Trek takes the game approach where learners can learn through experimentation in a safe way. Learners can pick the wrong options, as many times as possible until they learn that it is actually wrong! Control, choices, rewards, fantasy and fun is key in keeping our players learning and progressing through the game

Lets see what happens in the oral cavity. While at high school, a boy was nicknamed condenser, because his oral cavity performed exceptionally well in handling porridge at high temperatures. He could have won himself an Olympic medal in this category. Our friend won himself the name Crasher for his powers to manage large quantities. Modified aspects of these extremes makeup the Gastro Trek fun assets, while keeping focus on the actual science of digestion.

The Gastro Trek oral cavity takes inspiration from the factory that performs all these services.  The 40 categories of teeth must be effectively used. The canine teeth have special tasks different from scissors and molars. The player must correctly deploy enzymes such as amlyse.  In a game, there are consequences for poor deployment including under deployment.

Gastro Trek is part of the gamification techniques being designed under the funding from Makerere university, Research and Innovation Fund (RIF) first round, under the project “Strengthening Science, Technology, Engineering, and Mathematics (STEM) Using Gamification in Primary Schools (GamePlus)” . Other games under design include Kamati for mathematics and Red Cruise for blood circulation.

The game plus project is led by Dr Benjamin Kanagwa,  with a team of other researchers in the areas of education, system dynamics, e-learning and industrial illustration and design

Find us on twitter,  facebook, or mathsciencegames.com for your comments

64 total views, no views today

Helecare2x Makes Grand entry to the Uganda National Stage

Our effort to contribute to open source software in a meaningful ways has been noticed by the Ministry of Information Communications and Technology (MoICT-NG) and has awarded a grant to enable further development.

Helecare2x is a heavily customized offshoot of care2x, which is a comprehensive electronic patient records management system that ensures smooth integration with hospital core duties.

At its core, helecare2x ensures that clinical activities remain central such that patient hospital experience is not compromised. As a hospital management system, suitable for clinics, pharmacies and laboratories, helecare2x extends to all hospital aspects including billing, bed management, appointments to mention but a few.

 

 

The grant under National Initiative for Innovation Support (NIISP2) will see us bring the system to many users, reach out to many developers as well as include smart capabilities.

505 total views, no views today

Generating alternative Solutions to Problems

In the article about problem solving in software engineering, i highlighted the major problem solving steps as:-

  • Define the problem
  • Analyse the problem
  • List/Identify  alternative solutions
  • Select the best solution
  • List instructions that lead to the solution using the selected solution
  • Evaluate the solution

In this post, i will focus on how to generate alternative solutions.The first solution you are arrive at may not be best of all possible options. It is important that we generate as many alternatives as possible. This will allow us to choose the most effective solution to the problem.

To generate alternative solutions, you can look at the problem in different ways. You are argued to find a new perspective that you have not yet thought about. One technique is to quickly list different solutions including those that do not look viable and then try to eliminate one by one and see where they fail. Try combinations of different parts of solutions.

You can also engage stakeholders. Usually stakeholders see problems from completely different perspectives. If you are a developer, involve users, involve sales people and other stakeholders.

Within the same group, brainstorming sessions tend to generate different solutions.  In general, the  more alternative solutions at hand, the final solution will be cheaper, elegant and easy to implement

 

3,472 total views, 6 views today

Inspiring quotes on computing

“It is not only the violin that shapes the violinist, we are all shaped by the tools we train ourselves to use, and in this respect programming languages have a devious influence: they shape our thinking habits.”
Edsger W. Dijkstra
“Program testing can be used to show the presence of bugs, but never to show their absence!”
Edsger W. Dijkstra

1,020 total views, no views today

Streamlining Software Development Projects

In most developing countries the software development discipline is emerging. Several private and government entities are in the process of automating different business activities. Just like the software discipline itself, the information technology professional are still gaining expertise in specification and verification of software solutions.Where the clients know what they want, they are not in position to explain it to the developers. And equally less experienced developers find it a challenge to understand the needs of the client.

To overcome this problem, some entities hire a consultant to help manage and supervise the implementation process. That is, there are two different consulting firms involved in the project – one to do the actual implementation and the other to supervise the implementation. They all work for the client, but the supervising firm ensures quality is delivered.
crb

This approach of a supervisor and the contractor is well tested in civil engineering works. Where you will find, the main contractor, the supervisor as independent contractors.

For this work, the discipline has to be mature such that the approaches and documentation are well understood by the different parties in the project. In some projects, this has improved the quality of the project because each contractor has a specific responsibility.

I have seen this approach work in software development with amazing results. Usually the supervising contractor requires domain knowledge to ensure that the engineering product serves the desired purpose. The presence of supervising contractor implies the need for proper specification, documentation and reports because these are part of the main inputs for the supervising contractor. The mandatory need for these documents guarantees a level of a streamlined the software development process.

3,094 total views, no views today

Learning is hard but unlearning is harder

During the week of  27 June – 29 June 2016 i attended the Summer School on Machine Learning and Data Science at the school at Makereree University dubbed “Data Science Africa 2016”. I happen to sit with a colleague who is an experienced and certified Java Programmer. As we paced through the examples on data cleaning using anaconda package, we relied both on new new knowledge and also tried to apply what we have learnt over past years in our professional programming experience.

We aimed at cleaning our dataset to get rid of rows without a value for one of the rows on multiple columns. Our data had a column for Gender and another for TesCondition. Now some of the rows had empty values for Gender, while others had empty values for TestCondition. We learnt that once you have a data frame, then you can apply a condition of the form,

 q1= Dataset[‘gender’!=’’]

And then use it query the data as dataset[q1] and this faithfully returned only rows with a value in the gender column. Our next task was to remove the rows with empty values in the ‘TestCondition’ column. Of course we easily figured out that we can construction another query

 q2=Dataset[‘TestCondition’!=’’]

And apply it to the result after q1.

But then our instincts dictated that we could achieve the same result by using Dataset[q1 or q2] – that is return columns where gender is not empty or testCondition is not empty. However the compiler severely rejected this. For sure we have learn’t and know that logical operation on two Boolean expression should yield another another Boolean. Then our unlearning process hard to begin! We checked the syntax, double-checked the indenting, double checked the expression one by one. Meanwhile we found ourselves a couple of tasks behind the rest of the class. Reason – we could not easily unlearn what we have learnt and believed to be correct overtime.

For a while we kept on trying related syntactical expressions from Java, C, C# and standard Python that were not successful. It quickly became obvious that because we were so convinced about the common usage of logical expression, it took us a lot of time to adjust and enjoy the syntax of the new data science platform. Learning the new syntax was much faster as opposed to the time we spent trying to ‘unlearn’ from the past language.

The time taken to unlearn can vary from individual to individual. And a famously put by E.W.Dijkstra (1995) that ‘The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense” .Dijkstra further “the teaching of BASIC should be rated as a criminal offense: it mutilates the mind beyond recovery

Indeed I have had comments from programmers as they attempt to cross from one language to another.

From C, C++, Java, PHP to Ruby
Any body who has done programming in this languages understands the importance of terminating statements with semi-colon (;) and strict naming of variables. One programmer could not come to terms with the fact that variable names of the form is_avaialable? Are perfectly acceptable in Ruby.

From C , C++, PHP to JavaScript

The notion of functional prototyping in javascript coupled with variable scoping in javascript has proved to be profoundly different from the typical static scoping most developers with expertise in C, C++ and Java are familiar with. In C, C++, Java the following code will terminate and producing twenty outputs

for(int i =0; i<10;i++){
  for(int i=0; i < 2 ; i++){
    System.out.println( i);
  }
}

while in javascript,

for(var i =0; i<10;i++){
  for(var i=0; i < 2 ; i++){
   console.log( i);
  }
}

will create a an infinite loop.

Have you had a challenge unlearning something?

1,270 total views, 1 views today

Google knows more about you than what you might want them to know, only VPN can save You.

As tried to keep connected to the social media platforms in light of the Ugandan government shutdown possibly based on basic filters, I also accessed google search engine through the same approach. Interestingly after returning the search results, google was so confused because it kept asking me to refill the CAPTCHA (an acronym for “Completely Automated Public Turing test to tell Computers and Humans Apart”). Indeed google failed miserably to tell that I was a human being so they refused to load any link to the search results.

Then I tried gmail to access the emails, they also presented the CAPTCHA. Still google was not very sure, so they asked me to unlock my Techno F6 Phone! And I did before I could access the mail. So how did they know that I own a Techno F6 Smart phone? How did they confirm that I had unlocked it? And how much else do they know?

As an IT professional and expert at that, I am aware of some of the answers. I access gmail through my Techno Phone, so google took the liberty to keep all this information. Each time, I unlock the phone, google get to know, because the gmail application contacts them.

I don’t want to suspect that because Techno F6 is an android phone and google are the developers of android, then google might have extra tricks built in the android operating system it self.

If you think this is a simple subject, then follow the links for extra information
1. http://www.businessinsider.com/stop-what-youre-doing-and-go-see-what-google-thinks-it-knows-about-you-2012-1
2. https://www.intego.com/mac-security-blog/google-search-archive/
3. http://www.wsj.com/articles/apple-and-google-know-what-you-want-before-you-do-1438625660

2,229 total views, 1 views today

Microservices is not more than a specialized case of SOA

Over the last couple of years, there has been renewed energy in the subject of service oriented architectures. The invention of term ‘micro services’ has warranted a immense interest in the subject of service oriented architectures.

Despite the initial contention on the difference between SOA and the already mature Component Based Software Engineering (CBSE), there is consensus that SOA improves the key attributes of software such as agility, cost to market, flexibility, inter-operability and many others. A service in SOA is now understood as an autonomous software unit that can be used programmatically across the network. Services can interact regardless of the underlying technologies for as long they expose their interfaces for use by other entities.

The size of a service — how much functionality can be bundled into a single service unit is a issue of design left to programmers and software architects. Of course services are compositional – i.e. two or more services may be combined into a new service in its own right. Practice and programmatic recommendations suggest that a service should bundle a business functionality. And SOA in is traditional form has been largely conceived to be applicable at the business level.

Microservice advocate a new way of building systems with more fine grained service units. Simple low-level core functionality can now be exposed as services for use in building high-level systems. A micro service may be as large as a function in a functional language or method in Object oriented Language. Microservices should not be equated to functions or methods because a service is an architectural unit.

Whereas micro services raise the level of flexibility, they increase the number of ‘moving’ parts – each service is autonomous, deployeable in an independent process. This comes with well known challenges of distributed computing. Obviously we have come to learn that in software architecture there is need for trade-offs. It may be very hard to optimize both flexibility and reliability.

The level of granuality and new usage scenarios for microservices, require new support tools for designing, monitoring, provisioning, management of microservice based systems.

3,586 total views, 1 views today