Sunday, March 23, 2008

Should Computer Science be Taught at Schools

This topic has been a contentious issue since the early 1970's when universities started teaching Computer Science. When I started teaching at the RAU (now UJ), teaching the first years was reserved for the best lecturer, third years for the second best lecturer and second years for the noobs (new lecturers). This was based on the experience that teaching programming is extremely complex. There is a big difference between teaching a computer language and teaching programming where a computer language is used, but the major aim is to change a word problem into code. When schools started making noises that they wanted to teach programming a lot of debate took place. The verdict then was already that it should not be done - not because scholars would not cope, but because of the difficulty to teach it properly. Shortly after that schools included Computer Science (CS) as one of their subjects. Although I must admit that there are some excellent CS teachers, the majority of the better ones have left for greener pastures. This is not surprising in the current schooling system and the need for their skills in industry. Unfortunately this has resulted in the following horror stories:
  • A local school, a few years ago, wanted to train new CS teachers (teachers who did not know any programming) by sending them on a three week Java course!!!
  • Currently I have three first year students who have had Computer Science at school. Different schools I must add. None of them can use if's and while's, let alone use arrays. They all admit that their teachers could not teach them programming and they passed on theory alone! This is not the first time we have students with this type of experience.
  • The projects the scholars have to do for their matric mark is often done for them by someone else. This is not detected by the examiners.
  • One of my past lecturers refused to allow his children to do CS at school. They have pursued computer careers after successfully completing a CS degree and post degree studies at a University.
  • One of my CS colleague's son believed that he was too dumb to understand programming after his school experience. His mom recognised his talent and convinced him to do it. It took some time for him to gain the confidence that he could actually program. He is successfully employed in a computer programming career at the moment after completing his diploma in IT.
  • One of our part-time lecturers begged us to intervene in the local school as his son dearly wanted to pursue a computer career but was totally put off believing that CS was too difficult. He is now following another career path. We have lost many a good prospective student in this way.
  • Some grade 10 scholars that I have for extra classes were on the point of dropping CS as they found it too difficult. After two of the parents asked me to intervene with extra classes the kids are now really enjoying it and they are showing a lot of natural ability.
  • The word that CS is too difficult has spread in the school and many prospective computer scientists are pursuing a different career.
With the great need in computer specialists we cannot afford to loose these kids that are put off a computer career due to teachers that do not understand how the subject should be taught. The problem is even worse after the recent move to object oriented programming with its added complexity and ridiculous examples in most beginner text books. Although Java is based on classes, they do not have to be taught in the beginning. Basic programming can be taught in the main method. If you have a child who is interested in computers and your local teacher does not have a good track record, rather let him/her take another subject instead of CS. All university courses start their students from the beginning and prefer students with only a background in computer literacy to students that have to be de-taught and retaught in programming.

4 comments:

Richard Sharpe said...

Perhaps I am confused, but I don't think that programming can be taught. Rather, I think that people learn to program, and that CS departments facilitate that learning, some better than others.

Moreover, I think that only some people have the ability to learn to program, and that talking about teaching programming encourages people who actually do not have the necessary skills to enter a field they are not suited for.

TGGP said...

My experience was just fine. I didn't take intro in University because of AP credit, which let me graduate in three years.

Joke van Niekerk said...

Hi Richard

Thank you for your comment. I agree that only some people have the ability to learn programming, and then even some better than others. We see this every year with our first years.
I am interested to know what you constitute as teaching and what as facilitating. Would you mind to give some examples. To me facilitation requires some guidelines according to which the students teach themselves with the help of a facilitator compared to teaching where the teacher explains new concepts? We tend to use both, but I cannot see how we can only facilitate without teaching. As I am constantly looking for better ways to teach programming I am really interested to hear your views.

Joke van Niekerk said...

Hi tggp

In South Africa all students with good enough school marks go into a three year university program straight away. What do you mean by intro and AP credits? Did you have computer studies at school and what did you learn in the subject?