Skip to content

Bellevue AP Institute First Impressions

2010 June 28
by Hélène Martin

I’ll start by saying that our instructor, Kyle Gillette, is very personable, knowledgeable, and even puts up with my dissent!  Swell guy.

I wasn’t quite prepared for what this would look like — only 10 of us are there for the AP Computer Science session and most have either not offered the course yet or are just beginning.  In fact, several have not done much Java or programming.  I was pretty taken aback to see us diving right into creating a Person class using BlueJ and then I remembered that I live in this comfortable land where nearly anyone I share ideas with has a procedural-first teaching philosophy.  I was totally baffled when in the first twenty minutes, we were being walked through the Person class and our instructor kind of nonchalantly says “and then we have to build a constructor and I tell my students they can either make up a different name for the parameter we’re passing in or prepend an underscore or use this notation.”  He says he does this on day 2 or 3 of his class!  What’s a parameter?  What’s passing?  What’s a field?  What’s a type?  What’s this?  Where does that thing I’m passing in come from?  The teachers around me were certainly not getting into it very smoothly.  I guess the idea is that students can pattern-match for a while and eventually the understanding will sort of emerge.  I do believe that’s true but it seems painful!

An interesting thing I hadn’t really thought about with this objects-early business is that there doesn’t seem to be a lot of what I’d consider interesting computational problem-solving to do early on.  At least the way it was presented here, it’s building lots of little classes to establish syntax muscle-memory (and there’s definitely value to that).  The problem-solving that we did do was very math-y: deriving formulas for the area in our Triangle class and things like that.  I tend not to do that a lot but maybe it’s a good opportunity for students to review some of their math.

Building Java Programs did get a little shout-out as an example of an “alternate philosophy.”  I tried to articulate what I see as the reasoning behind “back to basics” — reduce cognitive load, isolate concepts to encourage mastery, allow for meaningful programs early, build solid mental models, etc.  Our instructor’s comment was that it probably does work better for weaker students.  That’s a very interesting statement and one that sort of threw me for a loop — aren’t the weaker or maybe middle-level students really the ones we should be paying attention to?  In my experience,  if we only had strong students, we could pass out books on the first day then get coffee for the rest of the year and they would still be superstars.  I don’t think that a methodology that assumes strong students is very productive.

BlueJ was applauded for saving students from confusion between classes and objects.  One of two things is at work, I think.  Either students who use the (truly very good) visualizations of classes, their relationships and their instances over time internalize a model of how classes and objects interact.  Or maybe the system acts as a crutch that doesn’t require them to explicitly form good mental models.  I don’t know.  I did use it with a couple of students I started working with mid-year a couple of years back and found it fine but they definitely hiccuped a bit when starting to write client code.

As a side note, Kyle uses this style of curly braces which I had never seen before:

container header
{   stuff here;
    stuff here;

Strangely enough, Cay Horstmann (of Big Java and Core Java fame) wrote a blog post today pointing out that he is the originator of that style.

I leave the first day feeling very grateful for my background and a little discouraged for K-12 computer science education.  The other teachers all seem really energetic and awesome and I know their courses will rock but even if they work like crazy this summer and through the year I’m afraid they’re not going to be that far ahead of their students content-wise.  We need more people who have domain knowledge and can focus on pedagogy, recruiting, clever projects, clubs…

2 Responses leave one →
  1. Gary Kacmarcik permalink
    June 28, 2010

    Re: Horstmann
    A disadvantage of the Horstmann-style is that inserting a new statement at the beginning of a block causes the line-based diff for before/after the change to appear as a “delete one line and replace with 2 new lines” rather than what it is: “insert one new line”.

    This many not sound significant, but if you work on a project with a team and need to review changelists before they are submitted into the repository, this (admittedly small) extra cognitive load starts to add up.

    • Hélène Martin permalink*
      June 28, 2010

      That’s a good point, Gary. But you forget the most important reason not to use Horstmann-style: It’s Not What I Grew Up With!!! =)

Leave a Reply

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS