I am doing a Neural Network project as my final year undergraduate project. The idea of the project : A very simple robot with 2 motors, and two ir and bump sensors will traverse a environment with the use of a Neural Network which is in a computer. The main requirement is to observe possibly with a suitable GUI the learning process and the evolution process of the Neural Network. (The main objective is to observe the neural Network, and its changes not to drive the robot). The robot will communicate with the computer using Serial communication in the earlier stages of the project and then will using WLAN..

My question is which is the best language that can be used to implement the components in the Computer (Neural Network). The things that has to be considered are : Ease of implementation of neural network, Performance (Although the robot task seems simple, observing the neural network's evolution might involve bit of maths also changing the GUI), Ease of interfacing to the hardware (Serial and WLAN)

I have so far considered JAVA and C#.. I request your opinion too... Please give your feedback on the project and on the aspects of my considerations when choosing a language.(In other words.. what more should I look in to before taking a decision)

Thank you.

All the help I can offer is that C# is powerful for network communication, threading and easy to use graphical user interfaces all together, but more than anything I'd just like to wish you luck, sounds like a great idea!

Best of luck.

Personally I'm a big fan of C#, I especially like using WPF for my user interface. However I don't know how well it interfaces with the hardware. Take a look at Microsoft Robotics Studio, you might be able to find some tutorials there that give you an idea of how to interact with the hardware.

I know that C is commonly used for interfacing with hardware in a number of different applications. However learning a new language for that seems a little crazy. But if you want to crank your performance really high, C, C++ or Assembly are your best bet.

In terms of implementation, any Turing Complete language will do. Since most things are (Java, C#, C, C++, even Pascal) I'd suggest you go with the language you know best, since that will make it easier for you.

And as Kimpl pointed out, C# makes managing your threads a breeze, which is definitely a plus :)

Good Luck,