Out of the many books that are available for self-study in all of the areas above, some have proved to be invaluable, while others have been much less helpful. The following annotated list consists of the real gems:
This book is the most basic resource for this area. While very complete, it has shortcomings; for example, it's discussion of call by reference is very unclear and its treatment of dynamic binding in its chapters on OOD is also murky. Nevertheless, it is a good basic introduction. It's biggest problem for us is that all of its examples are so simple (yes, even the zoo class is just too simple to give us much insight).
We have found this book to be of great value. It intermingles excellent C+ + coverage with ongoing OOD material. This book was very helpful. It is full of practical advice on software engineering aspects of OOD design.
This book has a wonderful discussion of call by reference and equally good material on dynamic binding.
This book has already been mentioned in the text as the source of technical information on how an object-oriented compiler is built. This is an essential resource.
This is a classic reference to one method of handling large scale OOD. As the number of objects in your design grows there is a combinatorial explosion in the number of interaction pathways. The Booch method gives a popular software engineering tool. This is best to read on a surface level, for impressions and ideas.
If you decide to use the Booch method, this book is full of practical advice. It has many code examples, but it has a very heavy reliance on templates. This is a C+ + language feature we have been avoiding (for reasons not entirely clear to us!), so the translation of Martin's code fragments into useful insight is sometimes difficult, but nonetheless, there is much meat here.
The design of classes and objects is very much an art form. To some extent, like all crafts, you learn by doing. As you get more skilled, you realize how little of the real knowledge of how to write good classes is written down! This book is full of hard won real-world wisdom that comes out of actually being in the programming trenchs. It is best to surface read and sample.
We have similar comments for this book. Since our proposed neural objects OOD project will be a rather massive undertaking, useful insight into the large scale OOD is most welcome!
As you program, you realize that many classes are essential building blocks of many disparate applications. This wonderful book brings together a large number of already worked out OOD solutions to common problems. It is extremely important to look at this book carefully. All of the different classes are presented in code sketches ( not easy to follow, but well worth the effort!).
What can we say? No matter how you fight it, you will eventually need to look stuff up in one of these nine books (yes, about 8000 pages of documentation, code fragments, advice etc.). These books must be on a shelf you can visit when necessary.
There are many books on X Windows programming and the use of Motif Widgets. It goes without saying that you will need access to the full set of O'Reilly reference books on these subjects. However, a solid and understandable introduction to this area is much harder to find. This book is a real gem. If we were going to teach a course in this area, this is the book we would use as the text. It has lots of examples, many well-thought out discussions and wonderfully organized appendices for the widget hierarchy. Highly recommended!!!
You will need some basic reference on animal physiology, just to see how all things fit together. This is a good source. This is also intended for browsing when you need to look something up. It has less technical detail than some of the other books in this section and because of that, it has more of an overview character that is quite useful at times.
This book is wonderful! We have used this text so much over the last five years that it is dog-eared and well-thumbed. It is not a stand-alone text as it has wonderful drawings with extremely terse textual descriptions. But it is nevertheless a gold mine!
This is a standard introductory textbook to this area. It has all the requisite detail. We have read a lot of this- much of it gives needed background flavor and a useful feel for the subject.
This is an acknowledged source of material on the structure of the channels through which neurotransmitters (and other things) flow in and out of membranes. There are times when this book was a useful adjunct to our learning process.
This is a collection of articles by a variety of authors on some of the connections between artificial neural architectures and neurobiological structure. It is uneven in content, but it does give a useful overview of what we are trying to do. After reading in this book, we had so many questions, we knew we had to study the real neurobiological literature and the standard textbooks there.
This is a useful book that was our first introduction to theories of how nervous systems handle information processing. It is very speculative and for that reason, extremely interesting. There is much food for thought on software design buried in here!
This is the first book that we began to read about information processing in the nervous system on a technical level. It has useful insights. All in all, we use this one as a technical reference to sometimes dip into.
This is our current favorite! It is an absolutely stunning attempt to understand the how and why of information processing in the large scale nervous system. As you will see in the body of this report, we have quoted from this work extensively. There is so much interesting speculation in here. It is also extremely technical and unappologetically so!!
Finally, there are other subjects that arise too. Sometimes, you will need to know a bit of biochemistry just so you can follow a neurobiolgical argument; in discussion of learning, there are often many references to classical behavioral psychological terms and language. And many other things come up too, such as VLSI design and hardware issues! Study in this area requires an intellectual diversity, but that is part of the attraction!
You will probably need a nice bookshelf with volumes of the sort mentioned above to add to what we will say in these notes. Our plan here is to first introduce the ideas of class design, inheritance and dynamic binding via some simple examples rooted in simple displays of objects in the X Window system. Next, we will introduce a general graph class designed to be relatively secure. and discuss its implementation in C+ + with an X Windows interface. After that, we alter the graph class so that its data can be typeless and develop a number of applications including a general purpose display interface tool and dynamic programming and multigrid classes.
We will specifically discuss dynamic programming with time dependent links and what are called modular networks using these tools.