A recent issue of Science has an article on the pipeline for computer science teachers . . . The first sentence says, “It’s not easy to teach a subject in which you have no training.” That could be the whole article, really. That’s about all you need to know about the current state of computer science instruction: It’s not easy to teach a subject in which you have no training. Cameron Wilson, chief operating officer and president of the Code.org Advocacy Coalition, is quoted as saying, “It’s really hard to convince a computer science professional to give up a job that pays up to three times more to pursue teaching. And I don’t think we should.” Wilson’s opinion that computer science classes should not be taught by someone who actually knows something about computer science is probably influenced by the fact that Code.org is one of the leading providers of… Read more →
EppsNet Archive: Computer Science
The Ceiling Seems Very Low
I don’t know if this is good news or bad news. It would help to know what “trains” means but I read the article and it doesn’t say. Reporters need to be more inquisitive. Can someone with no knowledge of computer science or programming be “trained” to teach computer science or programming? What would that entail? How long would it take? Can someone who’s never played an instrument or listened to a piece of music be “trained” to teach a music class? Can someone who’s never picked up a drawing pencil or visited a museum be “trained” to teach an art class? Can someone who doesn’t speak Spanish be “trained” to teach a Spanish class? The ceiling on any of these approaches seems very low compared to hiring actual programmers, musicians, artists and Spanish speakers . . . Thus spoke The Programmer. Read more →
Teaching Computer Science: The Last Day
On the last day of class, I gave students the code for a partially working Space Invaders game, along with instructions for adding collision detection and completing the implementation. The instructions didn’t leave too much to the imagination because I wanted to give everyone a chance to finish out the year on a successful note. I estimated it to be about a 30-minute activity. It didn’t occur to me that that students would do anything but finish the program and spend whatever time was left over blasting aliens. What they actually did was, they finished the program, tweaked the firing interval so they could shoot faster, changed the speed of the sprites, added more aliens, changed the program to shoot two bullets at a time instead of one, changed the program to shoot five bullets at a time, enabled the aliens to drop bombs, had the game recognize that when… Read more →
Teaching Computer Science: Lesson Planning
It’s exhausting work . . . Read more →
Teaching Computer Science: Ask More Questions
You need to ask more questions. I think there’s a general fear about asking questions. There’s a risk of looking foolish in front of the whole group when it turns out that everyone else already knows the answer. It’s actually very unusual for someone to ask a question to which everyone else knows the answer. If you find it happens to you a lot, you probably want to get that checked out, but normally it’s very unusual. Another scenario: Somebody, maybe a teacher, says something and you think “That doesn’t make sense. I wonder if it makes sense to everyone else. Rather than risk looking foolish in front of the whole group, I’ll wait and see if someone else asks a question.” So you wait for someone to ask a question and no one asks a question. Why? Because they’re all waiting for someone to ask a question. Many people,… Read more →
Teaching Computer Science: Extra Credit
I wish I got a dollar for every time a student asks, “Can I get extra credit for [insert action for which it makes no sense to give extra credit]?” Today in class we did a difficult programming exercise. It wasn’t graded but I asked everyone to turn it in so I could evaluate the difficulty of the assignment. “Can we get extra credit for turning it in?” a student asked me. “How does it make sense to give extra credit for turning it in? Everyone is turning it in.” “It raises everyone’s grades,” he said. “Like a rising tide lifts all boats.” Read more →
Teaching Computer Science: Combating Procrastination
Students had a project due last week and I got a lot of messages and emails asking for help. Of course, when we handed out the assignment two months ago, we advised students not to wait till the last minute to work on it. Teachers and parents saying “Don’t wait till the last minute” is just an understood part of the process. It’s something that gets said but it’s background noise. A couple of alternatives occur to me: Reverse psychology. Say “My advice is to start as late as possible. Try to do two months of work in the last week, or better yet, the last night.” This seems too easy to see through and therefore unlikely to work. Hand out the 20-page spec and tell the students that it’s due tomorrow. WHAT!? YOU CANNOT BE SERIOUS! NOBODY COULD DO THIS IN ONE DAY! “You’re right. It’s actually due in… Read more →
Teaching Computer Science: The Last Minute
“Reminder that your projects are due tomorrow so don’t wait till the last minute. Oh wait, this is the last minute.” Deadlines can be fun when they apply to other people . . . Read more →
Teaching Computer Science: Incentives (or Lack Thereof)
According to this article on TechCrunch, “Every California high school must establish computer science courses as part of its core curriculum.” From the same article: “Most California teachers have little or no training to teach computer science.” Do you see the problem there? I’ve been a programmer for many years . . . I’d be glad to teach computer science to students, teachers or anyone who wants to learn it if there were even a modest incentive to do so. Which there isn’t. One way to measure how much people want something is how much they’re willing to pay for it. There’s no shortage of people talking about teaching programming and computer science, which is free (the talking, that is), but without the incentives ($$$) very little is going to actually happen. Read more →
Teaching Computer Science: Lessons Learned
We did a programming lab in class . . . before we started, I mentioned several times that Java code that would be useful for the lab was posted on the class website. So it surprised me that several groups got stuck during the lab when they got to the part where the sample code would have been useful because they didn’t go to the website and download the sample code. Going forward, I will preface important announcements by saying “I cannot emphasize this strongly enough . . .” while pounding my fist on a solid object. Read more →
Teaching Computer Science: Today Was Not the Best Day to Say What You Just Said
I asked the class to pass in today’s homework and a student said, “I couldn’t figure out what homework was due today.” I wasn’t feeling at my best to begin with. I was tired because I was up late making sure the class website was updated with all relevant materials, homework assignments were listed at the top of the page under the Homework header with due dates listed in bold font next to each assignment so that there’s no way anyone looking at the website, assuming they’re old enough to read, could fail to understand what is the homework and when is it due. So when that kid said that he couldn’t figure out what the homework was, I felt the futility of life grabbing me by the throat and I was mad . . . Read more →
Teaching Computer Science: Collected Thoughts
If you recognize the person on this next slide, please raise your hand. Don’t yell out the name, just raise your hand. About two-thirds of you recognize Derek Jeter. I thought everyone would recognize him, but still a clear majority. I’m not a Yankees fan or a Derek Jeter fan particularly but the Captain and I are on the same page on this topic. I have to admit I was pretty competitive as a student. I didn’t want anyone to do better than me and I especially didn’t want anyone to do better than me because they worked harder than me. This Jeter quote reminded me of a quote from another notable sports figure . . . This is Bob Knight, college basketball coach, most notably at the University of Indiana. He won 902 games, three NCAA championships, and he coached the 1984 Olympic basketball team to a gold medal.… Read more →
Teaching Computer Science: No School Before Thanksgiving
There was no school today because a lot of kids don’t like to show up the day before Thanksgiving, so the district decided not to have classes on the day before Thanksgiving. Once they get used to having Wednesday off, they won’t show up on Tuesday and we’ll have to give them Tuesday off. Then of course there’s no sense in having a one-day school week so we’ll give them the whole week off. And since they’re already off on Veterans Day and the day after Halloween, let’s just give them the whole month of November off. I’m concerned that American education is getting worse faster than we can lower our standards. Read more →
Teaching Computer Science: Exam Tips from the Pros
When I cover something in a review session or study guide, it’s because I know it’s going to be on the test. There were questions during this morning’s test about the workings of several Java methods, all of which were covered in the review session and the study guide. I can’t answer questions like that during the test so if you have questions about review topics, ask them in advance of test day. Some people seem to think that having an excuse for not knowing something is as good as actually knowing it. “But we hardly spent any time on Topic X in class.” “But we just learned Topic Y yesterday.” Even if either one of those were true, what difference would it make? It’s on the study guide and it’s going to be on the test. Given a choice between knowing something and having an excuse for not knowing… Read more →
Teaching Computer Science: Mindset
I’m not comfortable giving people advice that they didn’t ask for, so I usually preface it by saying “Feel free to ignore this . . .” That being said, I want to talk about the mindset I think you should have for this class, maybe for other classes, maybe even for things outside of school. Feel free to ignore this . . . Education has allowed me to make a living doing things that I like and things that I’m good at. A lot of people are not able to say that. Most people, I think, are not able to say that. Most people are like “I hate Mondays” and “Thank god it’s Friday” and that sort of thing. I have had jobs where I spent the day doing things that I don’t like and I’m not good at and it’s painful. And the amount of money you get paid… Read more →
Teaching Computer Science: Diversity for Girls Only
I called the class’s attention to the NCWIT Award for Aspirations in Computing, which honors young women at the high-school level for their computing-related achievements and interests. Awardees are selected for their computing and IT aptitude, leadership ability, academic history, and plans for post-secondary education. The website features a photo of a black girl, an Asian girl, a white girl, and in case you’re not in any of those groups, there’s an ethnically ambiguous girl on the left you can probably identify with. Diversity and inclusiveness for all. All are welcome. You still have to be a girl of course, they’re not that inclusive . . . Read more →
Teaching Computer Science: Diversity Takes a Hit
They told us during teacher training in the summer not to scare off the students. But programming is difficult. There’s a lot of complexity and detail to master. The first couple of programming classes I took, we started off with around 50 people on the first day, and had around 12 left for the final exam. Entry-level programming classes have very high dropout rates. One of our students dropped the class this week, a girl. So much for promoting diversity in computer science . . . Read more →
Teaching Computer Science: Applause
We did an interactive exercise to write a simple program that prints numbers and the squares of the numbers — a for loop, basically. We went around the room with each student providing one element of the loop and me writing them on the whiteboard: for, open paren, int, i, equals, 1, semicolon, etc. I thought it went very well. The timing was good and it was obvious that most of the class understood what was going on. When we got to a girl who’s usually ahead of everyone and knows all the answers, what we needed from her was “curly bracket” but what she actually said was “semicolon” and there was a collective groan from the rest of the class. When the last student said “close curly bracket,” there was spontaneous applause, immediately, before I even wrote it on the board. It wasn’t like a concert at the high… Read more →
Teaching Computer Science: Asking for Help
I’m not sure students are asking for help enough despite my repeated admonitions to do so. On the first day of class, I said, “Ask for help early and often. If you ask for help when you’re in trouble, you waited too long. Ask for help when things are going well. That’s a good heuristic in this class and in other areas of life as well.” Later I said, “Learn to distinguish between persistence and floundering. Persistence is good. Floundering is bad. Don’t flounder.” Yesterday I said, “You may think, ‘Well, if I was a better programmer, I wouldn’t have to ask for help.’ That’s incorrect. As you get to be a better programmer, you’re given harder problems to work on. I’ve been programming for 30 years — almost — and I ask for help every day.” Honestly I feel like a mental case repeating the same thing over and… Read more →
Teaching Computer Science
Tomorrow is my first day as an AP Computer Science teacher at Corona del Mar High School. It’s a volunteer gig through the TEALS organization. Only about 10 percent of U.S. high schools offer computer science classes and at most of those schools, it counts as an elective, like Home Ec or Wood Shop, not as a class that can be applied toward graduation like math or science. The most popular AP exam in 2013 was US History — 439,552 students took the AP US History exam. Only 31,117 students took the AP Computer Science exam. That’s about the same number as the AP Art History exam. I don’t want to denigrate the study of art history, but given the ubiquity of computers and software and programming in daily life, the study of computer science seems more likely to enable a person to be self-supporting and to contribute to the… Read more →