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!