Live data from Hacker News

Teaching Ruby to High School Girls

teachingkids.railsbridge.org

11–20 of 48 posts

Re: Teaching Ruby to High School Girls

#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 be useful and relevant to them. I once explained Computer Science in a nutshell to my sister --a pianist, one of those self-proclaimed not-good-at-math people, but someone I know and communicate with very well-- in about 45 minutes; starting with binary logic and circuits and putting it all together with and ending with high level languages and the internet. She didn't retain it all of course but I pointed her at the Head First HTML/CSS book and she picked it up no problem.

Re: Teaching Ruby to High School Girls

#12
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 they should learn something like Z80 assembler. Get them used to the idea that computation on a von Neumann architecture occurs within a one-dimensional array of fixed-width, integer-addressed memory cells. When they are used to that, they can move onto things like C.

A perfect geek toy for kids would be, to me, something about the size and form factor of a cellphone with a QWERTY keyboard. There'd be a switch on the front such that in one position it functions just like a graphing calculator, and in the other position it behaves more like a KIM-1 computer, letting you craft machine language routines for it directly. There'd be a low-level monitor of sorts that would let you examine memory contents, assign breakpoints, etc. and maybe some simple I/O routines to load and store programs from the attached flash storage. Otherwise it's a 1970s era hobbyist computer, except it has loads of memory, a sweet color display, an ARM CPU and you can fit it in your pocket.

Re: Teaching Ruby to High School Girls

#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 (pointers, memory, etc).

Note that several years ago the AP Computer Science exam got switched from C++ to Java. I personally support this change because most high schoolers are not mature enough to fully grasp the complexities of C++. Java is a bit gentler (Python would be better). However I don't see why C can't be the Shakespeare of Computer Science in high school. Everyone hates studying it, but it's probably better for the student in the long run.

On a slightly related note, I don't hear of too many efforts to make Calculus more accessible to girls or Shakespeare more accessible to men. This whole women in programming thing is an interesting phenomena. Don't get me wrong, efforts like this are great, and I've even participated in a few myself. But let's be clear about the source of the 'problem'. Deeply embedded society pressures and bias in early education are two major factors working against women in programming. By the time they've gotten to high school we've already lost quite a few for good. Let's also be careful not to attribute every inequality in sight to socialization. That's a nice PC answer, but unlikely.

Re: Teaching Ruby to High School Girls

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

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 pointer math and learning how to carefully allocate and free memory for your data.

Re: Teaching Ruby to High School Girls

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

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 started programming that early or earlier. I'm sure we've got our fair share of accelerated math people as well, but they jut are not as common.

Re: Teaching Ruby to High School Girls

#16
post #6

Instead of just having the program files on USB memory stick could you have a had a custom bootable linux environment instead - then getting the environment set up would just be a case of plugging in to a PC and booting up. Sometimes getting to the point where you start programming can be hard. Just a thought.

I work on Debian Live, a framework for building customised live systems (we also make "official" live images as a special case). Something like this is easy to make and maintain using it.

Re: Teaching Ruby to High School Girls

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

My point is that I feel the things that C illustrates and the style of programming it enforces are not that important to learn if you are just starting to program. If you are approaching it from an academic math/CS standpoint, you'd be better off teaching something much simpler like Scheme, and if you're approaching it from a building-cool-stuff sort of hands-on standpoint, I suggest you would be better off teaching Python, Ruby, or one of many other languages with less drudge work (a lot of syntax cruft, manual memory allocation, not very abstract) to do than C.

There may be value to learning C, but I think it's not a good return on investment of your time until you understand many other foundational ideas about programming and CS.

Re: Teaching Ruby to High School Girls

#18
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 quotations demarcate "a sort of free zone for text."

Are there better languages or tools for this task? Has anyone here tried to teach programming to non-programmers using a visual language like Scratch or a simpler language like Scheme or Basic? How did it go? Shoes is an incredible platform, I just wish the underlying language had a more immediately comprehensible syntax. (PLT-Shoes, anyone?)

Re: Teaching Ruby to High School Girls

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

So you read Romeo and Juliet after quite a lot of studies in English (since the first grade).

Re: Teaching Ruby to High School Girls

#20
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'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 understand them just fine.

Shakespeare I could make the plot out, but little more. The footnotes assured us that all kinds of funny jokes and puns were being made, but we pretty much had to take that on faith. Seeing the plays helps a bit more because you get the additional channel of seeing real people, but even then we're taking the humor and puns on faith. I suspect that if someone from Shakespeare's time could see a modern production they would consider it atrocious (once they got past the superior delivery technology); places my footnotes assured me were hilarious were usually delivered straight in the videos I saw, as if the actors didn't realize they were making a pun and it was supposed to be funny. Most likely because, well, they didn't realize it.

I question whether we teach Shakespeare as anything other than "the traditional curriculum", and with a desperate-but-futile hope that this will somehow inculcate a desire to be exposed to more "good culture" in the students... fresh on the heels of teaching the students that "good culture" is written in an incomprehensible vaguely-English language which is completely inaccessible without footnotes which assure us that it's good, really, in plain contradiction to the evidence of their eyes. The shock of the literati at the failure of this plan is amusing, but still sort of odd.

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) written to run on computers the size of rooms with less power than the cell phones the students have, with copious verbiage telling the students no, really, this is computing! despite the fact their eyes will tell them their programs resemble none of the programs they actually use? Gosh, how could that ever fail?!

Save it for college.

Just to highlight one of my points, I think one of the worst things you can do is contradict what the students are seeing. They see an archaic, musty language that can barely be understood, that resembles nothing they see in current use, but you assure them that this is the height of Western culture and they'll be better for understanding it. All you do when you do that is blow your precious credibility. I'm sure one or two people will pop up here and insist that Shakespeare changed their lives in school. Maybe one of them is even actually telling the truth, and not just defending the status quo because it's the status quo. But nevertheless, statistically, it's a terrible approach; it can't convert anyone who isn't already very interested and it turns away the vast majority of any who may be interested. I'm not saying we should be feeding our students educational candy, but let's teach things in High School that, when we claim they are awesome, might actually be able to stand up to that point, within the student's actual reference frame and not the "desired" one, which only exists in the educator's head. Dickens, or Melville, Swift perhaps, or perhaps Python or Processing. Jumping to C or Shakespeare isn't done to help the students, it's done to gratify the teachers, and it fails in entirely predictable ways.

A world full of great literature and great computer languages, and we insist on homing in on the very things most likely to turn off the students forever. Then we wonder how schools manage to turn out so many students who hate "learning". Gosh, how could that be?

Edit: One final note. I often get a lot of shock when I question Shakespeare's value. But I think "question dogma" is part of the Hacker's credos. Is Shakespeare holy because you've worked with exposing people to it and seen it change their lives (not just your own, either) and because you yourself love it, or is it holy to you because people have been telling you all your life how wonderful it is to the point that saying "Shakespeare is great!" has become a social signaling mechanism to indicate how cultured you are? I freely acknowledge that there are people who truly do love it... I just don't think they are that numerous.

Post reply on HN