By Chris Douce
This book isn't directly written for educators or those involved with teaching programming. Instead, as it's title indicates, it is book that is aimed at those who are studying computing or trying to get to grips with what programming. The first chapter elucidates by stating that the book is, 'for students in the final two years of school, in Further Educational colleges or the first year of university; as well as those who support such students'.
Studying Programming is completly language agnostic - an decision that I totally commend. The second chapter has a title as well as a number. The title is in the form of a question that asks, 'what is programming?' Interstingly, this second chapter delves into the world of mysterious (and interesting!) notations, mentioning music, knitting notation and the language and rules of heraldry http://en.wikipedia.org/wiki/Heraldry, something that I had never heard of before. Very interesting! This important chapter concludes by presenting some 'real' code after introducing the concepts of instruction sequent, selection and interaction.
A nice touch was the title of the third chapter: everyone makes mistakes. Presenting a whole chapter to tell students of programming, 'that you will make a whole raft of different mistakes, and this is okay!' is a great idea.
One thing that programming text books and manuals don't really tend to present is guidance about how to learn. The next chapter is entitled, 'before you start' and contains a useful section entitled, 'getting the most out of your teaching'. Learning strategies are just as important as programming (and debugging) strategies. Sometimes you need little tips or nudges to allow you to learn how to get the best out of the resources that you have at your disposal. This chapter is all about how to do just this. An implicit point being (in my opinion) is, 'your learning is your responsibility'. You could, of course, extend this point by also saying, 'go ahead and learn from your mistakes, and try to have fun in the process'.
The chapter about your first program introduces the notion of 'hello, world', alongside descriptions of the tools of the trade. Of course, a single program doesn't make a programmer, so further chapters cover writing your 'nth program', introduces object-oriented programming and explores issue relating to debugging and testing. The often challenging issue of paradigm (and the related question of 'why are there different languages?' are address. Attributes are not only discussed in terms of classes, but also in terms of the programmer and how students may step towards forming a career in programming or developing their interest further.
All in all, a fun, easy book to read that presents a lot of material in a friendly and accessible way. In some respects, I will always continue to be a student of programming, but I do feel that I have internalised some of the pearls of wisdom that 'studying programming' clearly presents. When I was reading it, I asked myself the question, 'would this book have been useful to me if it had been available when I picked up my first interpreter or compiler?' My answer is an undoubtable 'yes'. I would even go as far saying that had this text been on the shelves when I was learning, it would have probably helped a lot. The trick is, of course, having other people, i.e. your parents, teachers and lecturers telling you what is good for you. I hope that many early students of programming are recommended this text.
Studying Programming is published by Palgrave MacMillan.