By Zan, 31st May 2016
We get asked this question a lot. Its probably up there with the number of times kids ask "Does this part shoot lasers?"
Our short answer is usually "You know what? It doesn't matter. Use the one you're most comfortable with and as long as they understand functions, variables, Ifs, whiles, fors, arrays etc. its fine."
However, we realise that perhaps a bit more of an in depth answer is required, and, although the above may be true, schools need a framework and something solid to go on.
(We did write about this a while back, you can read the old article here)
So, here are some of our thoughts and recommendations:
The C language:
Good old C.
It is hard to learn, but so is any language if you're new to programming.
Windows and Mac OS are written using C (parts of them use other languages like c++ and assembler, but we'll talk about that another time).
Its also widely used for embedded systems and robotics, so still highly relevant in industry and a good language to learn.
Do we recommend this for teaching?
Not in your first lesson with timid year 7s - no way.
If you want to go down the C route with this age group, use arduinos to begin with. This gives them a gentle introduction to a simplified version of C.
However with able and interested year 9 and upwards, including sixth form, yes, we do highly recommend teaching them at least some C.
C is great for learning about programming and how to program. As I said, it is one of the harder ones to learn, and because of that you'll be doing your students a few favours:
- It will teach them how to apply thier programming knowledge to a different language
- Other languages will seem much easier
- To understand how C works, you have to start looking under the hood.
Here's an example:
//Print something and then newline
Compared to python: print "Hello World."
With the C version, kids will look at the #include statement and ask why its there, which leads nicely into libraries and best practice for coding.
int main() will stir up a question or two which leads into functions, the printf statement has a few interesting concepts and the return 0; will need some explanation too.
The nice thing about all of this is it shows students that programming doesn't just work, there is stuff happening behind the scenes. When you write a print command in any language, the computer itself doesn't necessarily understand the word print the way we do. It just knows that word means go to a specific place in the processor, set some ports and output some characters.
The C programming language is a great way for kids to see some of this and start to understand what's happening.
So we highly recommend C programming for schools, but only introduce it once your students are happy with some fundamentals and are engaged with computing in general.
Python is cool, sometimes it can be used instead of C, depending on what you're making.
Its great for desktop/online applications and games, in industry its used with other languages including C and C++ as part of software solutions, so a good language to learn.
Our only hesitance with Python is that some of the stuff is hidden or 'dealt with' by python, for example you can make variables as you go as opposed to having to declare them at the beginning.
This isn't a bad thing, it just means it makes it a bt harder for kids to then learn other languages that have to be compiled and work differently.
Generallly speaking this is a useful language and good to teach KS3 and take it further with KS4.
I've grouped these together because anyone who wants to build cutting edge websites will need to learn at least these (there are a few more, which I'll touch on another time).
Kids enjoy making websites and when learning the language they have something very visual to see the effect of changes in their code, which makes the learning curve less steep.
So teaching these to your students covers a wide range of programming skills - highly recommended.
Java and C++
These are objected oriented languages, which is widely used in industry and so should be taught in schools. I will cover these in a bit more detail in another post.
If you have any suggestions, feedback or questions do let me know.
Email: hello @ restech . org . uk
Tel: 0117 214 1587