We are living in a digital age, where a certain level of ‘digital literacy’ - the ability to utilise technology in order to live, learn and work - is crucial. Shopping, banking and, especially in recent years, education, increasingly take place online.
As having knowledge about technology becomes more essential, coding is set to become a key part of this literacy. However, the role coding will take differs from person to person. Learning about different types of coders and their needs is crucial to ensure that all students, at whatever level, can excel. In this article, I’ll go over the three basic types of coding students, what level they work at and which features and tools will assist both teachers and learners.
Before we start, it is worth noting that all the tools mentioned can benefit coders at every level! However, some can be especially helpful at different stages of learning.
Group 1: Coding to understand
The first group is those who use coding to understand. These are learners who won’t work in coding-heavy job roles, but will require basic knowledge of coding. For example, someone working in sales for a tech company, although they aren’t engineering the product themselves, would need a basic understanding of coding to help fulfill their role of selling the product and understanding the market. Or, take, say, a consultant in a tech company can use coding to understand their revenue models and risks.
Now we’ve established who Group 1 are, let’s move on to what they should learn. These novice coders will need to become familiar with basic coding concepts, as you have to start with the foundations. They focus on only one programming language and one paradigm. This is because it’s far easier to get to grips with one than try to master them all. Now, which language should you teach first? That’s a whole other question! Check out our take here. Importantly, you cannot talk about code or work in relation to it, without learning how to write it first, so as always, practice is key.
How can this group be assessed effectively? After all, this is the most difficult stage of a coder's learning journey - they are faced with completely new concepts and must adjust to frustratingly specific learning. In the midst of this confusion, fast feedback can be a lifesaver. If a student submits their first few lines of code and has to wait a week to receive feedback, the learning process becomes long and painful. Getting feedback (almost) instantly allows students to see their mistakes, correct them, and resubmit. This iterative process works and applies to all coders! (Check out our discussion on transformative feedback here). Additionally, assignments for this beginner group should be simple, small and automated.
CodeGrade has exciting plans for an assignment bank with language-specific assignments all in one place, giving CS educators more time to teach! Learn more about language-specific assignments on our blog!
The need for small, automated assignments increases teacher workload. A sophisticated grading platform, equipped with autograding and customizable features, is essential in order to ease the grading workflow and deliver fast feedback to students. However, this alone is not enough! Students also need a reliable support system, where they can communicate with their professors.
Lastly, beginners can easily get overwhelmed by the coding environment - downloading a program, installing packages and compiling and running the programming language are all necessary before you even start to code! These are very useful skills, but may be too much to grasp as a novice coder, who just wants to understand the basics of coding. A user-friendly environment lets students focus on the assignment at hand. CodeGrade has its very own easy-to-use editor, coming Q2 2022!
Giving learners these tools lays the groundwork on which more advanced knowledge can be built. Without them, the difficulty and frustration of learning to code can lead to a lack of motivation and turn people away from the subject, which we know is a real problem in CS education (Flinders, 2019). These features help learners grow in terms of both skill and confidence!