Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I studied to become a computer science teacher. I have not finished my certification for various reasons but I have some limited field work under my belt along with numerous discussions and readings. And, of course, my anecdotal but legitimate experience in public schooling.

Let's get one thing straight: the problem is bad teachers. My mentor once said it kind of sucks that UTeach was only available to UT students and by extension those who statistically succeeded in traditional schooling because they are usually the least acquainted with the system's failures.

That "test" they show inside is bullshit, first of all. If they showed that to me as a completely green 11 year old without explaining the syntax or semantics of what was going on, I'd probably have to ask some clarifying questions. And, I think it goes without saying, if the professor is the type of teacher to go into a class with the expectation that half the class will fail, I'd probably have shaky confidence and would hesitate to ask questions since everyone is quickly cast into a mold of either "have" or "have not." I've taken math courses before by these people.

Many so-called "gifted" math students (and we're all students) are great with applied math but are just as stumped by theory as everyone else (anecdotal). Testosterone and typical youthful arrogance turns classrooms into settings hostile to people aren't extremely competitive and who are somewhat unsure of themselves. Combine this with a teacher who was once one of the cocky ones and a few snide remarks about how some students "just don't get it" and what you have is a self-fulfilling prophecy.

If your students fail to learn, it means you did not teach them adequately. Learning is the product of the work of learners: you have to give them the proper resources to work with. Humans are exceptionally capable. Children are extremely inquisitive and interested in so many mundane things; they can be taught math. This is beaten out of them as they get older and they're told there is a cap to what they can accomplish.

Bah. Humbug.

A good set of resources for anyone looking to teach programming and/or computer science is CS Unplugged (http://csunplugged.org/). No computers. Much of it relies on human interaction. It's fun, it's versatile, and most importantly it distills the important parts of computer science while shedding the stuff that gets in the way: confusing, advanced user interfaces; arcane terminology and confusing history; and the stigma that a computer brings to those who've never worked with them before.



You're a direct target for the article. Quoting: "brighteyed beginners who believe that the old ones must have been doing it wrong"

People have been trying and failing for 40 years to improve CS teaching. Granted, most professors don't try and just teach the way it's always been taught, but some, like you, do.

The big question then becomes: is this an impossible problem, or simply a very hard one? When you start teaching, you will find that a certain percentage of your students fail to "get it". Will this be your fault? Probably not. At the very least, to "get it" requires effort, and some of your students won't put in that effort, and you can't force them to. There are many ways you can encourage the effort, but you can't force it.

What we can do, though, is shift the goalposts. Turn a 70% failure rate into a 30% one into a 10% one into a 2% one, et cetera. It looks like csunplugged is one of those tools that will shift those goalposts.


To start, I agree with you 100% on all accounts. Some students may truly never succeed but I think that by declaring the case closed and assuming it's purely a function of student ability, we lose out on valuable information about humans learn because: what if that's wrong?

The fact that the goalposts can be moved is awesome and a testament to what can happen if we assume that it's a communication or motivation problem, not student ability.

There are lots of fringe students who just think oddly. Living in cooperative housing in Austin has really driven this home. They require odd teachers.


I think the CS Unplugged approach has a tremendous amount of potential, particularly with its intended audience (primary school). In my 3rd grade class in 1986, one day the teacher told us that she had a loaf of sliced bread in a bag, a jar of peanut butter, a jar of jam, and a knife. She asked each student to write, on a sheet of paper, instructions for making a PBJ sandwich. When all the students had finished, the teacher followed each set of instructions exactly as written. It was amazing and hilarious to see the literal interpretations. I remember it very clearly because I was one of the students who gave incomplete instructions, and it was a minor blow to my ego because I was one of the smart kids. It was also my first programming lesson.

For young students, simple activities like these (and other communication / language exercises like sentence diagramming) can have significant benefits later in their education. I don't think introductory CS education should be completely replaced by non-computer exercises, but it's no surprise that many HS students and college freshmen don't "get it" when the first thing they're exposed to is a pile of code.


About the PBJ exercise, last semester (I'm in grade 10 right now), we had to do the same thing in Chemistry, except for a lab. It was teach us to provide detailed instructions in the lab write-ups. Almost no one in the class had detailed enough instructions. It worked like a charm. After that, on the rest of my labs, I went in a lot of detail in the instructions. I have to agree that it is a great way of teaching, and it would be amazing if every student encountered it at least once in their schooling. Especially at a younger age, it would instill an attention to detail in the student, which would serve him well for the rest of his life.


I worked as a TA at my university for a while (under-grad TA too ... was a blast, me and the prof got along really well, and I knew the material extremely well and could teach) and the hump mentioned is true. I once used to believe that everyone could learn how to program, if you can write down steps for making toast in the morning you know how to program, but some people just couldn't get it.

There was some mental disconnect that didn't allow them to grasp certain key features required for programming. No matter how you explain it to them, no matter how you tried to change the model to help them. I spent a lot of time with the professor I was TA'ing for trying to understand why, trying to understand what we were missing that could help these students understand. Stuff like scope, pointers, references were some of the difficult topics, which to me come almost naturally they felt it hard to wrap their brains around.

There were students that didn't get it but they could fake the knowledge required and could get the end result but not understand why that was the end result. They did okay on the programming questions, but when it came to knowledge of what was going on they couldn't explain it.

I felt terrible having to fail students, I felt even more terrible when I could see on their face that they had tried their absolute best. I don't think I could go into teaching unless I taught uper-level classes so that I didn't have to deal with the great disappointment and filtering of students. The look on a students face as he was sitting in my office during TA hours and he still wasn't able to grasp the concept of pointers made me feel really sad. I don't think I can deal with that again.


I was an undergrad TA for a semester as well. I think most of my criticisms are more applicable during early childhood development. Students get into their own self-fulfilling prophecies about what they can do and by college are quite good at sabotaging themselves.

That said, I should have reasoned about pointers by simply handing them a map to a building and saying "this tells you how to get to the building. It's a pointer. The building actually has what you want. This cannot because it is paper."

Perhaps framing that "ceci n'est pas une pipe" picture on the class wall would help, too.


Anyone who has gone through early CS education has seen every metaphor and diagram for pointers. I'm sure each professor and TA has thought the same thing: if only I could find the perfect metaphor, they'd get it.


This Atlantic article has a lot on what makes good teachers and why it's so important to find them: http://www.theatlantic.com/magazine/archive/2010/01/what-mak... .

In the vast majority of schools in the U.S., however, it's almost impossible to fire teachers after two to three years of employment; in many schools, it's virtually impossible to fire them even before.


Thanks for the CS Unplugged link. The program looks very cool!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: