Christian Neukirchen wrote: > Nicholas Evans <OwlManAtt / OwlManAtt.com> writes: > > >>If I end up teaching it, I think it would be cool to cover Ruby >>instead of Scheme. I'd have to develop my own curriculum, but >>whatever. > > > I know this sounds heretic and probably is not what you expect from > this list, *but why*? I figured I'd be killing a few birds with one stone. I think Ruby is simple enough to teach basic programming concepts with (although my opinion on the matter probably isn't worth much, because I don't know Scheme, really). It's also practical and a hellava lot closer to Java than Scheme is. And we are kids are compelled to take the Java course senior year if we take the Scheme one sophomore year. I also like Ruby better than Scheme. >>The goal of the course is to teach programming concepts in half of a >>school year. The things that were covered during this year's course >>were writing functions to do a simple calculation, using variables, >>and using cond/booleans. Many students struggled during the beginning >>of the year with writing basic functions. Our teacher kind of blamed >>herself for that, because this was her first year teaching >>programming, and she had never been trained on Scheme. > > > Do you think an untrained teacher better teaches Ruby instead of Scheme? I think I've underexplained the situation. If I end up as the teacher's assistant and I can sell Ruby, I'm going to be the one teaching it to the class AND the teacher. >>I think that teaching students Ruby might be a bit less...arcane. It >>looks friendlier, for one. > > > That's a matter of taste; people that never saw code didn't yet > develop a taste for it. That said, I saw people getting incredibly confused by the idea of matching the curly braces up. Ruby looks a lot more natural, so I think it would be easier for people to relate something like this: def do_something(n) if n < 10 true else false end end As opposed to: (define (do_something n) (cond [(< n 10) true] [else false] ) ) (Sorry for parse errors, if there are any.) >>It would also open the course up to more concepts than Scheme >>offers, like automagic testing, manipulating files, object >>orientation, etc. Teaching OO during this course would probably also >>benefit the kids later on for Java during Programming II... > > > I'd say, due to the small core of Scheme, it's even easier to explain > these topics. You have everything: write a few macros for > unit-testing, files can be done with ports (they are in the spec), > object orientation can be done with closures. Once they did all this, > they know what they are talking about. I was unaware that Scheme had OO. I don't really *know* Scheme, so I guess I'm not being terribly fair. > Of course, teaching this is not that easy. Did you ever read SICP? > Have a look into it and rethink your choice. I haven't even heard of that. I'll look into it. =) > (Despite all of this, I prefer Ruby for *coding*, of course. But > Scheme is the better choice for teaching. YMMV.) Thank you for the feedback!