Computer Science Canada

The disadvantages of high school programming

Author:  Roman [ Sun Oct 05, 2008 1:56 am ]
Post subject:  The disadvantages of high school programming

... compared with a total lack of experience.

Note: This topic does not apply to those who pursue programming on their own time.

As I settled into UofW's academic system over the past month, I've noticed something that, to me, seemed counter intuitive. People who have taken a year or more of high school programming were having a harder time in the CS135 course than me, who has had a little under a month of programming experience during the summer. Granted, the fact that CS135 employs Scheme as it's language of choice is a big stumbling block for those with experience in Java or Turing. Syntactically, the high school programmers are bumped down to beginner level. Furthermore, functional programming is foreign to said students and is another way they have to adjust to the new curriculum. However, the problem goes beyond that.

It seems (I wouldn't know, but I draw on conversations with others to make this assumption) that high-school programming courses focus around the idea of "just make it work." My roommate, for one, tells me his teacher simply checked if the program worked and gave 100% or close to it based on the result. Making contracts, purposes, examples, and tests (as well as templates and data definitions) come hard after years of simply "making it work." And though (again, I wouldn't know) the design recipe may not be as heavily implemented in the "real world," it a way of communicating with those reading your code. Communication is not the high-school programmer's virtue. The philosophy seems to be that the code is to be made, and put away into a black box, never to be looked at again. In CS135 (at least), the fact that programming is an act of communication is emphasized heavily. Those who have been continuously told to "just get it to run" are put in a hard place.

People who come into the course with no or barely any programming experience may find the basic concepts (such as functions, operations, and conditionals) a little more difficult, but when it comes to programming readable code they may not have the same inhibitions about it as the high-school programmers. Their code might be lengthy, ugly, and inefficient, but, in accordance with the "just get it to run" philosophy, so will the code of the high-schoolers. Basically, those who take programming courses in high school may even be at a disadvantage, as they have to unlearn bad programming habits while simultaneously learning a new and very different language. Furthermore, if the dominant idea of high-school courses is to get the program to run, chances are the marks of a decent portion of the students will be high. The judgment of ability based on marks may give them an exaggerated idea of their abilities. They will think "Well, I'm getting 75% in English, 80% in Math, and 91% in Comp Sci... I guess I'll apply to the Computer Science program!" When they get there, the difficulty of adjusting and of the assignments themselves will exceed anything they have previously experienced and, if they are not passionate, result in poor grades.

The point, I guess, is that high school programming can teach students bad programming habits, entice them to pursue Computer Science as their major, and undermine their chances of success in the field. Again, I'm assuming an average student who does not take an active interest in Computer Science or any other subject and will choose Computer Science based on the grades he/she receives. I believe that with passion, nearly anything is possible. Also, I am not insulting any high-school students, nor am I suggesting you shouldn't go into CompSci unless you're 110% sure you will live and breathe code. I'm just noticing that there are faults in the high-school programming curriculum that seem to do the very opposite of preparing students for the challenges of University Computer Science.

-RZ

Author:  Insectoid [ Sun Oct 05, 2008 9:51 am ]
Post subject:  RE:The disadvantages of high school programming

Yes, it is ridiculously easy to get 90+% in compsci, but I believe that those who go into the field are those who will try to learn in their own time, to develop good habits and to go beyond 'making things work'. I 'make things work', then I 'make things work better'. I don't care what the teacher says, if I think it isn't good enough, I will try to make it better. Good variable names and commenting are things I worked on in the summer, and now I do it naturally (Although I was penalized once for have too many comments). The point being, If I didn't like it so much, I would maybe still get high marks, but I wouldn't consider it a future for myself. Somebody who chooses their profession based on marks, not enjoyment, won't get far in any field. Sure, That kid writes great stories, but he hates it and considers it a chore. He gets a 94% in english, then goes off to pursue biology, which he got a 79% in, simply because he enjoys it.

Author:  syntax_error [ Mon Oct 06, 2008 12:50 am ]
Post subject:  RE:The disadvantages of high school programming

Thankful, not all CS teachers are as such who give 90+% with such ease; there are a few that serly know what they are doing and expect their students to know everything about there code, to the logic of it till how its is rep.ed in the memory [pointers and such, in grade 10]. Though it helps to have like IB classes, people arent there just to "game".

Author:  jbking [ Mon Oct 06, 2008 12:26 pm ]
Post subject:  RE:The disadvantages of high school programming

Interesting topic here. I do remember having some programming done before high school back in my Commodore 64 days which then were supplemented by high school computer science. For me, the biggest shift was that the tools I suddenly had available were the big change as I went from programming in BASIC to Pascal where the former had very few types, mainly string and number were what was used, to the latter where we could define different types as opposed to just adding the $ on the end. Simple programs like making a temperature converter can be done on a few different scales and I think this reminds me of how there is the evolution of word problems in a sense.

That evolution is where we go from just getting the right answer, to being able to explain how we got the right answer. In early elementary school you could do the work on a scrap piece of paper and as long as the final number is correct, you get all the marks. By contrast, in high school you have to write out more details explaining how you come to that final number which involves a lot more communication.

Scheme was a bit of a pain, as I recall. Somehow, I've never had to use a functional programming language yet, though I do wish they taught SQL somewhere in the CS courses I took.

Author:  Tony [ Mon Oct 06, 2008 1:04 pm ]
Post subject:  Re: RE:The disadvantages of high school programming

jbking @ Mon Oct 06, 2008 12:26 pm wrote:
By contrast, in high school you have to write out more details...

