Due to our work at feynlabs, I was recently asked – What’s the best book to get started with programming?
There are many great books – and some programmers would recommend books like Kerninghan and Ritchie .
They are being snobbish ofcourse
But K and R really is not a starter book.
Today, one could recommend any python book – and I love Python especially as a language to get started with programming ..
But my recommendation for one of the best books to get started with programming is a not so mainstream book called Getting Started with Arduino by Massimo-Banzi
But this book is not so well known.. and when it is reviewed, it is from a perspective of working with LEDs etc.
In contrast, my approach and review for this book is as an ideal book to get started with programming (which is perhaps not intended by the author – but it works for us!)
There is an excellent TED talk by Conrad Wolfram on Teaching kids real math with computers. This talk was one of my big inspirations for teaching computing .. the same issues Conrad wolfram talks about with respect to maths also apply to programming (teaching of)
So, if you extrapolate to programming, you need to teach programming in ways in which it could be used (and not give kids unrelated problems which have little bearing in real life)
Specifically, this book talks of ‘interactive devices’ – which in my view are one of the major new future trend for computing itself.
Computing is changing – fundamentally – Both hardware and software are becoming Open Sourced. Value will lie in human innovation where we will use a combination of HW SW and Algorithms to create value.
If you accept this future for computing, then Arduino, Raspberry Pi etc are key devices and they shape the future of computing.
Interactive devices(below from the book) follow a simple process of set-up and loop i.e. waiting for inputs
This trend brings us to a larger world of ‘Physical computing’ which is simplified through devices like the Arduino
So, why does this book help learn programming?
a) It ties the physical computing / interactive devices idea very easily and leads very quickly to real life problems
b) It is only 118 pages!
c) There is a very useful appendix C from pages 95 to 107 which coves variables, control structures, operators, IO, math functions, comms. Essentially, this brings many computing concepts very quickly to the forefront and in a real-life context.
Hence, Aditya and I found it a great book to get started with programming!