Live data from Hacker News

Teaching Ruby to High School Girls

teachingkids.railsbridge.org

21–30 of 48 posts

Re: Teaching Ruby to High School Girls

#21

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…

> simpler language like Scheme

I really think Scheme is only simpler if you have a really atypical kind of mind.

Re: Teaching Ruby to High School Girls

#22

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…

> simpler language like Scheme I really think Scheme is only simpler if you have a really atypical kind of mind.

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?

Re: Teaching Ruby to High School Girls

#23
post #11
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.

It's not a crazy idea at all, nor is it even a new idea (see BASIC, Pascal, etc.), but it is not appropriate in all cases. I would never recommend trying to teach C to a group of high school kids that were otherwise indifferent to computers (eg not curious tech-nerds). Teaching methods and knowing your audience are important, too like recognizing that most of your class is bilingual and making an analogy that would b…

It could help that Head First HTML/CSS is wonderfully written for someone who basically knows how to use a computer.

Re: Teaching Ruby to High School Girls

#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. Colleges who have switched to Java for example are producing graduates that are having more difficult times in the "real world."

Re: Teaching Ruby to High School Girls

#25
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.

Absolutely. My high school taught C++ and it convinced me to not major in computer science. I was hacking on Perl and Visual Basic at home and couldn't imagine four years of pointers, segfaults, getters, and setters. I just wanted to have fun.

Re: Teaching Ruby to High School Girls

#26

Earlier quoted context omitted.

> simpler language like Scheme I really think Scheme is only simpler if you have a really atypical kind of mind.

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 frosting, where each becomes a separate modular and reusable problem.

Re: Teaching Ruby to High School Girls

#27
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…

You are in effect making the argument that "tough learning" has no place in the curriculum. It's absolutely crucial that students are confronted with learning curves that are discontinuous compared to what they have previously faced. The other road leads to common denominator mediocrity. The real problem is that you cannot set an individual curve for students because of the need to teach them en masse.

The most significant experiences in my life have been about overcoming learning curves that seemed insurmountable. Two experiences stand out for me, one with mathematics, the other with literature. Even one experience like that can last you a lifetime. It can lead to a career and a lifelong passion.

My epiphany in mathematics came at age 16, the one in literature much later at age 22. The reason both came so relatively late was that my arrival was by circuitous paths of self-study. Unfortunately I never had a truly inspiring teacher.

I'll say a little (or a lot) about the epiphany I had with literature since you seem to have a particular problem with canonical literature. Until my teens, I read more than most kids but not very much and virtually nothing but pulp fantasy and science fiction. When I became interested in programming and later mathematics I read a lot of technical books in those areas. But anything vaguely literary with a challenge accompanied by no immediate reward was a complete turn-off.

Poetry in particular was incomprehensible to me. I could not understand any of the poetry we covered in school, and I could not understand how anyone could understand it, much less appreciate it. In short, my attitude was the same as yours: All these people who pretend to love it must be pretentious pricks all hoodwinked by the Emperor's New Clothes.

I eventually stopped reading almost any fantasy and science fiction and stuck to nonfiction, mostly technical material. But when I was age 22 I picked up a copy of Pullman's The Golden Compass and read it through in one sitting. I thought (and still think) it was the best work of fantasy I had read.

I looked the author up online and found that elements of the books had been inspired by Milton's Paradise Lost. I had heard of this work but never read it. I swifly found a free copy on Gutenberg and discovered to my dismay that it was a narrative poem. A fucking poem! But this writer guy says it's the best poem in the English language, so there must be something to it. I tried to read the first page but was defeated by Milton's tortuous syntax and mythological allusions again and again.

I gave up and told myself that poetry was simply not for me. But at least I had now convinced myself that this kind of old and difficult poetry was not an elaborate inside joke or some sort of hoax.

