Students entering a high school computer science course have varying interests and abilities, much more so than found with other disciplines. There are a number of reasons for this ever increasing gap between those most competent with computers and those to whom computers appear as somewhat of a mystery.
Computer science is one of those fields which requires no complex infrastructure to support. The same algorithms can be devised in one’s bedroom or in a University lab. This extends beyond mere ideas and allows for full production systems to be created without needing more than a computer and an Internet connection. This ease of implementation is more evident today with Infrastructure as a Service providers (i.e. ‘Cloud Computing’) where individuals can leverage the power of corporate infrastructure for a few pennies per hour. Given the ease of implementation and the abundance of information available online, the endeavoring student can easily learn the theoretical as well as practical aspects of computing to a level well beyond that covered in High School. While this may be possible for some other fields, computer science is often a very practical subject, which lowers the barrier to entry, and greatly adds to its appeal.
On the other hand, while some people are fascinated by the problems that can be solved by computers and crave the thrill of a good puzzle, others are simply passive users who view computers as a mere tool. As we move increasingly into the era of web applications, it is easy for the average user to have an ever decreasing understanding of the software they are running. Moreover, the trend in computing (and perhaps other facets of life as well) is increasingly towards ‘one-click’ applications. In this scenario, software becomes a black box which simply ‘magically’ does what it thinks is best with a minimum of user interaction.
It is often tempting to make the argument that computer science requires the same problem solving skill set as subjects such as math and science. Certainly there is likely to be some overlap – however, the practical aspect of computers can often be quite a hurdle for the beginner to overcome. From personal experience, I have seen many science majors unable to perform more than the most basic computer tasks.
The division in ability is further compounded by the fact that Grade 11 computer science does not have any pre-requisites. As such, some students may enter the course expecting to learn the basics, while others may come wanting to learn about the intricate inner workings of some exciting new technology. One of the challenges of differentiated instruction is to try and cater to these varying skillsets. Some ways in which this may be accomplished include:
- Choice – give the students an opportunity to work on projects of their own choosing. While in some cases students may choose a project well below their level just because it is easy, in most cases, students are likely to choose to work on something that interests them and is reasonable for their level of ability. Often, choice is built into more complex approach to differentiated instruction.
- Tiered approaches – provide tasks at various levels, with more support for the beginner and a good extension for the advanced student. Let students gauge their level of competence using a diagnostic assessment, and grade all students on the same task.
- Automated Feedback – while a bit more complex to setup, a computer based system of assessment that can analyze output, provide basic feedback, and integrated hints is a great way of allowing students of varying ability to work on tasks at their own pace.