I realise I haven’t touched my blog for quite some time, I’ve had a lot of work on at university mainly with assignments and organising events for the Computer Science society. Right now I’m on my way home to St. Albans in an East Midlands Train which I always forget doesn’t have plug socket. So, for as long as 85% charge on a MacBook Pro will allow, I thought now’s better time than any to talk about some of my experiences teaching programming in the past.
For the past year I’ve been serving as Secretary for the computer science society at Sheffield university, the role is fairly full on to be honest. Most of my work involves writing minutes for our weekly committee meetings, booking rooms for events and contacting anyone inside or outside of the university that we work with. One of the roles that I volunteer for regularly is running our societies workshops, as a society we aim to provide computer science students (or anyone that’s interested really) a chance to learn extra topics that aren’t covered in the curriculum (or not in particular detail or what have you). We’ve run many workshops on topics such as Linux, Git, React, Angular, Vue and PC building. So far I’ve delivered three workshops, a general introduction to programming for non-computer science students, an introduction to Android application development and an introduction to Unity game development and I’m currently preparing to doing a workshop on React, Angular and Vue.
One of the main challenges I’ve faced when running these workshops is with peoples skill levels and past experience. In particular my Android App Development workshop and the Unity Game development workshop. With both I had a mixture of computer science and non-computer science patrons therefore having to deliver content that’s relevant to both parties was very challenging. In both cases I would find myself rushing over the programming side of things, creating interfaces here and instantiating objects there – for the seasoned programmers in the audience this came second hand to them and they were only there for the subject specific knowledge of how to use the phones sensors or how to create 3D particle effects, however more often than not I’d have to slow down and explain to those in the audience what a class is or how variables work. Luckily for me I’ve both privately tutored programming to complete beginners as well as taught programming to a class of year 6 pupils for two years, teaching these people this basic content wasn’t the hard part however, it was keeping those who have programmed before interested. The way I usually mitigate this issue is by giving the experienced programmers challenges to work on whilst I help someone else out, for example in the game programming workshop, whilst I would help fix bugs on one persons computer I’d get the others in the audience to try and figure out how to edit the environment in their games.
This really reminded of when I used to help teach at a primary school. When you gave the pupils a task some would race through it and complete it within 30 minutes in the hour and a half session so would always need something else to keep them occupied. Instead of giving them next weeks content to move onto it would be best to test them with the content they already new. When teaching programming, once I’ve taught about variables, if/else commands, inputs, loops and maybe even functions instead of moving onto more higher level topics like classes or multithreading I’d get them to try and make a text based adventure game. This was great because it meant that they could show their friends what they had made and get them to play each others games, not only this but it also helped reinforce what they had learned and they could keep working on these games until the session was over, keeping them occupied.
An issue I’ve faced with both teaching primary school students, privately tutoring programming and running workshops at university is dealing with peoples expectations of these events. A lot of people come into programming workshops hoping to come out making the new Facebook or building the next Call Of Duty, in both my Android App development workshop and my Unity Game development workshop I’d have people at the end of both sessions come up and ask me really specific questions, basically asking me how to go about building their million dollar idea. Usually I explain to them that if I knew how to precisely build their app/game I wouldn’t be here teaching a general introduction to the topic. What I do is give them a general idea on how I’d go about doing it and then point them in the direction of useful resources such as books and online tutorials on the subject – this usually suffices. With younger students however it’s more challenging, letting them down that “No, in this hour session we will not be building Minecraft” is tough because you still have to keep them interested and excited about learning to code, how I went about this in the past was by giving the stuff I was teaching a fun context, I.e, by the end of todays session, you’ll be able to make your own text based adventure game, or a simple game of Brick-Breaker. It stands to reason that kids don’t really care that much what an if statement is.
My train is just pulling into St. Pancras so I’m going to have to cut this blog post here, I hope me writing about my past experiences teaching programming has been interesting, I have to be honest I find it really enjoyable watching somebody be able to build something they’re proud enough to show to a peer and would definitely recommend to people to volunteer for any chance to teach.