“Hello World” is recognised globally by anyone who has taken it upon themselves to learn how to program a small computer application. Writing such a program is most often quite simple within most programming languages and it is frequently used as a welcome handshake to a discipline that for some, comes naturally and for others is a foray into a digital world of disorientation. I often compare programming to learning another spoken language when reiterating to students the need to practice programming daily. By that I mean, visiting a foreign country and learning enough local lingo to get by for the duration of a holiday will only take you so far and then scenarios can become a little obfuscated. This scenario exists for programmers as well and we have several working ways that we use to navigate such situations.
Figure 1 – Hello World – c# Console Application
The Studio is a school where I have been fortunate enough to meet many young aspiring programmers and it has taken a little thought about how best to nurture their growth not just from a technical perspective, but also in terms of building critical industry skills that will enable them to excel once they arrive at their next destination. At ‘The Studio’ we usually start embedding good programming practices early on in years 9 & 10. It comes in the form of simple coding, developing basic applications with descriptive names which carries right through to the naming of methods and functions. This allows students to take a more common-sense approach rather than using typical code examples such as;
IF (Y = A + B)
which has little contextual information and is simply just data. We can change that to:
(RideLift = StudentLiftPass + Student)
Equally, being able to focus on simple routines is vitally important; we need to ensure that learners can see the big picture. After all computers are just a junk of silicon and metal, and not as smart as some technophobes think they are. Computers lack the ability to make decisions for you (sort of), and this is why there needs to be a collaborative synchronisation between users and the intended programs developed for hardware.
Collaborative learning within the coding classroom is incredibly useful, this can take several forms. Firstly, paired programming is a methodology used for pairing two students next to one another so that they can both actively problem solve a single task together. Alternatively arranging the students into several small teams, within the classroom, to develop a small application together often proves successful. The second method is more applicable to students who move on to high level programming qualifications following completion of their GCSE qualifications. Being able to facilitate and guide this collaboration in the classroom, is something which is instant and can lead to rapid problem solving over the student’s shoulders. It is intended to implement Socratic Processes and ultimately gives them a nudge in a particular direction.
Inevitably, we encounter such problems when we build data driven websites, bespoke software applications or perhaps cross platform development for the likes of Android and iPhone. To deliver such projects with minimal problems, we must first develop everything in-house. This development testing allows us to answer several questions: will the hardware cope with the requirements, do we have all the required software and infrastructure to meet the requirements, can it be developed, and [more importantly] what are the problems that we are going to encounter along the way. A typical developer team in a software house would perhaps spend a few weeks developing a mobile application for a client and we must do that too in The Studio, which of course has its challenges. We need to understand the problems students are going to come across as part of the development process in the world outside of the classroom. If we cannot solve the problems ourselves, we are going to be unable to teach the students how to overcome such issues. Then of course we have the ever changing and rapidly evolving hardware alongside the new ways of working.
Figure 2 – C# WPF Application
The Studio has a dedicated programming room where students get full access to machines, this would fill many network IT managers with quite a bit of discomfort for many reasons. But the reality is, we cannot develop as we would do in the workplace without taking off all the shackles and giving our students a high level of trust that they will use the machines as they should be used. However, this reliance on the infrastructure was to rapidly change as society started to change its working habits as part of the national lockdown.
I am sure many readers will agree, lockdown has bought us many new challenges, and perhaps some would say it was like the start of NQT version 2.0. For a programming tech-savvy teacher, I was not at all fearful of being able to host online programming sessions, but there was a lot more factors that I did not really consider until those problems started to surface. The first challenge for me was screen resolution. Students need to be able to see every full stop clearly on a screen, the difference between a comma and a full stop would simply result in an application failing to run. This ruled out Google Classroom, Zoom would suffice as it ticked all the boxes in terms of recording but more importantly it provides a higher screen resolution for when streaming live content. The next problem was the sheer amount of time to deliver a development session. A single programming lesson (two hours) for Key Stage 5 can easily take anywhere from one to ten hours preparation for delivery in a classroom, however, the pace of the delivery online is dramatically reduced. The need to check with each student that they are at the same point as yourself is constant, and then there are the problems that you cannot see for example, problems with software, problems with their own home hardware and of course student internet connections can be problematic too. Largely those problems have been infrequent. The real problems have been around problem resolution remotely, having to resort to hosting projects online, downloading, resolving, and then uploading.
These are all scenarios that you can adjust too but the reality is, you are not going to deliver a development session anywhere near to the same pace as you would being physically present. For me personally, the biggest loss was that close collaboration that all students depend upon, whether that is student to student, or teacher to student. However, there are positives that have arisen from this scenario too; students have had to nurture their own problem-solving skills with much greater effect, and this is such a vital skill for them to have for when they are ready to enter the workplace.
What does the future hold for remote working or for education, no one really knows and while we will gain skills in some online areas, we also need to nurture online collaboration too.
Computer Science Teacher
The Studio School