Programming in Middle School?

Eating breakfast in the hotel the other morning, my father mentioned a Twitter conversation he had to join about programming courses in schools and math curricula.

Programming and math education? I just had to get involved, too.

Ben Grey and Colleen K had started talking about the value of programming courses in school. Ben and my father (initially) were against it, concerned that the skills would be obsolete before they could be used, and were not particularly transferable to most fields. Colleen and I took the pro side.

Ben and my father both pointed out that languages go extinct, which is true. But judiciously chosen languages have staying power. Basic can be run in a browser, but is obviously a fine starting point. C has been around since 1972, and it isn’t going anywhere soon. JavaScript has been around since the mid-90s and seems to hold a secure point.

What of transferability? How many professional programmers still work in the first language they learn. Anyone? Anyone? Beuller? My first language was Perl, which helped me learn JavaScript and PHP, which helped me learn Java and C. People older than me probably started with Basic. People much older than me may have used ALGOL—which was on its fourth generation by the time C was born.

But what about the majority of students who don’t want to be programmers?

Programming is a powerful, concrete interface to the two mathematical concepts that cause the most problems for students in K-12: variables and functions.

In the US, our K-12 math curriculum covers three broad areas—numbers, variables and functions. These roughly correspond to primary math (counting, operations, fractions, equalities) algebra and geometry, and (pre-)calculus.

Most students can wrap their heads around numbers, even fractions. They are relatively concrete. Some students struggle with operations like multiplying and exponents, but this is the lowest hump, the bunny hill. The majority make it down unscathed.

When does your school start losing people in the math program? It’s probably around 8th grade. That’s when most schools begin the dreaded algebra. Variables are intuitive to some, but abstract and meaningless to others. If you believe Myers and Briggs, some of us are predisposed to abstractions and generalizations (*NTJ) but is there a biological reason others are lost here? Or do math teachers and curricula need to change?

Of the people who survive algebra without hating math, how many make it past “pre-calculus” or “FST”? I’ve heard the story a dozen times myself: “I was good at math until my calculus class.” If numbers are the bunny hill of K-12 math, then variables are the green circle, and functions are the double black diamond.

Again, functions may be completely intuitive to a few of us, but they can strike terror in the heart of even the most dedicated students.

Too often, when they reach a jump in complexity and struggle, students are told “it’s OK.” They are “not ‘math people.’” This can come from parents (“I was never good at math, either.”) or even well-intentioned teachers (“Maybe you’re just right-brained!”). There is a deeply held belief in this country that “math” is some innate ability, a genetic gift, and either you’re the next Will Hunting, or you may as well not try.

How does this relate to programming? How did you learn programming? Here’s a common roadmap:

  1. Imperative programming; no functions or abstractions; lots of constants; instructions in linear order.
  2. Using variables for input or consistency/ease-of-maintenance.
  3. Using functions and subroutines to encapsulate repeated operations.
  4. Using someone else’s functions—you probably don’t see the implementation.
  5. Branch off to more advanced ideas like object-oriented or functional programming; lots and lots and lots of abstractions.

A remarkably parallel route. And instead of saying “x is a number,” you can say “var name holds the name the user enters!” The results are far more immediate and interactive. Play is cheap. (“What if I change this line? Oh it doesn’t work, better undo that.”) Instead of limiting functions to scary numbers and equations, more pedestrian words can be used as arguments and return values.

Programming is applied mathematics. Teachers spend much of their lives looking for new examples, better applications, to drive home the theory, when there is already a wealth of application available.

There is also a two-pronged economic argument. To paraphrase Mr. Friedman: anything that can be outsourced, will, and the new jobs created here will require deeper interaction with computers. A cursory understanding of the programming techniques underneath will benefit all students as they enter the job market, and the exposure may mean more prepared students entering computer science programs. Basically: we need more talented, creative programmers—how many art students harbor latent programming skills—and even non-programmers will benefit from the exposure and understanding.

