Live data from Hacker News

Teaching Ruby to High School Girls

teachingkids.railsbridge.org

31–40 of 48 posts

Re: Teaching Ruby to High School Girls

#31
post #13
post #4

Here's a crazy idea. Let's teach Ruby in intro programming classes instead of C, so as not to frighten away 90% of the population with pointer dereferencing and segfaults. You should teach C eventually to make them appreciate high level languages, but just not right away.

We teach Shakespeare and Calculus in high school, though those are certainly not the easiest choices in their respective fields. For an introductory programming class, I agree that Python is a great choice. However for seniors in a computer science class, C should be a fairly important part of the curriculum. There are some fundamentals of computer science that are best grasped through experimentation with C (pointer…

"We teach Shakespeare and Calculus in high school, though those are certainly not the easiest choices in their respective fields."

I think a better analogy is Driver's Ed. We don't throw kids into stick-shift cars in Driver's Ed (at least not at first) we have them drive automatics so they can learn the more important aspects of driving. Then, later on towards the end of the course (well they used to anyway) we have them learn to drive a stick after they've mastered the basics of driving.

Now, personally, I think it's important that the students learn how to drive a stick. But not at first. Same with choice of programming language: I think it's important that the student have some exposure to pointers, dereferencing and even some memory management, but not at first. Let them learn the more important aspects of programming first and when they've become comfortable with them then transition to that other stuff that I'll call "mechanics". Oh, and not every highschool student needs to learn the mechanics, just those who think they want to go onto software engineering.

Re: Teaching Ruby to High School Girls

#32
post #13
post #4

Here's a crazy idea. Let's teach Ruby in intro programming classes instead of C, so as not to frighten away 90% of the population with pointer dereferencing and segfaults. You should teach C eventually to make them appreciate high level languages, but just not right away.

We teach Shakespeare and Calculus in high school, though those are certainly not the easiest choices in their respective fields. For an introductory programming class, I agree that Python is a great choice. However for seniors in a computer science class, C should be a fairly important part of the curriculum. There are some fundamentals of computer science that are best grasped through experimentation with C (pointer…

I agree that you shouldn't make the classes too easy, but you have to get something out of the extra difficulty. The reason that we should teach Python instead of C is the reason why we teach Arabic numerals instead of Roman numerals. Roman numerals are more difficult, but you get no insight out of this time spent learning Roman numerals. It is extra human created tedious difficulty.

You get a much better understanding of pointers and memory from learning a machine language. In C you'd be spending your time on syntactic issues like & and * in expressions and in types. This is what makes pointers difficult. In assembly there's only STORE x INTO y and LOAD x FROM y.

Re: Teaching Ruby to High School Girls

#33

When it comes to pedagogy, the sigils and syntax of Ruby have always bothered me. The author notes the girls having trouble with dark red versus darkred , or getting the hash syntax right. I imagine a number of them wondered why "center" and "xx-large" went inside quotation marks, while saddlebrown did not. Furthermore, special string values like "center" and "xx-large" somewhat undermine the teacher's assertion that…

> PLT-Shoes, anyone?

How about Bootstrap? http://www.bootstrapworld.org/materials/

Re: Teaching Ruby to High School Girls

#34
post #15

Earlier quoted context omitted.

By the time students get to Shakespeare and calculus, they've been reading books critically and doing math in school for at least a half dozen years. If they have six years of CS/programming education, too, then I agree that they would be well-served by a course in C. There are a whole hell of a lot of concepts in computer science that I think are both more useful and far more educational than understanding how to do…

I had to read Romeo and Juliet my Freshman year in high school. My understanding is that R&J is a fairly common Freshman text. Your point about Calculus doesn't quite fit either because you don't need an extensive foundation to start programming. That's why we see a lot more 14 year olds programming than doing Calculus. You're a genius if you're doing Calculus at age 14, but I bet a lot of people who read this site s…

"You're a genius if you're doing calculus at age 14."

Ha!

Re: Teaching Ruby to High School Girls

#35

Earlier quoted context omitted.

Actual development in Scheme is a bit mind-bending, but sexps are wonderfully simple. (fn arg1 arg2 ... argn) Add quoting, and you're pretty much done explaining the language's syntax. What sort of facilities can you build on top of that foundation to create an easy, accessible learning environment like Shoes?

The average high-school girl might not be able to instantly see the elegance of the idea that functions, programs, data structures, numbers, etc. are all interchangeable and that it all can be represented recursively with lists all the way down. (High school girls who have read Hofstadter, maybe.) They might be able to understand "later, rinse, repeat", or making a cake by making three layers, and then making the fro…

His point isn't that Scheme's syntax is elegant, but that the syntax is simple.

There's no need to worry about the precedence of operators, or indentation, or why you use one character to separate function parameters and variable declarations, but you use another character to separate the arguments of a "for" statement, which happens to be the same character you need to use at the end of statements (but as a terminator, not a separator), but don't forget that control structures are not separate statements even though they're on separate lines, etc.

Each of these points is an obstacle between the beginning programmer's intent and a running program. Scheme's almost total lack of syntax gets a beginning programmer started quicker.

Re: Teaching Ruby to High School Girls

#36
post #35

Earlier quoted context omitted.

The average high-school girl might not be able to instantly see the elegance of the idea that functions, programs, data structures, numbers, etc. are all interchangeable and that it all can be represented recursively with lists all the way down. (High school girls who have read Hofstadter, maybe.) They might be able to understand "later, rinse, repeat", or making a cake by making three layers, and then making the fro…

His point isn't that Scheme's syntax is elegant, but that the syntax is simple . There's no need to worry about the precedence of operators, or indentation, or why you use one character to separate function parameters and variable declarations, but you use another character to separate the arguments of a "for" statement, which happens to be the same character you need to use at the end of statements (but as a termina…

That might seem simpler to you, but you have the kind of mind I was talking about:)

To the average person, to make a toy car, it's straightforward to take a box, put on two axles, then put on two wheels. You could do all that with just toothpicks, but it's not really simpler in practice.

Re: Teaching Ruby to High School Girls

#37
post #20
post #13

Earlier quoted context omitted.

We teach Shakespeare and Calculus in high school, though those are certainly not the easiest choices in their respective fields. For an introductory programming class, I agree that Python is a great choice. However for seniors in a computer science class, C should be a fairly important part of the curriculum. There are some fundamentals of computer science that are best grasped through experimentation with C (pointer…

"We teach Shakespeare and Calculus in high school, though those are certainly not the easiest choices in their respective fields." I'm not sure that's the best argument. In my sophomore year in high school, we covered Romeo and Juliet. At that point, it is fair to say that I had reading skills well above average. I could read original texts from the 19th, 18th, and even to a limited extent the 17th centuries and unde…

> The footnotes assured us that all kinds of funny jokes and puns were being made,

The worst part about those high school Shakespeare texts was that for the humour that was blatantly sexual, they tried to find some contrived explanation to present instead.

For example take a passage: "She that’s a maid now, and laughs at my departure, / shall not be a maid long, unless things be cut shorter."

This is a reference to the "maids" being played by male actors. The text had some contrived explanation about if the play were shorter in length, when really the line is clearly a joke about CUTTING OFF A PENIS.

When you miss the fact that Shakespeare is just full of eighth grade schoolboy humour, then you actually miss a lot of the point.

Re: Teaching Ruby to High School Girls

#38
post #24
post #4

Here's a crazy idea. Let's teach Ruby in intro programming classes instead of C, so as not to frighten away 90% of the population with pointer dereferencing and segfaults. You should teach C eventually to make them appreciate high level languages, but just not right away.

I think traditionally, it is considered better to learn it the hardway first. It teaches you more about the progression of thought through which innovation leads and provides a better understanding of the content. That's why we learn Reimann Sums before we learn how to do the little tricks in calculus. There has also been a lot of discussion lately about how higher level languages are "dumming down" programmers. Coll…

Total nonsense.

"it is considered better to learn it the hardway[sic] first"

Blatantly false. For a certain narrow class of people, this is the best way to learn. There are hundreds of other ways, and some of the people who have a different preferred style would make great programmers.

"Colleges who have switched to Java for example are producing graduates that are having more difficult times in the "real world.""

Also blatantly false. CS programs have always churned out a lot of mediocre programmers, a handful of good ones, and a few brilliant ones. Only the language has changed.

Re: Teaching Ruby to High School Girls

#39

When it comes to pedagogy, the sigils and syntax of Ruby have always bothered me. The author notes the girls having trouble with dark red versus darkred , or getting the hash syntax right. I imagine a number of them wondered why "center" and "xx-large" went inside quotation marks, while saddlebrown did not. Furthermore, special string values like "center" and "xx-large" somewhat undermine the teacher's assertion that…

"Furthermore, special string values like "center" and "xx-large" somewhat undermine the teacher's assertion that quotations demarcate "a sort of free zone for text.""

I was delineating two modes of failure. The first, and most obvious, is when your program won't run at all and you get a syntax error. That's what happens when you misspell something outside the quotes.

But if you misspell something inside the quotes, you get the second mode, in which your program runs but you get incorrect behavior.

For us this isn't a huge difference; they're both bugs. But for the girls it was huge. If their program won't run, it's busted, but if it runs but isn't quite right, well, that's what Microsoft charges $$$$ for.

I had to admit they had a point.

Re: Teaching Ruby to High School Girls

#40
post #24
post #4

Here's a crazy idea. Let's teach Ruby in intro programming classes instead of C, so as not to frighten away 90% of the population with pointer dereferencing and segfaults. You should teach C eventually to make them appreciate high level languages, but just not right away.

I think traditionally, it is considered better to learn it the hardway first. It teaches you more about the progression of thought through which innovation leads and provides a better understanding of the content. That's why we learn Reimann Sums before we learn how to do the little tricks in calculus. There has also been a lot of discussion lately about how higher level languages are "dumming down" programmers. Coll…

Which is ironic because colleges switched to Java because Java is used in the "real world".

Of course, Java with all its class-and-interface scaffolding adds too much accidental complexity too. It's not a matter of higher-level, it's a matter of verbose. Scheme is a high-level language but it's still "the hard way" in a very important sense.

Post reply on HN