5 ms·
We teach Shakespeare and Calculus in high school, though those are certainly not the easiest choices in their respective fields. For an introductory programmin
by tsally 17y ago
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.
- mquander 17y agoBy 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.
- tsally 17y agoI 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.
- mquander 17y agoMy 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.
- Oompa 17y agoSo you read Romeo and Juliet after quite a lot of studies in English (since the first grade).
- tsally 17y agoSure, let's count learning to read, write, and spell correctly.... oh wait, you use that for programming too. ;-) Also, you should probably revise your thinking so "English" isn't just everything that has to do with books. It's critical theory, complex analysis, and a bunch of other things. The stuff most people do in 1st through 6th grade is to English as learning how to type is to programming.
- Zarathu 17y ago"You're a genius if you're doing calculus at age 14." Ha!
- caffeine 17y agoActually, they haven't. For the most part, they've never read anything critically (or even really read anything period), and the crank-turning and hoo-ha that goes in math class certainly isn't mathematics. So by the time they hit Calculus and Shakespeare, they're in year 11 of their time in a velvet jail and have learned to very adequately mimic the bizarre squawking the guards insist is requisite for passage to The Island. What they have not done is mathematics or reading in any real sense.
- Randai 17y agoI cannot agree enough with you on that. Mostly it felt to me when I was in high school that it was such a repetitive rote/forced way of learning. Which disgusts me these days especially when I am insanely passionate about learning new things and ideas.
- jerf 17y ago"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.
- UncleOxidant 17y ago"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.
- jules 17y agoI 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.
- ams6110 17y agoExcellent observation about understanding pointers; I never really had any difficulty understanding pointers in C, but I had already programmed in assembly language. Shakespeare on the other hand, is still opaque to me.