Welcome to the GNA C++ course

Hello to whoever is reading this! As you may have seen I've only joined the course very recently as a consultant and felt very flattered to be asked. I think this is one of the most exciting things happening any where at present and I'm very excited about it. Since it's a completely new adventure I hope some of my thoughts may be helpful!

You, the students

I've spent today looking at your backgrounds and I'm impressed. Many of you have spent a lot of time in computing of various sorts and are clearly very experienced. All of you show a keeness and excitement and a commitment. Some of you are doing it because you feel C++ is the way ahead (it is!) and some because you really like the idea of this place and the ideas that will come out of it. I share both these views, and I also love being involved in helping people learn (I use that phrase rather than "teaching"). Reading your experience really gave me a great boost today - I feel there will be a real sense of excitement, commitment and a great deal of experience we can share. Also it will be tremendous fun!

The challenge

We're attempting several things at once here, and all of them are challenges! I'm outlining them here not to put you off, but to make sure that when we hit the rough water we aren't surprised! So we haven't been able to plan this course in detail - how could we? The single most important factor is yourselves . What we've done is to provide a number of resources and guides.

Resources and Approach

Projects

I have been very successful with group projects with students much less computer-literate than yourselves. I think there is enormous scope for communal projects, and C++ is very good for allowing groups to work in parallel. I'd see us knocking some ideas around and gradually homing in on a feasible project. We might then be able to break this down into a central core, and peripheral modules. A simple example is a format conversion program (e.g. between different graphics formats). We decide as a whole what the appropriate structure of a format-independent object might be (not necessarily getting it completely right!) and also what formats might be involved. We'd agree on the interface between the core object and any format and the individual groups could write their own reader/writer to that contractual design. They could each test their modules with their own simple test harness and when they brough them all together it should work (!). I did this sort of thing with molecules and it really did work! And the students loved it.

Other topics

Some of you have mentioned that you want to learn principles of Object-Oriented Design. In my experience (I can't speak for the others) getting classes right takes a great deal of work. I've torn my classes up at least twice and recycled them, simply because I've changed my ideas about the subject! For example, I now refuse to write a Molecule because it's impossible. It would require the whole of chemistry to be included! Physicists and mathematicians will argue about whether Points and Vectors are different or not. So I think what we can offer is constructive discussion of areas where OOD is important, and to get the feedback from the rest of the class. Always remember that you are writing systems in which humans matter!

PeterMR