Posted: Wed Jan 28, 2009 5:17 pm Post subject: What's really rotten in Turing?
I've said many non-positive things about Turing the language in the past, and I stand by all of them. Turing is not a very good language by anything approaching modern standards.
Aside for a Read-Eval-Print-Loop environment and its overt procedural bias, it has the basics.
So, if it's not the language, then there's only one other culprit: curriculum.
While I have not been exposed to a formal curriculum that utilizes Turing as a teaching tool, I can infer from the code I've seen students working on. I have to assume there is almost no emphasis on how programs are actually designed. Students seem to have very little idea about how to utilize language features to make programs more manageable.
IN my Introduction to Java I specifically addressed code organization issues early. Of course, that work does not come close to anything approaching a teachable curriculum, and is merely inteded as a quick and rough guide. One I can recommend though is How to Design Programs. This is how it should be done, and fortunately, you can see that for free.
Of course, I started this out asking what's rotten in Turing, and suggested that it isn't the language itself so much as the way it's taught. I will reinforce my bias now by saying that while I think it would be possible to develop a beneficial curriculum around Turing as a tool, I also believe that would represent a massive change of mindset, and that if we're willing to undertake that, the incorporation of a more suitable learning tool is a small, but very good thing to do.
Posted: Wed Jan 28, 2009 5:27 pm Post subject: RE:What\'s really rotten in Turing?
I think a big problem is that a lot of CS teachers don't actually have teaching degrees. Most schools are so desperate for a CS teacher that they hire old programmers who don't know the first thing about teaching, or who's coding experience is very outdated.
Posted: Wed Jan 28, 2009 5:29 pm Post subject: RE:What\'s really rotten in Turing?
lol, my CS teacher teaches 8 other classes and coaches 5 school teams, he's there for about 30% of the classes, the rest are idiot subs from the board who barely know how to turn on the computer. We ACTUALLY managed to convince one that the monitor was a touch screen XD. Thank god for this site lol
Posted: Wed Jan 28, 2009 6:15 pm Post subject: RE:What\'s really rotten in Turing?
Third to what insectiod and saltpro15 said: the teachers are largely incompetent or unwilling to review the materials provided in the curriculum. These materials may be inadequate or difficult to understand (remember, most of these teachers have never programmed before), so their own difficulties understanding may get passed on. For the record, my CS teachers included: a business teacher, a math teacher, and another math teacher.
Additionally, I find that the teachers are often overworked by the number of personal-help requests from students. Often, students have minor issues that they need help with, so they ask the teacher. For an hour-long class, the teacher may have upwards of 3 or 4 hours worth of individual issues to look at in code they're unfamiliar with. While having competent students who are willing to help is a plus, teachers really need to know about compsci.ca (I was in high school in 2005 and we didn't know about compsci.ca...I'd have been a member years ago if I knew). Students should be informed on the first DAY about this board, particularly the Turing help section.
A particular issue is that while students are taught exactly how put, get, Font, Pic, loop, if and for are used, they don't always know why they're used or how to use them to make their lives simpler. For people who are experienced coders, this comes naturally, generally without even thinking about it. New students, however, are generally not used to thinking algorithmically: they know the end result of what they want the computer to do, they're just unsure of how to break down what the computer must do to get there. Teaching that is hard, but doable; it just doesn't seem to be a big part of the curriculum.
Absent the knowledge of how to go from "process I can do in my head" to "algorithm", the knowledge that's taught, namely "algorithm to implementation" is largely useless. Students end up able to perform simple tasks, but not design an entire program, even fairly simple ones.
What I would propose to counteract this is that, once the basic commands are taught, the class as a whole follows a set of logical steps to writing a given program. These steps could be the following, for example (Minesweeper):
1. Collect requirements: know the rules of the game, how the game is played, and what features (high scores, timers, etc) the game must implement.
2. Determine how to deal with each feature. The teacher will have to largely do this phase for the students to provide an example. In this case, the class could decide that Turing's GUI is too broken, so they decide to use Mouse.Where and their own GUI code. They could decide that the high scores will simply be stored in a text file with a given format to store all the necessary data (player name, time, etc).
3. Determine a basic flow of control. At this point, the teacher will probably end up dictating the de facto design:
A. Program starts. All variables initialised.
B. Necessary data is loaded, including any pictures, sprites, input files and other resources.
C. Main loop starts
D. Main loop checks for GUI interaction, does as required for each interaction.
E. Main loop ends whenever appropriate.
At this stage, the teacher should probably also give the method signatures for each operation (not helper methods, just the ones that would be public).
4. Once that's all established, and a skeleton of the program has been distributed to the class, they can probably manage to fill-in-the-blanks with some (considerable) assistance. They end up with a functional Minesweeper implementation, which motivates students more than simpler games would.
5. Now that the students have gone through the design process and its clearly delineated steps, their teacher can walk them through doing the same thing on their ISU. This would require the students to do the design themselves, but they can always base it on the design the class did together.
Note: I realise I've just sorta said "waterfall!" design process. That's pretty much my intent: waterfall should work great for such small projects.
Posted: Wed Jan 28, 2009 6:22 pm Post subject: RE:What\'s really rotten in Turing?
DemonWasp, come teach my class one day. please? lol, my last teacher couldn't even log in, he didn't have an account
Posted: Wed Jan 28, 2009 6:38 pm Post subject: RE:What\'s really rotten in Turing?
I've actually spent a fair bit of time considering teaching, but I know it's not something I'd want to do long-term or permanently. That's why I'm here, not learning how to teach properly.
In reality I'm probably not a very good teacher. I loathe public speaking and my organisation is at best mediocre.
Posted: Thu Jan 29, 2009 4:37 pm Post subject: RE:What\'s really rotten in Turing?
I don't think Turing is that bad. It's just missing some features though.
Posted: Thu Jan 29, 2009 5:51 pm Post subject: RE:What\'s really rotten in Turing?
And it can be slow for larger scale projects.
Posted: Thu Jan 29, 2009 6:18 pm Post subject: RE:What\'s really rotten in Turing?
I agree with you guys. Most CS teachers are horrible and aren't even qualified. Luckily, my teacher used to program downtown and actually knows Java.
Posted: Thu Jan 29, 2009 7:12 pm Post subject: RE:What\'s really rotten in Turing?
Although I think computer programming is one of the hardest things to teach. I admittedly end up helping out quite a few friends with math/science/french/whatever, and I am a decent tutor, but when it comes to computers I find it so hard to communicate exactly what is happening to the person
Posted: Thu Jan 29, 2009 7:50 pm Post subject: RE:What\'s really rotten in Turing?
I'm rather lucky. My CS teacher is a certified math teacher, but also has years of programming experience (although dated). My CE teacher has been teaching for years, and though I'm not sure of his qualification, he's a damn good teacher.
My grade 10 teacher, however...
Something was wrong with that guy...absent minded? He was one of those teachers who used to program but can't teach. We used to play pranks on him. I think I've told this one before, but what the hell, I'll say it again.
So, some people were bored. It was like, the 3rd day on strings (he managed to drag a 5 minute lesson over several days), and we decided to have a little fun. So, the teacher had to leave the class for a bit. Some of the kids went to his overhead ("You never touch my overhead. It is mine, just stay away from this area"), and unplugged the power. They also turned the switch off. When he went came back, he tried to turn it on, saw that the plug was out, plugged it back in. It still didn't turn on, and he couldn't figure out what was wrong. So he took the clear overhead with black text in font 12 and held it up to the black blackboard and started pointing at things to try to keep teaching.
It was a good day.
Posted: Fri Mar 27, 2009 8:46 pm Post subject: Re: What's really rotten in Turing?
My teacher was good at teaching me some stuff for the first week or so. Then I found this place. I ended up with the students coming to me for help instead of the teacher. Most need to slow down and think, "What do I want it to do?". Once they know what it is that they are trying to do, plan it out. Use scrap paper or notepad or commented out code to plan. On guy in out class was trying to have to things move at once. He had 2 loops! Only the first one did anything. What do you do in a loop? You get input, update to position of the first item, update the second item, draw the first item, draw the second item, View.Update, cls Time.DelaySinceLast.
If he would get the class to see that, it be so much simpler. I'm glad I took to programming like a fish to water (98%, WOOT!) because I would not want to need him to teach me something.
Posted: Fri Mar 27, 2009 9:09 pm Post subject: RE:What\'s really rotten in Turing?
I wish we just learned C++ from day 1, it would really make CS so much easier... you have to learn C++ at some point anyway, might as well dive right in
btw, we had a substitute once, Ms.Ding...
we managed to convince her the computer monitor was a touch screen, I say no more. best day ever.
Posted: Fri Mar 27, 2009 10:10 pm Post subject: RE:What\'s really rotten in Turing?
I wished I started with Python. Simple enough to keep the interest at that early stage, yet powerful enough so I don't end up learning a pretty much useless language.
Posted: Fri Mar 27, 2009 10:15 pm Post subject: RE:What\'s really rotten in Turing?
Haha saltpro, that's awesome. I think Turing is great to start. Having not done much Python at all, I don't know how accessible it is, but while Turing may be useless, it sparks an interest in the students to stop facebooking during class and try out some real programs.