next up previous contents
Next: Dynamic Programming Using Typeless Up: Introduction: Previous: Why Should We Care?

Background Reading and Study:

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:

* C+ +:
The following books need to be on your shelf. Lippman will get you started, but you'll also need Deitel and Deitel and Olshevsky and Ponomarev for nuance.
1.
Lippman, S. 1991. C+ + Primer, Second Edition, Addison-Wesley Publishing Company, New York.

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).

2.
Deitel, H. and P. Deitel. 1994. C+ +: How to Program, Prentice Hall.

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.

3.
Olshevsky, V. and A. Ponomarev. 1994. The Revolutionary Guide to OOP Using C+ +, WROX.

This book has a wonderful discussion of call by reference and equally good material on dynamic binding.

4.
Wilhem, R. and D. Maurer. 1995. Compiler Design, Addison-Wesley.

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.

* Object Oriented Programming and Design:

1.
Booch, G. 1994. Object -Oriented Analysis and Design with Applications, Second Edition, The Benjamin/ Cummings Series in Object - Oriented Software Engineering, Ed. G. Booch, Benjamin/ Cummings Publishing Company, Inc., Redwood City, CA.

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.

2.
Martin, R. 1995. Designing Object - Oriented C+ + Applications Using the Booch Method, Prentice Hall, Englewood Cliffs, New Jersey.

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.

3.
Pree, W. 1995. Design Patterns for Object-Oriented Software Development, ACM Press Books, Addison-Wesley Publishing Company, New York.

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.

4.
Soukup, J. 1994. Taming C+ +: Pattern Classes and Persistence for Large Projects, Addison-Wesley Publishing Company, New York.

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!

5.
Gamma, E., R. Helm, R. Johnson and J. Vlissides. 1995. Design Patterns: Elements of Reusable Object - Oriented Software, Addison - Wesley Professional Computing Series, Ed. B. Kernighan, Addison - Wesley Publishing Company, New York.

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!).

* X Window/ Motif Widget Programming:

1.
The O'Reilly X Books

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.

2.
Brain, M. 1992. Motif Programming: The Essentials and More, Digital Press X and Motif Series, Digital Press.

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!!!

* Physiology:

1.
Eckert, R., D. Randall and G. Augustine. 1988. Animal Physiology: Mechanisms and Adaptations, Third Edition, W. H. freeman and Company, New York.

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.

* Neurobiology:

1.
Diamond, M., A. Scheibel and L. Elson. 1985. The Human Brain Coloring Book, Barnes & Noble Books, A Division of Harper and Row.

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!

2.
Hall, Z. 1992. An Introduction to Molecular Neurobiology, Sinauer Associates Inc., Sunderland, MA.

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.

3.
Hille, B. 1992. Ionic Channels of Excitable Membranes, Second Edition, Sinauer Associates Inc., Sunderland, MA.

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.

4.
Gardner, D. editor, 1993. The Neurobiology of Neural Networks, A Bradford Book, Computational Neuroscience Series, Ed. T. Sejnowski and T. Poggio, The MIT Press, Cambridge, MA.

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.

* Information Processing in the Nervous System:

1.
Dudai, Y. 1989. The Neurobiology of Memory: Concepts, Findings, Trends, Oxford University Press.

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!

2.
Hardie, D. G. 1991. Biochemical Messengers: Hormones, Neurotransmitters and Growth Factors, Chapman & Hall, London.

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.

3.
Black, I. 1991. Information in the Brain: A Molecular Perspective, A Bradford Book, MIT Press.

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.


next up previous contents
Next: Dynamic Programming Using Typeless Up: Introduction: Previous: Why Should We Care?
Jim Peterson
1999-04-13