Programming is a complicated subject. It is a subject about logic. Mathematics is another subject that is closely related to logic. However, unlike Mathematics where students need only to solve the problem, in programming, they also need to instruct the computer how the solution can be implemented. Students taking programming for the first time are overwhelmed with analysing the problem to provide a solution, designing the solution using logical steps, implementing the solution in a programming language and using a tool they are not familiar with. These contribute to the high failure rate for this subject. It is not uncommon to have a 30% failure rate in a novice programming class. Novice programmers are not only developing one skill, but multiple. They are problem solving, learning a new programming language, and working with a new tool.
Another important aspect of programming is understanding how memory works. Instructions and data are stored in memory. Through years of teaching, it has been observed that students who understand how data is stored and read in memory will be able to give the correct instruction to the computer. This understanding will help students understand why certain commands can only be used for certain data types. For example, when programming in the JAVA language, the sign “==” should be used for comparison of character, Boolean or numerical data type, and Object. equals () for String comparison.
Students who have taken part in a programming class will be able to testify to this. After taking the subject, the steps they take in problem solving will be more structured and organised. Students who do well in the subject are those who pay attention to details and are strong in logic. They are also able to see that a single problem can be solved in multiple ways. Students who fail novice programming should not consider themselves unable to do programming. Most are able to cross the hurdle at the second attempt. There have been students who fell in love with the subject and Computer Science after the second attempt. A programmer turned financial analyst will be able to write programmes that enable faster and a more customised analysis. In other words, programming is a subject that is applicable to non-Computer Science majors.
However, many still find programming challenging and difficult, regardless of whether he or she is a Computer Science major.
The $1,000 question is: how can it be made simpler, especially for non-Computer Science majors?
Research shows that a common challenge for novice programmers is syntax error. Syntax errors occur when the compiler cannot understand a specific computer instruction. For non-programmers, a compiler will translate the “English look-a-like instruction” (also known as programming code) to machine language for a machine (or a computer) to execute. There has been research that simplifies the process of writing programming code through simplified grammar, or even a drag-and-drop technique that replaces code typing. These tools would also need to have a simple interface to reduce the learning curve. The drag-and-drop technique allows students to focus on the logic of the programme and the solution to the problem by constructing the required steps instead of being overwhelmed by syntax errors.
Simulation allows students to see the impact of the programming code. Many students learn by observing the impact of the instructions given to the machine; for example, requesting a button to change its colour from red to blue or asking a robot to move forward 10 steps. Being able to observe the immediate impact of given instructions helps students to understand the code.
If you have no experience with programming and would like to start somewhere, the website code.org provides many drag-and-drop games, equipped with simulations for beginners.
Dr Sim Tze Ying
Center for American Education
Originally published in The Edge, July 2019