Simple sample working code (in C) is available for a linear threshold unit and for a vanilla backpropagation network. You are welcome to use this, either by extending it appropriately, or by referring to it and copying or translating in constructing your own implementations, in whatever language you choose.
Turn in a brief writeup, hopefully interspersed with graphs and other graphical data. Handwritten is fine, if readable. Include your code as an Appendix. Rough-and-ready code is fine: functionality is what I care about.
N.B. the code made available does not include a bias input or equivalently a constant additive term. You should include that missing term in your work.
N.B. the code made available does not include a bias input or weight. Instead a sleazy hack is used to fake up an extra bias input line. This does the job for the hidden units, but not for the output units. You can remedy that issue or not, as you choose, but you must justify your choice ... in writing.
Bonus points; look inside the network and figure out what the hidden units are doing and how it all works.
Q: What tool should I use to make graphs and
A: Whatever you like. I would recommend using something canned instead of writing your own. (You can suck the data into a spreadsheet and generate a plot that way, if you're a serious masochist who eschews anything mechanizable and want a dramatic restriction on the number of points that can be plotted.)
Q: What do you mean by "mean error"?
A: The average error across all training patterns. This can be squared error or classification error, as appropriate for the task and situation.
Q: I've used C++ but your sample code is in
A: Don't panic: the sample C code is also valid portable C++. I've avoided use of pointers even where they would have been idiomatic C to make it easier for C++ programmers to read. The only exception is in the I/O routines, which use C constructs instead of C++ ones. The output should be self explanatory. The read_double() routine just reads a double from stdin.
Q: The generate-training-set shell
scripts are in a language I don't know (sh) and use utilities
I don't have (paste, awk, rl).
A: Don't panic: you don't need to run that script yourself if you don't want to. Instead you can just download the training-set file it generates. Instead of using the generating fresh new separate training and test sets, or making your data some other way, you can just split the training-set file into training and test portions. Certainly you don't need to worry about generating fresh data until you have everything else working.