Scratch is a program which teaches the basic concepts of programming. Using this application it is possible to make software like games which can be published onto the internet through the use of Java. In this program code isn't created by typing text into a text editor, code is created by dragging and dropping customizable "parts" into a sequence.
GeoPro 

GeoPro is a game designed by the Design Technology students of Harare International School using Scratch. This is an educational game which aims to teach children in primary school Geography in a fun and competitive manor. This project was assessed by the children, their teacher and the Design Technology class teachers. 
Botball is a program made by KIPR for middle to high school students interested in a career to do with maths, science or computing. It teaches the basic concepts of programming robots. This program is centered around a competition where schools from all over the world come to regional competitions. These regional competitions consist of a robot having to do certain tasks within a certain time, the more you do the more points you get. KISS C (C with built in KISS libraries to control the robot hardware) is used to program the CBCs, the computer of the robots.
Botball Competition  Botrace / iBotRace 

This Botball competition is a clip from the competition when the two teams of Harare International School, who were later to come second and third, faced off in the Jacksonville, Florida regional competitions. 
BotRace is a program that turns robots and equipment that were meant to run autonomously into toy racing cars. The results of this project were two CBCs and two iCreates capable of being controlled by makeshift controllers made of motors. Therefore the user could control the CBC in real time. 
Flash is a program which goes past just teaching the concepts of programming, this program is the standard for online applications, RIAs animations and games. The content produced by this program is compatable with nearly every computer in the world. The main language used on this platform is ActionScript, a scripting language based on ECMAScript with support for classes and object oriented programming.
Unity 

Unity is a maths application designed for the Design Technology class personal flash project. This application finds the complex roots of both complex and real numbers and displays them on the argand diagram. This application makes the spacing of the roots can be seen clearly and can be used to introduce students to the topic of complex numbers. 
There are many projects that I haven't gotten the time to finish off because they are not school related and I have had other work to do. Some of the following projects are written in Java, a programming language that provides portability, security and speed. Other projects are built using C++ and especially in conjunction with the Qt libraries. C++ is known for its speed and control and the Qt library is a powerful widget toolkit providing abstraction for operating system utilities.
ZimPIRT  Calculadora  ZSE Trading 

ZimPIRT is an application built to calculate pension entitlements from contributions made in Zimbabwean Dollars taking into account exachange rates and interest rates. 
Calculadora is a plugin based Java calculator application capable of graphing functions. By plugin based, I mean that one can add on any function they want... 
ZSE Trading is an application built to graphically represent the movements of the ZSE (Zimbabwe Stock Exchange) written in C++ using Qt. 
My love for mathematics can be attributed to three main factors. The first factor is my need to confirm my mathematical derivations effortlessly to see if a relationship holds for the domain that I have stated. The second factor is to make mathematically efficient algorithms for use in my programs to process data faster. The last but most important factor is for the beauty of mathematics itself and the satisfaction of applying simple yet insightful techniques to solve difficult problems. The Python scripting language is used in this section. Python has all the advantages of scripting languages including simplicity, libraries and power.
Triginometry Triangle  The Dice Game 