A few months later, after rereading The Golden Compass, I decided to give it another shot and this time ordered a handsome printed copy that incidentally came with an introduction and a chapter by chapter commentary by Pullman. This time I forced myself to read everything aloud and that was the trick that let me crack it.

Wow! Poetry should be read out loud!

For some stupid reason this had never really occurred to me. Soon I had gone through and understood the first several pages. Suddenly I could read and understand the poem with surprising ease. It was the most sudden zero-to-hero experience I'd had in my life. I was covered in goosebumps and tears were welling up in my eyes. I was forced to stand up and pace around the room for several minutes to calm myself down. Finally I sat down and spent several hours memorizing the first couple of thousand lines, despite my generally awful memory for such things. After that experience I found I could read through a book of the poem at the rate of one per night. Not all the allusions made perfect sense on a first pass, but now that I had learned to sound out the words the syntax was no longer an obstacle at all.

The poem possessed me so completely that I eventually memorized the first two books of the poem almost effortlessly, possessing the poem in turn. And when I say memorize I don't mean by rote but by the kind of compulsive rereading and rethinking that only passion can motivate.

Anyway, that was my epiphany. I decided to try Shakespeare next and bought a copy of Midsummer Night's Dream. That was a lot harder! The word to word, sentence to sentence writing of Shakespeare is so far beyond the likes of Marlowe, Milton or Melville in terms of subtlety and modulation. All of those guys are at their best when they write majestic rhetoric blasting on all cylinders. That's not to say they lack subtlety in other areas; both Milton and Melville are incredibly deep.

Anyway, I slogged my way through Midsummer Night's Dream. It was fun but it didn't deliver Milton's spine-tingling bombast in the same way. It was subtle the way the world is subtle. If you read it superficially you are likely to leave with little else but the plot and a general but vague sense of the characters. Shakespeare's plots are expendable and the strength of his characters are in their variety, distinction and depth, so this way of reading him does him poor justice.

I put aside Shakespeare for another year or so. My next attempt was with Hamlet and that was what cracked Shakespeare for me. It had all the gratifying high rhetoric I so loved about Milton but it also had complexity in subtlety and depth to last you an infinite number of rereadings. From there I eventually went on to read all of his works. Unlike Paradise Lost, several of them took me several rereadings to love. They rarely give away their secrets on the first stroll through.

Holy crap was that ever long. Anyway, I present this as antidote to your criticism. What this and a few similar experiences has taught me is to never assume that something is a worthless sham simply because you don't get it right away.

Re: Teaching Ruby to High School Girls

#28
The key to this (lovely) story, IMHO, is the iterative nature of the lesson. Each step was very small, built on the previous one, and resulted in clearly visible changes to the program. For novices, this is absolutely vital- especially in a classroom environment like this. Now, re: the appropriateness of Ruby's somewhat-odd syntax for this lesson- I agree that there's definitely some weird arbitrary-seeming stuff in Ruby ("darkred" vs "dark red", etc.). But, let's face it- ALL languages have a few weird syntax things here and there, especially from the standpoint of a novice programmer. It's just part of the way that computers and programming languages work, and anybody who wants to write code is going to have to learn to deal with it. From my experience teaching novice programmers, however, I can tell you that a lot depends on HOW

The problem is that, with most languages and in most intro lessons that I've seen, the student is exposed to all of them all at once without much context. I feel like the lesson described in this article did a great job of introducing the students to these language "features" one or two at a time and in a relatively sensible order. Eg, the students first got used to the idea that the computer was picky about upper- vs. lower-case letters. Next, they got their heads around the idea that attributes often involve a weird sequence of characters ("=>"). Then, they were exposed to the "identifiers-can't-have-spaces" rule. Etc., etc., etc. By the time they were exposed to each new oddity of the syntax, they'd had a chance to absorb the one that had gone before.

Re: Teaching Ruby to High School Girls

#29
post #20

Earlier quoted context omitted.

"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…