And of course, the math skills. No subject (that is taught) is taught as badly as math in our schools. On the personal level, this translates to people who misunderstand interest and get themselves in trouble with debt; on a national level, it certainly doesn’t help when a subprime mortgage market bubbles and pops.

Even if you don’t use “math” on a day-to-day basis, it is another way of thinking, of solving problems. Algorithmic thinking, epitomized in computer programming, provides a layer of cognitive flexibility, and every layer we can add, we should.

I don’t expect every student to become a master programmer, or even explicitly use those skills—or other skills in their math courses—every day. But I do expect schools to use every tool they have to make these methods of thinking and courses of study available to everyone. We wouldn’t allow a future programmer to skip his English class, why would we allow a future writer to skip his math and programming class?

Why do I have to learn this?

Why do I have to learn this?

Why do I have to learn this?

Teachers, can you answer this question?

Can you do it without referencing the next class? Or a state standard?

Can you answer in terms your students can understand?

Can  you be compelling? Excited?

Do you believe your own answer?

If not, do you have any right to teach this class? Or does the class need to be reinvented from the ground up?

New Information Processes

Robert Pondiscio started a great discussion on Twitter in the classroom over on The Core Knowledge Blog. In particular, I’m interested in one of his comments:

If someone invented a 21st century hammer it wouldn’t dramatically change the training and experience a contractor would need to build a house. Nor would anyone suggest that “tool fluency” is now the soul of carpentry. And so it is with information literacy. It dramatically expands access to information. It doesn’t change how we process it.

The emphasis is mine. Now, whether tools like Twitter or Today’s Meet are useful in classrooms is a broader discussion than I want to deal with right now*, but here’s a more specific question: does the way we access information alter the ways we process it? (more…)

Does the Web Hate School?

Full Disclosure: I am employed at Michigan State University’s College of Education as a web designer and application developer. The opinions I express on this blog are mine, and do not necessarily reflect those of my employers or clients. Particularly this post.

Education generally falls behind every other sector in computer technology integration and internet use. A typical fast food employee uses a computer more during the day than a typical middle school student. (What are cash registers but custom computers?) At almost any business you can expect employees to use networked computers for everything from sales and inventory to customer service to internal work and communication.

But beyond simply using the box, private companies in every sector generally have up-to-date, professionally designed web sites that (at least try to) provide useful information or services to customers. Been to your or your kid’s school web site lately? Universities are usually “OK,” but they get worse as you go down.

In any other sector, you are likely to find online collaboration tools, meeting planners, digital resources for employees, use of messaging tools like internal e-mail (Exchange servers), private IM, Yammer/Laconi.ca, internal wikis, public and private blogs… you get the idea.

But not in education.

Education is part of the problem, but it is not the whole problem. Many people talk about how teachers and schools fail to use computers and the internet well in their classrooms. Many schools treat the computer itself as a goal, rather than as a tool to do new things, or do old things better and faster. Teachers generally fall behind the private sector in computer literacy. Yes, all these things are true.

But we, we the tech sector, the web 2.7.4 crowd, we are part of the problem, too.

How often does a new tool support education? Offer suggestions or support for teachers? Provide educational pricing? Provide the EULA and Privacy Policy education legally requires?

The people who become teachers are often the people who did well in school, who see no reason to change anything because, to them, it works. In the tech world, “where did they drop out of school?” is a legitimate question. Your typical programmer has at least one degree in Computer Science, but the real success stories—Bill Gates, Steve Jobs, Mark Zuckerberg—the ones who made real money, are drop outs. School didn’t work for them—for us—so what do we owe school?

When Yammer launched, they gave a simple business plan: for companies that wanted to “claim” and control their networks, they would charge $1 per month per user. A small start up might pay $5 to $20 a month. Even a big company is probably paying only a few hundred dollars per month. A university, on the other hand, could be stuck paying tens of thousands of dollars per month, or skipping the service entirely. Which do you think they’re likely to do?

What was Yammer’s response? “Our product [...] is not geared toward educational institution [sic].”