Triginometry Triangle is a mathematics paper on the simplification of multiple angle formulae. DeMoivre's theory, calculus and sigma summations are used extensively in this paper. A series of scripts for this paper were written in Python to test the derived formulas in my mathematics research paper. 
The Dice Game is a mathematics paper on the probabilities involved in a casino. For this paper experimental probabilities were obtained by the random number generator in Python and theoretical probabilities were calculated using a mixture of probability theory and discrete calculus. 
GeoPro is a game designed by the students of Harare International School in Scratch. This is an educational game which aims to teach children Geography in a fun manor. This game starts first on level one testing the player's knowledge of the world map, then secondly with flags testing the player's knowledge of certain countries and lastly landmarks testing the player's knowledge of important geographical locations.
Our GeoPro code base allows for our program to be easily extended for another purpose, for example a history game. This is because we took care to use lists (equivalent to arrays) instead of building the questions into the procedural code. This so that if the client wants to change a few questions it will take less time and be less error prone.
The Botball competition is a competition made by KIPR for middle to high school students interested in a career to do with maths, science or computing. This competition encourages high school and middle school students to learn critical skills which will be important for STEM carrers such as programming in C  an industry standard  and being creative / thinking outside the box as engineers have to come up with solutions for issues such as wires wearing out, screws or pieces no fitting properly or maybe even just balance.
In the 2011 Botball competition the robots had to do several tasks which they could get points for such as stacking blocks, moving airplanes, detecting luggage and sorting it and also moving the biofuels to different places on the board. The track was symetrical on this year so the robots had to have code for both the left and the right. This year the robots could also go onto each other's side and reduce their chances of success by moving objects which you know they will move.
In Botball, teams often make functions in order to not have repetitive code. This may be a function to make a robot move straight for x cm and then turn 90 degrees as an example. I saw this as an opportunity for a diversion: to build a complete object oriented abstraction for the low level functions provided by Botball and to challenge my triginometry skills. Though I did not fully complete this diversion because of time contraints, I believe I learnt some valuable skills in querying asynchronus low level APIs and of fully documenting my code.
BotRace is a program which was programmed and engineered by the Design Technology class at Harare International School. This program turns robots and equipment that were meant to run autonomously into toy racing cars. The results of this project were two CBCs and two iCreates capable of being controlled by makeshift controllers made of motors. Therefore the user could control the CBC in real time. Some of the features which this program includes is the ability to crash when the robot hits a black line, reversing, the display of statistics during the game and a realistic acceleration when starting.
We began doing this project by choosing a controller. Originally we had three ideas an infrared controller, a touch sensor controller or a motor controller. We went through these ideas and we found out that infrared is unreliable and that the cables connecting the touch sensors to the CBC could not be extended easily. So we chose to use a motor as a controller. We then build the robot and the controller, the robot being a CBC and two motors and wheels, the controller being two motors for speed and direction joined by lego. We then made the track using cellotape on the ground.
Unity is a maths application designed for the Design Technology personal flash project. This application finds the complex roots of both complex and real numbers and displays them on the argand diagram so the spacing of the roots can be seen clearly. This program is intended to aid people who are teaching mathematics. There are two versions of this application advanced and simplified, the simplified version contains tutorials reminding the user rules on complex numbers whereas the advanced is just the barebones of the application.
The Unity code base allows the code to be extended easily and be used in other programs. Examples of this include the ComplexNumber class which allows you to handle complex numbers in Flash as if you were handling a normal real number. In this case if the user wants any aditional complex number features it will be easy to add.
Triginometry Triangle is a series of scripts designed for the to test the derived formulas in my mathematics research paper  Finding Patterns in the Expansions of Trigonometric Functions. In basic terms these scripts are the programmed equivalent of the formulas derived in my research paper. The first script in the series produces the coefficients in the triangle above. The second script does the same as the first using a different algorithm. The third script generates the coefficients that would be found in the inverse matrix of the triangle above. This application also makes it easier to generate rows after the tenth where tedious calculations may have had to be done by hand.
The Triginometry Triangle code base is mainly procedural. It just reflects all of the parts of the formula derived in the research paper as much as possible. But the cost of this is efficiency since in some parts of this code base recursion is used to find the nth derivative instead of other more efficient algorithms. Overall Python reduced the amount of code that I had to write because it had builtin utilities to manipulate complex numbers.
Calculadora is a plugin based maths graphing calculator application. I have been developing this hobby project for desktop computers but have been hoping to port it onto the Android platform. In that way Android phones would be able to function as a free replacement for traditional graphing calculators. There are three parts to this application: the development of the function plugins, commandline evaluations and the graphing of the relationship between two variables.
The Calculadora code base is extensible. The basic program and primitive functions are implemented in Java but the rest of the functions which are just combinations of the primitives are implemented in Javscript and XML. Doing this enables new functions and modules to be added to the JAR file after compilations. The addons can be made by people who do not know the internal structure of Calculadora. Javascript is used to specify the function''s behavior. PNG images are used to specify the function's logo. XML files are used to specify the function's appearence and provide Calculadora with META information about the function.
ZSE Trading is a simple application built to graphically represent the movements of the (ZSE) Zimbabwe Stock Exchange. I made this application as a scalable alternative for a relative who had originally been using an Excel spreadsheet to represent his data. The two main parts to this program are the data updates and the graphing.
This application was more of an opportunity for me to test out object oriented design patterns. I was mainly experimenting with the State Pattern where the application's dialogs are either not in a read only or in a read only state. I also took this application as an opportunity to test the SQLite database and its portability. This application has simple features being the ability to add, update and remove counters, the ability to display the graphs of several counters on the same pair of axis and the ability to import/export movements of the ZSE from/to CSV files.
The Dice Game is a mathematics paper on the probabilities involved in a casino. The mathematics paper  The Dice Game explores the probability of a player, Ann, achieving a higher maximum on her die after rolling "a" times than Bob who rolls his die "b" times and takes his maximum. For this paper experimental probabilities were obtained by a script using the Python's random number generator and effectively reflects what the two players would have had to do in real life. Theoretical probabilities were calculated using a mixture of probability theory (with the help of geometric visualisations) and discrete calculus to simplify the sigma summations that occured in the derivation.
The Triginometry Triangle code base is mainly procedural. It just reflects what the players would have had to do in real life without any simplifications or optimizations. In order to determine how accurate the experimental probabilities are, the probability of the same event happening was found ten times. The average of these ten probabilities as well as the range of the values were analyzed in the mathematics paper. Though the average probability found was just a decimal, the total probability space was known to be six to the power of the total number of rolls of the dice which meant that the decimal number could be converted into a fraction. This fraction's numerator would be the possible ways of success and the denominator would be the total number of outcomes.
This application was built for the ZimPIRT trust. It aims to calculate the rightful benefits of Zimbabwean pension fund members. This is application necessary because during the hyperinflation, pension fund member contributions were not compounded accurately. As a result of these incorrect calculations, pension fund members lost a large percentage of their rightful real pensions. ZimPIRT is an application built to calculate pension entitlements from contributions made in Zimbabwean Dollars taking into account the parallel exachange rates (the exchange rate on the market, not the official exchange rate) and interest rates.
The ZimPIRT code base is mainly object oriented. In the beginning Rapid Application Development techniques were used to an extreme to the neglect of the quality and extendibility of the code. Later on a distinction was made between the appearence and behavior of the application. This is when the code was refactored into two folders named "Frontend" and "Backend". The backed contains most of the SQL queries used in the application in interfaces and classes and the frontend contains all the code dealing with user interaction. This process is currently ongoing and it is hoped that soon the Frontend will be so separate from the Backend that it will be possible to swap in and out several different user interfaces and several different data sources with no major changes to the code.
About Me  Online Reading List  Offline Reading List 

I am Murisi Tarusenga and I am an aspiring programmer and mathematician. Welcome to my portfolio site, this site contains some of the projects that I have worked on in the past. From web applications to robotics to mathematics, this website showcases my work and the results of my experimentation. Some of the projects work right from the browser, please feel free to experiment with them. I also believe that the reader can gain a better of understanding of me through my reading list. My reading list provides a broader scope of my interests than the projects I have chosen to showcase. 

