Student Programmers - Don't skip the beginning!
As we near the end of the first academic term I am looking at another set of exam papers consisting of some vague recollection of stories from my budding software engineers. I tried a little experiment this year to determine if the poor programming skill I had noticed in recent weeks was genuine, or simply a lack of planning.
Programming is cool! Coding is also cool. However diving in and typing random code is not good. In my most recent assessment I quenched the desire for my blooms to dive in and just slap the keyboard in a random way and then get frustrated. By having a theoretical part and a practical part to my algorithms exam. In the theoretical part they write a couple of simple algorithms, then they say what the parts of an algorithm are, and they write algorithms in a couple of ways, and they get an algorithm to bench test. Nice easy progression, mirroring the course. The code generated by each student was workable, even if they had forgotten how to bench test an algorithm they had simple identified the simple error that I had put into a prime finding algorithm and corrected it. Under exam conditions with a structured
The very next lesson I set a similar task without forcing them to sit down and write an exam script which ended up with them writing and testing their algorithm before coding it in. I did remind them of the planning process, and encouraged them to work collaboratively. The result - almost no progress in double the time. This lack of progress was not through being unaware of the planning process, nor through being unable to communicate with each other - they simply could not stay away from the keyboard long enough to get their ideas of how to do things down. This led to frustrations and suppressed tantrums
In retrospect, when the class was forced to plan properly their planning was sound, and programming ability was much better than I thought. It was simply that the lack of process, and particularly planning was hindering their progress.
With the above in mind I would like to offer the following;
Dear Programming students;
The computer is not a machine like in a factory where productivity is dependant on you pressing the buttons frequently. The computer is much more efficient if you relax, take your thinking time and plan. I really do mean the bits I say about using the design process.
Programming is cool! Coding is also cool. However diving in and typing random code is not good. In my most recent assessment I quenched the desire for my blooms to dive in and just slap the keyboard in a random way and then get frustrated. By having a theoretical part and a practical part to my algorithms exam. In the theoretical part they write a couple of simple algorithms, then they say what the parts of an algorithm are, and they write algorithms in a couple of ways, and they get an algorithm to bench test. Nice easy progression, mirroring the course. The code generated by each student was workable, even if they had forgotten how to bench test an algorithm they had simple identified the simple error that I had put into a prime finding algorithm and corrected it. Under exam conditions with a structured
The very next lesson I set a similar task without forcing them to sit down and write an exam script which ended up with them writing and testing their algorithm before coding it in. I did remind them of the planning process, and encouraged them to work collaboratively. The result - almost no progress in double the time. This lack of progress was not through being unaware of the planning process, nor through being unable to communicate with each other - they simply could not stay away from the keyboard long enough to get their ideas of how to do things down. This led to frustrations and suppressed tantrums
In retrospect, when the class was forced to plan properly their planning was sound, and programming ability was much better than I thought. It was simply that the lack of process, and particularly planning was hindering their progress.
With the above in mind I would like to offer the following;
Dear Programming students;
The computer is not a machine like in a factory where productivity is dependant on you pressing the buttons frequently. The computer is much more efficient if you relax, take your thinking time and plan. I really do mean the bits I say about using the design process.
Comments
Post a Comment