Of course C# seems like a horrible choice for learning about this sort of stuff, but maybe that's just me.
in my opinion, using mathematica (or some such) would have been a far saner choice, to get to the essence of the subject. also, a dosage of classical (pioneering ?) work as described in (parallel-distributed-processing vol-1&2) http://www.amazon.com/Parallel-Distributed-Processing-Vol-Fo..., would be just great.
There's a bunch of free textbooks online, especially for CS and math topics. I'd love to see online communities develop around the textbooks for like-minded people to form study groups.
Look, a neural network is not some magic machine that can solve all your classification problems. A good 90% of applications of ANNs I've seen could (read: should) have been replaced with a support vector machine, or a Bayesian classifier, or some other proper statistically principled model.
I swear, I get the impression that people keep coming back to ANNs just because the goddamn name sounds cool.
In my mind, neural networks should only be used when you're trying to model actual biological systems. Otherwise, one should always use a proper model - since it actually gives insight into what's going on with the system, instead of just being a magic black box. Of course, notice that all commonly used ANN topologies have nothing to do with biology - feed forward, hopfield nets, kohonen maps etc. They have barely any resemblance to how actual neurons behave. Basically, they are just heuristics with a cool sounding name.
Both of them are inefficient and rarely the right tool for the job. GA and ANN are used for situations where you don't care about how you got to the solution and what it took to get there, as long as you get close to it in the end.
- parallel distributed processing (PDP group vol 1 & 2)
- simon haykin (Neural Networks and Learning Machines)
- christopher bishop (Neural Networks for Pattern Recognition)