I ran a survey of (mostly UK) Computing teachers, asking what we’re teaching in classrooms, and why. In the UK, we have a new curriculum which demands all teenagers learn programming, computer science/theory, and core computing/ICT skills.
- UK teachers recommend or choose to teach Python and/or Scratch
- Of all the languages teachers have experience with, C and LISP are the ones most avoided/rejected for teaching
- Alongside core programming languages, ost teachers recommend teaching: Excel formulas, Basic HTML coding, Flowcharting, SQL queries, and CSS coding
- Survey respondents are mostly in Secondary schools (approximately 75%)
- Approximately half the schools have hardware/miniature computers for students to use in the classroom: Raspberry Pi, Arduino, Crumble, etc
- Most Computing departments have specialist ICT and Computer science teachers, with only 25% or so containing non-ICT, non-CS qualified teachers
- Nearly everyone is using an IDE in classroom teaching of Programming
- Almost none are using Bug trackers or Source Control in classroom teaching
Read on for more details…
NB: respondents all received full details, with more questions and results, anonymised. If you want access to similar data in future, please fill in the survey for your school and include your email address!
Languages known and recommended
Surveys have already looked at “what” is being taught, but rarely asked what the teachers themselves were choosing from. And often they only ask about 5 different languages. So I went deeper…
In each case, the first column is number of teachers “experienced/skilled” with the language, and the second column is number of teachers who “would recommend it for teaching/are teaching with it today”.
Top tier: Strong experience, heavily recommended
NB: respondents could recommend languages they didn’t know; C#’s result is not necessarily “everyone who knows it recommends it”.
- Colours are for clusters: for the widely recommended languages, three clusters
- C# stands out: unanimous approval
Mid tier: mostly strong experience, rarely recommended
NB: Survey asked which languages you were skilled with: not merely “I’ve heard of this language”.
- In my opinion, everything in this section has scored low enough you should avoid teaching it, and strongly consider switching next year if you can.
- You may have good reason for teaching it (these all got significantly many recommendations)
- …but they are disliked enough that the analysis needs to be done; are there better options available today that weren’t viable last time your department made a decision on this?
- I could make a case for teaching any of these, enough to convince most HoDs – but it would be tongue-in-cheek, and I wouldn’t agree with it. These all have significant flaws
- Four languages have more than 4:1 ratio of “I am skilled in this language, but do NOT recommend using it for teaching”: Pascal, Logo, PHP, C++
- …if you’re teaching with any of these, you might want to reconsider your options
- LMC is “Little Man Computer” – a version of Assembly based on 1950’s microprocessors, and favoured by specific exam boards. This survey would suggest it’s not great for teaching (personally I would prefer to teach ARM assembly: it’s real, it’s current, and it’s more logical!)
- Ruby and Haskell are dragged down by the small number of teachers experienced with them
Bottom tier: languages that teachers advise against
- If you’re teaching any of the following languages, your colleagues’ bad experiences beg the question: WHY?
- Approximately one third of respondents know C. This is contrary to a lot of assumptions made in the press about Computing teachers’ backgrounds
- Cell formulas are GOOD!
- If you’re not using these in teaching, do!
- When it comes to real-world usefulness, I wish every adult in the UK had experience, confidence, and skill with these
- Flowcharts may be useless in the real world, but they appear effective as a teaching tool
- If you’ve been avoiding SQL in class, perhaps reconsider. In my experience: it’s simple, logical, and whole classes grasp it rapidly
Tools, environments, systems
Coming from industry, I had a perception/suspicion that UK teachers were focussing on the programming languages but missing-out on the toolchains. In industry, that would be considered a disaster.
I would expect a Maths teacher to teach programming as though it’s all about syntax and logic; I would like a Computing teacher to cover all the other aspects of: process, methodology, context, environment, computers-as-tools etc.
So, what do we see…
Everyone’s using IDEs
IDE = Integrated Development Environment. If you’re not using this in your lessons, consider changing that immediately. To clear up confusion I’ve encountered face-to-face at CPD events:
Every modern programming language has a free IDE of moderate to excellent quality. Every decent IDE will auto-complete students’ variable names, hilight typos, etc.
No-one is using source control
Not so excellent.
In industry, if you do any coding at all without using source control you place yourself in direct line to lose your job. It is essential to every aspect of programming – from process to code to debugging to execution. That we’re not using it throughout our lessons is (in my opinion) a serious problem.
- Lets you go back in time to any previous version of the code.
- …Did it work last week but not this week? See exactly what changed!
- …Accidentally deleted some code you needed, then saved it? Bring it back!
- …Need to show your progress over time? Computer does it for you.
- …Want to find out how long it took you to write different parts of your program? Computer does it for you
- …Need evidence that your work is your own? Every mistake and correction has been stored.
- Provides you with remote backup of all your work
- Facilitates sharing your work with other people (e.g. your teacher… or students in a team)
- Automatically keeps track of who in a team wrote which lines of code
Key stage 5 pupils – who have to do long-term projects and coursework / controlled assessment – desperately need to be using source control right now, every lesson. But it’s a skill that I feel should be drummed into every pupil, every lesson, from as close to the start of Key Stage 3 as possible.
NB: I appreciate it’s not trivial to do: I don’t use source control in KS3 yet myself! I’m still figuring out how best to build it into the SoW, and hope to make it core for next year onwards.
Testing and Bug tracking are under-used
Testing is almost as important as source-control. But it’s much easier to deploy in the classroom.
My recommendation: if you’re not already, try inserting “testing time” as a chunk within your lessons. In 1-hour lessons at my current school, it can neatly fill a 20 minute block at start or end of a lesson. This can help a lot with lesson planning, especially if you have to do catch-up sessions with subsets of the class due to absences, progression problems, etc.
For the students working through it, this ticks many boxes, off the top of my head:
- AFL and peer-marking
- AFL and self-assessment / evaluation
- Literacy and numeracy
- Logical thinking and program-tracing / trace-tables
- Evaluating algorithms (straight from the government’s Programme of Study)
- Specification and testing (very important part of exam boards’ marking that we often have difficulty getting students to take seriously)