This trends continues on to University -- if you write down just the answer (even if it's correct), you get 0 marks. If you write out all your work (and arrive at the wrong numeric answer), you can still get most of the marks though.

Regarding Scheme -- it's certainly different, and students who got used to procedural thinking might have trouble as they try to jam their old programming ideas into a new paradigm. This is a case where students who are brand new to programming might have an easier time getting started, as there will be no conflicting ideologies.

Author:  Roman [ Mon Oct 06, 2008 5:23 pm ]
Post subject:  RE:The disadvantages of high school programming

And as I recall, (it was on the compsci blog a while ago) the point of introducing Scheme was to level the playing field, so to speak, and to work in a language that would allow students to better understand programming concepts. I'm not sure how the latter is working out at this point, but the former is definitely working, and perhaps more than anticipated. I personally like Scheme because it's very logical (at this point) and it introduces new ways of doing things. But that's beside the point ^^

As syntax_error points out, there are teachers who actually teach their students how to program, and do it well. Is it an issue of underqualified teachers, or an outdated or otherwise unsuitable curriculum?

Author:  jbking [ Mon Oct 06, 2008 6:44 pm ]
Post subject:  RE:The disadvantages of high school programming

Paradigm shift covers the issue a bit better for what should happen to fix things. The grading on some computer science projects is rather sad, as when I took the Concurrent Programming course, I never got anything to do the important stuff but in doing all the error handling of inputs I still passed the assignment which I find rather shocking in a way.

When I was in Grade 13 classes, there was one Math teacher that I found awesome and others may have found a bit abrassive. He laid down some of the rules for the class, such as homework answers posted on the back wall, tutorials available the night before a test, monthly calendars printed up, no calculators allowed except for one chapter in Physics, and to leave answers with as much precision as possible, which means leaving square root signs and transcendental numbers in their original form. The class itself was rather small as there were only 11 students in the second day from 20 the first day as many heard the rules and figured, "No, I'm not doing this.." or some other thoughts that lead them to drop the class. When one of us had a birthday, the whole class got to share an ice cream cake from Dairy Queen, and after the final exam was a pizza lunch which was rather nice to have and seemed kind of rare looking back now.

There is the question of how many people have both the proficiency in the skill of programming as well as an understanding of teaching these skills so that others can develop them. Learning various algorithm ideas can be neat and also possibly overwhelming if you get to the point of having a dozen or so kinds to try like divide and conquer, dynamically building a solution, brute force, reduce the problem to a known one, build a data structure with that functionality, etc.

Author:  wtd [ Mon Oct 06, 2008 10:41 pm ]
Post subject:  RE:The disadvantages of high school programming

That you're able to recognize this deficiency says to me that you turned out ok despite high school computer science, in which case I applaud it for introducing you to the field.

Author:  Insectoid [ Tue Oct 07, 2008 11:52 am ]
Post subject:  RE:The disadvantages of high school programming

No calculators? You'd havve to do things like 5th roots in your head? I probably would have stuck with it, but not done very well.

Author:  Tony [ Tue Oct 07, 2008 12:13 pm ]
Post subject:  RE:The disadvantages of high school programming

@insectoid -- yes.

The answer will either be an integer (32 ** (1/5) == 2) that one is expected to recognize (such as powers of 2), or you just leave it under the root sign.

The calculators are only useful when performing long (and arguably meaningless) calculations -- if you keep everything in roots and fractions, you will not need a calculator. Bonus points -- you also get exact answer.

Author:  jbking [ Tue Oct 07, 2008 1:14 pm ]
Post subject:  RE:The disadvantages of high school programming

Well, we didn't have to do many roots, more like remember a few bits of trigoonometry like the sine of 60 degrees is square root of 3 over 2 or cosine of 45 degrees is 1/2, or sin^2 theta + cos^2 theta = 1.

Some of this stuff is easy with a picture, like the right-angled triangle with the other angles being 45 that the lengths are in the ratio of 1,1,square root 2, and for the angles of 30,60,90 in a triangle the ratio on the lengths are 1,square root 3, and 2 by taking an equilateral triangle and bisecting it to get the side length of 1 and square root 3 where the side lengths were 2 of the original triangle.

In a way, the no calculators made it easier since if things started to get ugly looking this was typically a clue you ere going down the wrong path.

I also remember in chemistry using Grade 10 algebra about manipulating equations to solve the problem by having this long ugly square root laden expression that was initially stated by using an equilibrium of concentrations.

The other thing this brings up is the difference between numerical analysis(CS 370 at Waterloo when I took it) and symbolic computation(CS 487 when I took it). Numerical analysis uses approximations for constants like pi or e and thus has to deal with the issue of rounding things off but the idea is that the answer is "close enough" to work. Symbolic computation though leaves those alone and tries to find the expression to state the answer so that anyone wanting to compute an approximation can and not worry about losing precision that can happen when you use approximate values. I found Symbolic Computation to be the CS form of first year algebra where we looked at factoring polynomials as well as why factoring integers doesn't seem to be as easy a problem. Another way to look at this is Numericals Analysis uses Matlab while Symoblic Computation uses Maple for a couple of example programs that one could try out to see each side.

Author:  Richard Knop [ Sun Oct 12, 2008 11:12 am ]
Post subject:  RE:The disadvantages of high school programming

Well, yeah it is sometimes ridiculously easy here, too. But you must take into consideration most of these people are working with PC almost nonstop and have been programming in their free time for years.

So it is only natural it won't be difficult for them to pass.

Author:  wtd [ Sun Oct 12, 2008 12:08 pm ]
Post subject:  RE:The disadvantages of high school programming

Math isn't about numbers.

Author:  Richard Knop [ Sun Oct 12, 2008 12:21 pm ]
Post subject:  Re: RE:The disadvantages of high school programming

wtd @ Sun Oct 12, 2008 6:08 pm wrote:
Math isn't only about numbers.


Fixed Wink


: