Which Programming Language? New to Programming or a Seasoned Programmer? If you are a seasoned programmer with experience in coding then perhaps you will not feel the need to ask the question “Which Programming Language to use” since you already know the answer. Or do you? Sure, you have your experience with a particular language, gained over a number of years, and you may have lesson materials already developed using this language. So you may be reluctant to make a change since this implies a lot of extra work. Well, that work may be worth it for the sake of your students’ experience. If you are a newbie then you are in a more exciting place since you are not constrained by your background, but at the same time you may feel somewhat “at sea” given the large range of programming languages available. You will also be aware of the fact that there is no single language or approach used in schools, different schools adopt different programming languages, for various reasons. How many of these reasons are informed by educational thinking? Mm, not sure. Common Wisdom is perhaps not the best Wisdom One delegate during the closing discussion at our Symposium suggested that the choice of a programming language is not relevant, it is more important to understand the “principles of programming” rather than the syntax associated with a particular language. This is indeed common wisdom, and is also echoed at University level. However, I suggest that this common wisdom may not be true and therefore that the choice of programming language is important. But first we need to accept one point; there is no programming language which is more ‘powerful’ or ‘expressive’ than another, so there is no fundamental reason to choose one particular language over another. Another point to consider comes from the study of natural languages through the field of Linguistics, in particular the “The Whorfian Hypothesis” which roughly speaking suggest that our natural language (English, Dutch, French) affects the way we think! Carrying this over to programming languages suggests that our thinking may well be influenced by the language we choose to program in! Since the choice of a programming language may affect the way our students think, it will therefore impact on their learning. A more concrete guide may be obtained from reflecting on the progression of our students (in their learning programming) from KS3 onwards, perhaps through A-Level, degree courses and so into employment. Working backwards, there are clear employment opportunities which require either a C-family or a Javafamily of languages. That is interesting, since both families share a lot of similar syntax, which is very different to other languages such as Python or Visual Basic. Finally, there is the question of whether to start teaching with an Object-Oriented language, or not? There is a healthy academic debate about this which has mainly focused on University teaching, but may be relevant to our cause. Towards a Strategy One emergent result of the Symposium was a feeling that the “Processing” language could be a useful way of engaging our students in learning programming at some stage, possibly at KS3. Perhaps this would follow some work in years 7 or 8 using Scratch. This language shares much syntax with the C and Java families and would therefore be a good route to progress towards these languages. This language invented at MIT was intended to help artists program, and so to produce artworks. This is interesting since this language will clearly encourage creativity as well as problem-solving. So, (after Scratch in years 7/8) if you start teaching year 9 with Processing, you could easily move into “C” or “Java” in the GCSE years, and continue with C, C# or C++ at A-Level. There will be seamless transitions between these languages. But if you choose to use Python, VBA or anything else at KS4, then your students will experience a conceptual ‘jolt’ due the incongruent syntax of these languages. In summary, here’s a strategy template: Adopt Processing in year 9 to motivate your students to be creative, and to enjoy writing code. Carry your teaching of Processing on into year 10 to explore the requirements of the GCSE syllabus. For example the OCR syllabus (2.3.1) requires understanding the concepts of sequence, loops, conditionals and (1-D arrays). All of this was covered in the Symposium worksheets I provided for you. (I created these worksheets with the OCR syllabus in mind, therefore please revisit, reflect and complete! Try to discover the thinking behind these worksheets’ construction). In year 11 you could easily continue with Processing and hit the specification requirements, and I feel that would be a very worthwhile approach, since your students will feel a progression of understanding. If your students are to progress into A-level studies, then you may like to offer them the OpenFrameworks alternative. This will capitalise on their Processing experience but situate this within a C/C++ context. You may even want to run both Processing and OpenFrameworks within the same class in year 11. It could help you differentiate and therefore encourage a discussion amongst your students! The Sixth Form is clearly the place for one of the C-Family of languages. If your syllabus requires a study of object-oriented programming (OOP) then I suggest you look at C#, else choose vanilla C.