In the last semester of my studies of Computer Science at the Fachhochschule Regensburg (March-July '96) there were two lectures I visited, because their contents seemed to be very interesting.
One of it was titled Neural Networks. For I always had been fascinated by artificial intelligence, I thought it could be a way to learn more about it, especially about the neural net theory.
The other one introduced the new programming language Java. That was the opportunity to get into the "mystic" world of object orientation I've heard of many times before, but didn't realize its advantages compared to traditional programming style. I should not regret my choice.
Besides, I was looking for a subject for my diploma that would finish my studies appropriately. (Of course, another management system for anything could have been written and probably never been used again, but that wouldn't be very motivating...)
The idea of "Neural Net Components in an Object Oriented Class Structure" appeared, when I had to do a project for the neural network lecture. I implemented the Travelling Salesman Problem using a Kohonen Feature Map neural net. Although it was written in Java, object orientation was no problem for me - because I didn't make use of it! So all ended up in one huge class with many unflexible methods.
To get some help on programming a neural net, I read several books which contained many examples, each suitable for just one special problem. However, some parts of the given source codes reappeared in other examples too.
In the neural networks lecture it was spoken of neurons, weights and activation, while the Java lessons introduced classes, objects and methods and how to write reusable software components.
And one thing lead to the other: Assuming that a neural net could come in handy in programs I would write later, it would be a pretty nice thing, if its components could be used like a construction kit instead of writing the same procedures again and again.
So I tried to find commonalities of different neural networks, especially the Backpropagation Net and the Kohonen Feature Map types, because they seem to be most useful for practical purposes.
The result was the Java class structure for neural net components which can be found on the following pages.