Teaching real-world programming

The title of this post is borrowed from an article at the MIT (original article at Teaching real-world programming) about a programming course at MIT that uses professional software developers to help mentor students. The professionals perform what amounts to a code review of student code. The review is not part of the grading process but part of the learning experience. I love this idea. For me learning rather than grading is what a good educational experience should be all about.

The professionals volunteer and since the Cambridge.Boston area is a hub of hi tech companies and working with MIT is a high prestige sort of thing they don’t lack for volunteers. So this program might not work everywhere. But I wonder if it could be tried on smaller scales at least at other places – including in high schools. I can see it being very helpful. The article highlights a couple of things I learned while I was teaching. I hear similar things from other teachers. For example:

Harried professors and teaching assistants can look over the students’ code and flag a few common and obvious errors, but they rarely have the time coach the students on writing clear and concise code.

Students often don’t care how clear or concise their code it. They are just in a hurry to get things done and in for a grade. Learning to take their code to the next level (clear and concise) takes a bit more work. Friends of mine have talked about coding apprenticeships which beginners learn by working side by side with “master programmers.” This is often what happens when people leave school and take their first software development job. It would be nice if they could get some of that in school though.

Also programming is really more like a craft or even an art than a true engineering science. I know that is a matter of contention but while I would like it to be real engineering I don’t think we are quite there yet. And so programmers need to developer a style. As it says in the article:

In many computer-science classes, Amarasinghe says, professors trying to preserve intelligibility will insist on a particular style of coding, which may not be natural for some students and, he says, can actually lead to bad code. “The way we look at programming, it’s like writing an English paper,” he says. “If you are in English class, there’s no set way of writing.” What’s important is that a programmer’s style be consistent, not that it slavishly ape some model.

A mentoring process with an experienced professional can help students develop that style while also developing a clarity of thought and of coding that will serve them well.

How might this work in a high school? There are probably several ways but I wonder if a small number of volunteers could dedicate a day where they code review individual or small team projects. Perhaps in the middle of the semester or near the semester break of a year long course. Ideally the project would be reasonably complex – not too long but long enough for personality and habits to be visible. The reviewers would get advanced copies of the code and so come with questions. I see this working better by starting with questions “Why did you do this?” “What does this do?” “What other ways did you consider?” and on and on. Spend an hour or so going line by line perhaps. Seems like it might be useful.

I’ve quickly reviewed student code on visits to schools in the past BTW. Generally I only have time to scan the code and ask a few questions. What is amazing is how often I ask or tell the students things they have heard from their teacher. Students are surprised when this happens though of course they shouldn’t be. I like to think that these outside comments help build teacher credibility as well as reinforcing learning. Doing this on a larger more formal set up seems like a valuable effort.

The hard part I admit will be finding the volunteers though. One place to start? Find out if there is a local chapter of the ACM or the IEEE Computer Society. People who are active in these groups tend to be the people who are interested in developing the next generation. Also industry advisory board for career technical schools or even community colleges. They are out there.

Comments (2)
  1. Charley Williams says:

    This is a great idea!  For getting IT volunteers, the hardest part is probably "getting the word out" so technical experts in the community become aware that their neighborhood school is looking for their expertise.  I suspect there are lots of developers who'd love to share their knowledge with kids but don't know whom to ask.  I'm not teaching right now but I know I'd love to partner with a CS teacher in a local high school if making the connection was easy.

    ACM or IEEE could be a good starting point for volunteers, but how about taking this one or two steps further?  A company like Microsoft could sponsor this as a small pilot program, and invite developers to participate via its developer network.  Imagine if MS spread the word to developers through MSDN, and invited teachers and educators through blogs like this one, email lists like the AP Comp Sci teachers' list, and other networking channels with schools.

    How about even one more step:  What if the sponsor created some small form of "recognition" program for both teachers and IT professionals that choose to participate?  Doesn't need to be big — but celebrates teachers who participate, as well as the IT pros who gave their time.  Also hugely important –> This program would GIVE COMPUTER SCIENCE SOME MUCH-NEEDED ATTENTION so school administrators and the local community will take notice, and want to learn what CS is all about.

    Wouldn't take much work to organize this, and could have huge benefits.  Alfred — How about pulling some strings and calling in some favors to get some Microsoft muscle behind this?  🙂  

    Just kidding.  But seriously, it's very much in the interest of the IT industry to pursue something like this — it should NOT be considered just some fluffy "charity work" from the industry's perspective — There's a real need to kick-start interest in CS in our schools, and something like this has great potential to have some real impact if done correctly.

  2. AlfredTh says:

    Actually Microsoft has a program for supporting employee efforts in schools called EduConnect (blogs.msdn.com/…/microsoft-giving-back-to-schools-via-educonnect.aspx ) I will bring this idea up with the people behind that program. Perhaps we can make some of this happen – assuming we can find teachers interested in using it as well as volunteers from industry.

Comments are closed.

Skip to main content