Project Summary

About:

Tux, of Math command is an open-source educational game for learning Mathematics. My project was to improve the learning outcome of a student by personalizing the game based on inferring student’s knowledge state. Bayesian Networks are used to model the cognitive state of the learner. The code is being hosted at github  URL: https://github.com/sids-aquarius/tuxmath, under the bbn branch.

Installation instructions:

t4kcommon is a pre-requisite for installing tuxmath. It is library of shared code between tuxmath and tuxtype.

a.) Installation instructions for t4kcommon

1. git clone git://git.debian.org/git/tux4kids/t4kcommon.git,    # This makes a read-only clone of the t4kcommon repository.
2. cd t4kcommon
3. Create an empty git branch (how?),
4. git pull origin bbn_compatible,                                                              # This branch is compatible with the ‘bbn’ project
5. Read the INSTALL file,                                                                               # Follow the installation instructions

b.) Installation instructions for tuxmath

1. git clone git://git.debian.org/git/tux4kids/tuxmath.git,           # This makes a read-only clone of the tuxmath repository
or
git clone git://github.com/sids-aquarius/tuxmath.git,                   # This is github URL of the repository, both are updated
2. git branch bbn,
3. git checkout bbn,
4. git pull origin bbn,
5. Read doc/INSTALL for OS specific instructions on installing.

Code overview:

Most of the code for this project resides in the src/bayesian/ directory. The main files are bayesian_structure.c, and inference_poly.c. Other files are helper modules, to support these two.

bayesian_structure.c -> This module acts an interface between the game and other modules in src/bayesian/ directory. It is responsible for specifying the topology of the Bayesian Network structures. There are five independent BBN structures, for number_typing, addition, multiplication, subtraction and division. The design of each of them is based on the idea of a back-bone structure, along with local nodes and global nodes and is inspired from [1].

inference_poly.c -> This module is used for performing inference on a BBN based on an evidence node. The implementation is based on Pearl’s Belief Propagation algorithm for DAG’s with poly-tree topology (or singly-connected networks).
Overview of all the modules can be found in src/bayesian/USAGE file – link.

Additionally, –debug-bayesian flag can used while running tuxmath.

Game flow:

game-flow_using_bbn

The student model is only applicable to the Tuxmath training academy mode. So, once a user starts the training academy, BBN’s are initialized. In case this is not a new session, they are loaded from the tuxmath directory (location depends on OS) from a file named “lesson_proficiency”. The user now selects one of the lessons for practice and the game starts. Once in the game, the BBN takes inputs from three user actions (i.e. correct answer, incorrect answer, and no answer). The node probabilities are updated based on the evidence node’s value (true or false), and the evidence is later retracted and beliefs revised. Once the user exits the game, a new lesson is suggested to the user provided the user has a certain threshold proficiency in the current topic. This is indicated to the user by changing the suggested lesson’s position at the front.

Things to do:

– Model game difficulty based on user’s tolerance of difficulty,
– Enhance user interface to show suggested lessons clearly.

Posted on August 22, 2011, in Uncategorized. Bookmark the permalink. Leave a comment.

Leave a comment