Many schools have prohibitions against using Google services for anything work-related because, if you don’t pay for use (update: Google Apps for Education is free, my bad) their educational services, their Terms of Use (read Section 11) could allow them to share sensitive student data.

You’re a school? You don’t matter. Only cool people matter.

Let’s change. Let’s remember that the community of “tech-savvy” users, while growing, is still a minority. Let’s encourage teachers and schools to use the tools we create, so people come out of school ready to use these tools.

It is possible. Ning is experimenting with education. But how do we make tools ed-friendly?

Fix your EULA and Privacy Policy, or provide a second one for education. Don’t be the next Google Chrome. (Frankly, everyone should be reconsidering their EULA right now. Why do some people need so many rights to my content?)

Offer suggestions to teachers. I know: it’s not really a priority. You’ve got bug fixing, paying customers, searching for VC, coming out with the next version. But it’s not terribly difficult. Got a user forum? Add a section for education. Got a wiki? Add an education page. Blog? Throw up a post for teachers once in a while, or better, get guest posts from teachers who use your tool.

Provide educational pricing. Schools have less money every year. If you can work out a deal to make your product free to schools, do it. But it’s not hard: just charge schools less. Think of this as an investment. If they use your product as students, they may well want to use it when they graduate and have to pay.

Or, provide an ad-free version to schools. This is the Ning method. If your business model doesn’t involve charging directly, be aware that schools often take issue with displaying ads to students. It’s the same investment as above: hook them young.

Schools lag on the internet because there is resistance on both sides: educators are reluctant to integrate new things into their curricula, and the new tools rarely give a damn about schools and students as users.

Changing the tech side won’t solve the problem. Schools need to adapt, too. (Where would you look for a Windows 95 computer if you needed one today? I’d check the local elementary school. It’s probably in a lab, or hidden in the back of a classroom.) Schools need to treat computers like tools, and the internet as a tool, and the tools we build on the internet as tools, and use those tools effectively. That will take time.

In the meantime, let’s try to reduce the resistance on our side, so when they come around, educators feel welcome.

Edit: I need to proofread better, even with angry rants.

Your Internet Classroom

One person, some sort of authority, talks. Lots of people listen. Sometimes those people get to contribute something.

Sound familiar? It should, because I’m not just talking about a classroom, I’m talking about your blog.

Blogs and classrooms share the same basic social structure. And like classrooms, blogs and bloggers have a variety of moods or atmospheres.

Seth Godin’s blog is like a big lecture. You come, you listen, then you go play Ultimate Frisbee by the fieldhouse. If you want to talk about what Seth said, you’ll need to do it outside of class, please.

In some classrooms, when the teacher asks for comments, people respond to the teacher, not to the class. Chris Brogan’s blog is like this. His latest post about LinkedIn is a perfect example: lots of people talk to Chris, but they don’t talk much to each other.

(I’m not trying to judge here. I could listen to Seth lecture all day and I usually read all the comments to Chris, but the audience is definitely Chris, not me.)

Chris gets a lot of comments, and writes a lot, averaging more than a post a day, so it’s understandable that he doesn’t really join in his comment threads. But since people are talking to Chris, and Chris doesn’t often answer, his classroom doesn’t have a whole lot of discussion.

For a great example of someone who does get involved, check out Emil Stenström’s post about microformats. He’s the cool prof who likes to engage you in a discussion, will support his theories and honestly listen to yours, and may honestly change his opinion.

Can you do better?

Do you know of a blog that encourages discussion among the readers? Do you know of a classroom that encourages discussion among students?

On one of the more controversial posts on SpeEdChange, one commenter, Ettina, tries to respond directly to a previous comment. Not much came of it.

Should you do better?

What do you want from comments? Do you readers to pontificate to no one, just trying to drive traffic to their own site with some +5 insightful idea? Should they talk to you? Should they talk to each other?

Threaded comments do it can help, so why do so few blogs have them? Do you want your readers to talk to each other?