Learning how to code has many similarities with learning a foreign language. You can learn the vocabulary and the grammar and you will soon be able to read text in the new language reasonably well. But speaking or writing in the new language can be a bit harder at first and needs more time, and importantly, needs more practice.
When learning how to code, learning new commands is not the most important thing. Learning the grammar, or syntax, of the language is important. But learning to think in the right way is probably the most important skill to master. And this is the sort of skill that improves a lot with practice.
To become independent coders, students need to be able to start from a blank screen and know how to get going with a project. This step can be more challenging then it sounds. It is easier to add something to a program that is partially written rather than to start writing from scratch.
An important part of a coding curriculum is the focus on helping learners become proficient, independent coders. At codetoday, all of us come from a background in which we use or have used coding professionally in various areas. For this reason we have always placed a lot of importance on helping students become proficient.
How Do We Help Students Become Independent Coders
There are three important aspects of what we do that focus on making sure our students progress towards becoming independent coders:
We include planning of code as an integral part of our live sessions
We strongly encourage students to code after the sessions and we support them in doing so through 'The Codetoday Community' forum
We run stand-alone codetodayEXPLORE sessions in addition to the structured courses in which students work on independent projects with the assistanace and guidance of our instructors
Let's have a look at each of these points in more detail.
Planning of Code as a Key Learning Objective
Often, people assume that coding is mostly about learning lots of commands. This is however the least important part of learning how to code. Learning the 'grammar' of the coding language is another area often associated with coding. And in this case this is important. But it's not the biggest challenge when leaning how to code either. The 'rules' of how to use certain coding tools are picked up quickly by most.
The area that not many people appreciate is a key part to coding is the planning stage that comes before a single line of code is written. We often tell our students that before they write a single line of Python code, they should spend some time thinking of the problems they are trying to solve and to write some steps that are required in plain English.
Once this planning and thinking stage is complete, and only then, should one start to write computer code.
This is a very important learning objective in our coding curriculum and, especially as students progress beyond the very early levels of our courses, takes a central role in many of our sessions at the start of a new project.
Supporting Students Through The Codetoday Community
The live sessions are an important component in our courses, but there is more to a Live Online Coding in Python course than the live sessions. In addition to the extra material we provide on our learning platform, all our students get access to The Codetoday Community. This is a private forum available only to our students in which we provide extra challenges but also where students can post their code and their questions and get feedback and assistance from our team of instructors.
We strongly encourage students to find time during the week to code indepenedently either on the projects they worked on during the sessions, or on new projects. The best projects are always the ones that a student thinks of himself or herself.
But even more so than with other subjects, when coding independently it's very important to have someone you can ask for help. In coding, if there is an error in the code, or something is not working, then the computer program will simply stop. This can be frustrating for a beginner as unless they can find the problem, they simply cannot carry on. One can still carry on writing a story even if there is a spelling mistake or a grammatical mistake, but in coding this is not the case. The program will simply refuse to run.
This is where having a support structure comes in useful for our students. Once they have attempted to solve the problem themselves, they can post their code and their question on the forum and one of our team will respond with some help. And other students can also participate in the discussion.
And even if a student doesn't have any problems with the code, they can still post it and get feedback from us.
Students who use our forum regularly not only get better at being independent coders, but they also learn how to ask for help and how to interact in a web forum. And they can do so in the safe environment of a private, moderated forum.
Focusing on Independence Through codetodayEXPLORE Sessions
Throughout the year we also run codetodayEXPLORE sessions. These are sessions for our existing students in which each student has his or her own project to work on independently. We propose projects to students based on their level but we also encourage them to make the project their own, or even to come up with their own idea.
During these sessions, the students will work on their projects with our instructors guiding them through the entire process, from planning to writing the code, finding and fixing errors and bugs, and testing the code. These sessions are specifically aimed at helping students consolidate the knowledge they have acquired from the courses and to gain proficiency in their coding and learn to become more independent coders.
At present we run codetodayEXPLORE sessions during holiday weeks, as an add-on to the standard courses, but we are currently planning to run these sessions even more frequently throughout the year.
We finish off this post with some final advice to all our students. The three most important things to become more independent in your coding are:
Practise
Practise
Practise