i find this to be abit unsettling... i just want to ask... are compsci teachers supposed to know what they're talking about? i have this compsci teacher who always says that by the end of gr11, you should be better than your teacher in programming, which i do not know if it should be true or not. however, when he started teaching recursion in the first week, i feel terribly sorry for the students who did not know recursion before. my teacher had no idea of what he's talking about, and i highly doubt that he could do more than 1 or 2 of the many questions we had to do which he just copied out from a book. as for the explanation of solutions, he mostly takes students code and a) have the students present them to the class or b) more or less just read thru it line by line with english. he never actually told us how a simple recursion program works (i.e. trace out factorial (4)). he does not know when recursion is efficient or not, nor has he ever heard of DP.
i'm just wondering... is this normal? he's a nice (and weird) guy and all... but having him as a teacher (in the perspective of those who doesn't know the course material already) is more confusing than say, trying to self learn.
I've heard of such stories from different schools around the GTA, to be honest its not entirely the teachers fault. Most do not have a CS background, its just teachers with a remote math type background that end up filling up the spot so that YOU can still have that course offered at your school. To be honest you should be thankful of them that you have a gr11 ICS class some school that my friends have gone to dont have it offered after the gr10 course simply because no one has an interest in (re)learning the course along side the students.
Again this is not all school, for example at our school we have amazing CS teachers that go well beyond what we would need to know, who infact have degrees in CS. Personally I think our school is like that since we offer HL CS so, we maintain a great program with interested studentS and such.
Nonetheless, do not feel you are at a disadvantage if you feel you wish to take CS in university, most if not all universities are aware of this and have a very level playing field for you when you start off in university in any type of CS field.
If you want more info, I do believe tony did a blog on this topic or there was another thread, all in all just enjoy the class, you can be a class leader
Unfortunately, no programming chops are required to teach programming at the high school level. Frequently, the teachers are pulled from the math or business departments, and have never programmed before in their life.
This is probably because most programmers can make a lot more money a lot more easily working as a (gasp) programmer. There's also a tendency to be a little afraid of public speaking in technical fields (I certainly am) and that would deter those people from entering teaching.
Find a good online resource and race ahead of the class. If you're learning Java, go to the SUN Java Tutorial Trail. If you're ambitious enough, start educating your classmates, or at least help them debug their programs. It's surprising how edifying it is to help other people, and it's a great way to test your knowledge and gain experience.
he never actually told us how a simple recursion program works (i.e. trace out factorial (4)).
This almost makes my head hurt. Factorials are so much better to do with a simple loop and computing a running product. There is even Mathematical notation for this kind of thing using a big pi just like a sigma represents a sum. I think Mathematical Induction and Recursion go together quite nicely but I'm not sure what grade Induction would be taught. I had at Grade 13 back in my good ol' days. I remember learning a lot of Watcom Basic back in my high school days, some of it useful and some not so much as things like line numbers just aren't used in most programming languages.
Mathematical induction is only taught in the grade 12 discrete math course, as I recall (supposedly the hardest). The enrollment rate is relatively low.
I prefer the Binary Search algorithm for teaching recursion. Tell the students that you're thinking of a number between 1 and 100 and tell them that on any guess you'll tell them either "higher", "lower" or "correct". Smart / observant students will divide the problem in halves each time, which is exactly what the recursive algorithm would do.
This almost makes my head hurt. Factorials are so much better to do with a simple loop and computing a running product. There is even Mathematical notation for this kind of thing using a big pi just like a sigma represents a sum.
I don't agree with this. The natural mathematical definition of the factorial function is recursive, as is the definition of the pi-notation you cite. That said, introducing recursion early is a problem in a language where the computational model in the heads of instructor and student doesn't admit a simple explanation of a recursive computation. Since we don't have that problem, current UW CS-major courses cover recursion starting in about week 4 of the first-term course, and loops starting in about week 6 of the second-term course. But factorial (or, worse, Fibonacci) are not good examples.
DemonWasp wrote:
I prefer the Binary Search algorithm for teaching recursion.
The killer apps for recursion are lists and trees, which we also do in the first half of the first-term course. (Binary search requires arrays, which we don't use in the first-term course.) --PR
Out of curiosity, why are factorials and the Fibonacci sequence not good examples of recursion?
They're poorly motivated, and in the case of Fibonacci, the naive implementation is quite inefficient, giving the impression that recursion itself is inefficient. The connection between the not-so-naive implementation and the original definition is difficult to establish.
Quote:
And why (/how) are loops ignored for a whole semester, or did I misread that?
Just a note on terminology: UW has three full terms, because of co-op. Each term is 12 weeks of classes plus time for exams. "Semester" usually refers to a traditional fall/winter split with a smaller and less-populated summer session.
Why? Because loops are not needed in order to explore introductory computer science. They're a highly restrictive control form which makes it awkward to express many computations one wishes to discuss. How? When you have recursion, you don't need loops.
Oh, that makes sense. I guess I just find it weird to teach recursion first because that's not how I learned (although, when I was learning to program, I was learning programming, not computer science).
S_Grimm
Posted: Sat Sep 26, 2009 10:37 am Post subject: RE:compsci teachers
Computer Science = Knolwedge about computers and Programming.
For Instance my CS class spent the first 3 weeks on learning hardware, and what RAM stood for (I know, but it was a grade 11 class and not everyone there was there by choice..... Some of them were put in there by guildance)