You are in effect making the argument that "tough learning" has no place in the curriculum. It's absolutely crucial that students are confronted with learning curves that are discontinuous compared to what they have previously faced. The other road leads to common denominator mediocrity. The real problem is that you cannot set an individual curve for students because of the need to teach them en masse. The most signi…

"You are in effect making the argument that "tough learning" has no place in the curriculum.... you seem to have a particular problem with canonical literature."

No, which is why I explicitly mentioned Swift, Dickens, and Melville. We read both Gulliver's Travels and A Modest Proposal in school (nowhere near a complete list, of course), and even if it wasn't everybody's "favorite literature ever", at least it was comprehensible to people. You could send students home with a reading assignment, and they might actually do it, and then when they come to class the next day, they can discuss the text, and find out the deeper meanings, rather than having to come to class to find out just what the hell it was they just read. This is not a valuable use of literature time. Also, as I said, I read quite a bit of the "canon" of my own free will and could read Ye Olde Texte far better than most people of my age. More than once I was given a school assignment to read a book I had already read.

Your story is not a counter to my point; it proves my point. You had to be interested and bring a lot of effort to the task of reading those things. This makes them grotesquely unsuitable to be using them in high school where those things are not generally available. That you found it rewarding is great. I too have done that, both in the computer domain and the literature domain. But an awareness of what it took is precisely why I say it's a terrible approach to general education.

I never said it was a worthless sham. I said it wasn't worth teaching in high school, and that it should be left for college. Based on the age you had your experiences, you hardly provide a counterexample for that. It would be way better to simply allude to Shakespeare's genius and let motivated people find it, than spend valuable time jamming it down students throats only for them to see an incomprehensible mass that they are never again motivated to look into. There's no way school could every have given you that experience. (Maybe a really motivated teacher, but even then it would have been a personal interaction, not a schooling thing.)

Basically, my position is that you have to educate the students you have, not the students you wish you had. And, if we are going to build our education system around teaching masses of children, building our core curricula around something that will maybe appeal to one or two kids per year, and then only several years later, is such a waste when we could be teaching people things that might actually encourage rather than discourage the pursuit of further learning.

So often the choice is presented as "Shakespeare or nothing", or "only incomphrehensible literature or nothing". You sort of have those memes in your response too, when you read into my post that I'm against literature. But when I spell that out, it's obvious that there are tons of other choices. There's thousands of other school-worthy candidates that won't have the side effect of firmly squashing all future interest in "literature".

(There's also a frequently unrecognized assumption that we have infinite time for students to learn in, and therefore it is sufficient to establish that something is "good", and therefore we then put it in the curriculum. That's not even close to true. Our time as students is terribly limited compared to what there is to learn, and it's getting worse every year. The question is not "Is Shakespeare worth learning?". Duh. Of course it is. But then, there's enough "stuff worth learning" to fill your lifetime and beyond. The question is, is it the best thing to learn? That's what I'm challenging. Given the enormous liabilities that teaching Shakespeare... oh, and by the way, C, since the parallel continues to hold(!)... brings to the table, including the very-real risk of completely destroying any interest in literature/programming that may have been present, why shouldn't we teach the things that don't carry that risk?)

Re: Teaching Ruby to High School Girls

#30
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…

I agree with your sentiment, however, I'd like to pick an nit:

"I see a lot of parallels to this with teaching high school students C. We're going to teach them a nearly-40-year-old language (might as well be from the 1500s)"

The age of the language isn't so much the issue; Lisp is quite a few years older than C and ML came on the scene the same year C did. I think Smalltalk is just about as old as C. Yet teaching Lisp or Smalltalk (using Squeak) would be a much better idea than teaching C as a first language.

Teaching C as a first language would be akin to having only stick-shift cars in Driver's Ed. Now, I happen to think it's important to learn to drive a stick, but first you start the kiddies off with automatics so they get used to other, more important aspects of driving and then towards the end you teach them how to drive a stick.

Post reply on HN