For the past few years I've been struck by the desire to create a program that can learn. A few years back my interest was sparked when I realized that learning is just another word for adaptation and that if the forces of evolution can work on adaptations the same should be true for learning.
To that effect I've been creating a program in Java that creates a variety of genes which describe the structure and attributes of neural networks. The program goes on to test those neural networks against a problem and breeds new genes based on the most successful neural networks. After many generations of this the neural networks become closer and closer to solving the problem. This is known as neuroevolution.
I set up a blog a while back to discuss my progress on the program at Neurovolve.com.