Friday, April 4, 2008

Creativity and computer science

If you listened to the NPR piece on computer science education in my Where have all the children gone posting you will know that computer science wants to change its image as a bunch of guys sitting around coding in a dark room. I'm no computer scientist, just a boring old business programmer, but I'm always in awe of the creativity of those that dig deep into the bit stream. Let me share a story.

CAPTCHA is method in computing to determine if the "user" is a person or some automated program. You'll probably recognize a CAPTCHA as the requirement to type in the numbers and letters you see in an image before getting a free email account or posting a blog comment. Since current computer systems can't read those images, if you type in the right answer you must be a person.

Well that's kind of creative, but what's really interesting is what Carnegie Mellon University (CMU) is doing. There are numerous projects underway to advance human knowledge by digitizing books from before the age of computers and making them freely available on the web. They do this by scanning the pages and having a computer convert the image of words into text using optical character recognition (OCR). Unfortunately not all words can be interrupted by computers so a human must do that. Hmmm, that sound almost like a CAPTCHA.

Some smart people at CMU decided that they could harness the collective power of some 60 million CAPTCHA's solved every day by creating a free service called reCAPTCHA. It gives a two-word CAPTCHA, one word is known so they can validate you as a person and the second is an unknown word from the digitizing project that needs human interpretation (read more here). Every time you solve their CAPTCHA you are stopping spam and helping to convert a book to digital format.

reCAPTCHA is a creative way for you to donate your time to a good cause, in productive, 3 second increments. Similarly, projects like SETI@Home and Rosetta@Home borrow your computer's unused processing power to help find extra-terrestrial life or understand the structure of proteins, respectively (Rosetta us hosted by the UW). Both use BIONIC, an open-source software product to facilitate volunteer grid computing. People around the world download the BIONIC software and sign-up to help a computing problem. When they leave their machine idle, BIONIC goes out, retrieves some work, processes it and then returns the results to the host. The user has donated their unused computing power at little or no cost to themselves. The project gets vast computing resources for free.

Which brings us back to computer science and creativity. The problems being solved here aren't computer problems. The real problems are a lack of time, resources or money. A student's computer science training gives her the analytical skills to identify the problem and the programming skills to implement a solution. In between is creativity.

Tags: , ,