I’ve written an ebook, aimed at introducing a few aspects of computer science to a general education audience for Microsoft Education. This was released today on Slideshare, from where a PDF version can be downloaded. This is more of a ramble through interesting countryside taking in some nice views than a detailed treatment of the subject. Of particular interest is the mapping of Microsoft products and technologies to the requirements of the computing programmes of study at the end of the book.
Here are my concluding recommendations:
Learning through making
There’s little doubt in my mind that the best way for someone at school to learn the fundamentals of Computer Science, or more importantly to develop their computational thinking skills is through repeated, meaningful practical experience programming. An understanding of the foundational ideas, as well as the broadening of horizons which a good theory lesson can achieve are important, but just as experimental investigations and the application of the scientific method should lie at the heart of science education, and practical performing and composing in music education, so writing useful, working software is an essential part of CS education.
Learning through sharing
Similarly there’s no doubt in my mind that learning is a social process – we learn from one another, as well as from play, exploration and experimentation. This is as true of CS as any other discipline. It’s also evident from the craft of software development, where team work and peer learning are very evident. I don’t think it any coincidence that so many of the introductory programming tools discussed above include mechanisms for sharing the source code of programs via the web: being able to see how others have solved problems, and adapt their solution to fit the problems you encounter is a great way of learning to code.
I come back again to the need to focus on understanding rather than skills as we move to Computing from ICT. Yes, the practical skills of using a programming language and working in an IDE are useful and important, but they’re not an end in themselves. CS in schools needs to be about education, rather than training, and education is, for me at least, about developing some degree of all-round understanding. There’ll be plenty of time after school (in either sense) for those who want to become software developers to polish their practical skills, but CS education for all is more about insights, ideas and fundamental principles.
More than one programming language
There’s an expectation in the new programmes of study that pupils learn at least two programming languages between 11 and 14, and I think rightly so. Swapping between different programming paradigms develops a flexibility of mind and a breadth to their understanding of computation that’s hard to acquire through mastery of just the one language. There are strong arguments in favour of professional developers learning a new language each year, how much more so for those still at school. There are many ways to do this: swapping between the visual programming of Kodu or Project Spark and the text based programming of TouchDevelop or Small Basic could be one, or between the functional modelling of Excel to object oriented, event driven programming in Visual Basic another.
More to CS than coding
In England, the old ICT has been replaced by Computing, but Computing includes more than just Computer Science – IT and critical digital literacy (the applications and implications of the subject, if you will) are essential for a broad and balanced Computing education. It’s also worth remembering that there’s more to CS than coding – the coding bit is great fun, of course, but understanding how computer hardware works, how networks work and how data can be represented and manipulated similarly should be part of any CS education. Relatively few pupils learning CS in school will become software developers, fewer still academic computer scientists, but all should have some grasp of computation and how digital technology works, and most will find plenty of occasions to apply computational thinking to other areas of study or employment.Share