Tag: apcs’

Bellevue AP Institute First Impressions

 - 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…

AP Computer Science Advice

 - by Hélène Martin

I’m heartbroken to see my seniors leaving but I’m also looking forward to following their adventures.  They all have exciting plans ranging from studying some type of engineering (computer?!) at MIT to computer science at Westpoint.  What a smart, talented and cool bunch of students!  I can only hope to have classes as amazing as this year’s AP CS again.

I asked everyone to leave some advice for upcoming AP CS students and I think they came up with great stuff:

The Five Tenets of Programming
1. If you feel like you’re falling behind, ask for help, if not from Ms. Martin, then from other students.  You’ll save yourself hours of frustration.
2. Don’t be afraid to try your own thing if you get the chance, even if you think it’s beyond your level.  You’ll learn faster if you’re interested in the project.
3. Temp variables are awesome.  So are ArrayLists.
4. Don’t let the sometimes snooty programming club people argue with you — by the end of the year, you’ll probably know more.
5. And NEVER tell yourself you’re bad at coding.  EVER.  This just leads to failure.  See tenet 1.

Don’t trust the GridWorld.  Never code a method unless necessary.

BE PATIENT!  It’s frustrating, yes, but when you think about it calmly and figure out what needs to be done and what you need to do that, end results will be exhilarating!  Side story: I refused, eventually, to help my friend on his work for another programming class because instead of thinking everything out, he gets angry and rants about how much CS sucks.  Honestly, being patient and drawing things out will be more helpful than sitting around and crying.

PAY ATTENTION DURING GRIDWORLD INTRO.  If you don’t you’ll be mighty confused.

Take loads of notes, pay attention and GO TO GOOGLE.

I didn’t sign up for AP CS, so I was surprised when it became my favorite class and Ms. Martin my favorite teacher.  Appreciate that your teacher is passionate and knowledgeable about her subject.  Don’t be afraid to ask for help, don’t give up when you get frustrated, always make your code as pretty as possible, and celebrate when you complete a task.

Use Ms. Martin — she’s a great resource.  Don’t be afraid to look at what other coders have done before you.  Stay ahead of deadlines if you can.  Enjoy yourself, work hard, this class can be a blast.

Learn to speak in code.  It helps on history papers when you write an essay in Java.  Also become a fan of curly braces and other lingo that can make or break your program.  Also love Ms. Martin.  She’s an awesome teacher and is driving herself broke by teaching.

Use Eclipse and come in after school.  The teacher actually teaches and helps — whoa!

for(int days = 1; days <=  365; days++) {
    haveFun();
}

Stay on top of things and don’t get behind!  Stay after school to get extra help.  Work with others and form connections for help later in the class.

Work hard, listen to Ms. Martin.  This IS the best class at Garfield, so be sure to make the most of it.

Do all work early and finish as soon as possible.  Ask Ms. Martin for help when needed and use patience.

AP computer science is one of the funnest and most interesting classes I have ever taken.  Remember to always compile your code so that it saves and so that you can fix your errors as you go rather than having a giant amount of errors by the time you finish.  Participate in programming competitions — they’re fun and you learn a lot by working with others.

GOOD LUCK!  Don’t get frustrated because the concepts become easier as a person codes more and learns more.  Also, take advantage of class time!

Be good at pinball.  Be committed if you are going to take this class and study hard and often.  Make sure to stay on top of your projects and don’t get behind.

Don’t jump in second semester!  Or I guess you can if you really wanna!

Pay attention in class, don’t let yourself get behind or it will suck.  Hard work doesn’t guarantee success so be patient.  Ms. Martin is hella scary so don’t ask her for anything. ;)

Eclipse is your best friend.  Neglect your other classes because this one is better.

It is a fascinating logic-based environment with simply the best and most competent teacher at Garfield.