Geek, programmer, foss enthusiast, loves Python, Ex-Microsoft Student Partner, Ex-National Instruments.
You can
Subscribe to my blog,
Follow me on twitter
Swype is an awesome software which makes typing in mobile phones using the qwerty keyboard very easy. This is how it looks:

I was just thinking how this could be implemented. It boils down to a string sub-sequence problem. The path traced by the user consists of all the characters in a word. This is an ideal situation, but many a times, we do not take care of all the characters in between and miss many of them.
Some of the characteristics i have considered:
We can use a number of such characteristics and increase the chances of suggesting the right word. One such hint i can think of is:
Groups like bnb, bgh, kli, dsd strongly suggest that there is a turn which signifies a character which has a higher probability of being present in the word.
I wrote a basic version of this using python and this wordlist. Some basic introduction to some of the functional programming used here is discussed in this link
The results for the same were pretty good.
The basic version was working within an hour. I must say that the string split method in python is very well thought of. split( delimiter, 1) returns a the string before and after the first match.