Computing and people who work with computers are not the nerdy and negative images often portrayed in the media. As a computer scientist, educator and project evaluator with my hands and feet in many fields I live these realities every day. I am like the kid who never stops asking “why?” In this blog, I share my questions and curiosity about the interdisciplinary role of computing with a special concern for how computing can make the world a better place.

Tuesday, August 13, 2013

One thing I love about ICER is the format: it is designed for interaction. We don't just sit there, sliding progressively lower in our seats as the days go on, hoping for the next coffee break. We listen to a speaker and we discuss the talks and we have spirited Q & A sessions.There were quite a few radical ideas tossed
out in today's presentations. In great part because the speakers were, for the most part, energetic
and comfortable with uncertainty. I can't count how many times I heard
something along the lines of "and these results [just presented] leave us with more questions than answers". At which point we all would happily leap into the discussion fray with each other and the presenter. And no one seemed to take offense, as I have seen in some other research conferences when presenters take themselves a bit too seriously.

Cognitive learning theories were at the heart of the first two talks and
there was some radical stuff here. For example, in the first talk of
the morning Linda Seiter spoke about her work with computational
thinking and primary school students. Not high school, not middle
school, but primary school. 2nd grade, 4th grade, 6th grade. We don't hear about research on computing in
kids this young very often - not by computer scientists at least. That
in itself made me sit up in my seat.

One of her fascinating results started with the discovery that kids have an easier time learning computational concepts that we take as given to be harder, and that kids have a much harder time with concepts we assume are easier and thus teach first. For example, multi-threading, blocking, and synchronization come much easier than variables. It turns out that the concept of variables is really really hard - it isn't a natural concept at all. Young kids just don't grasp variables. Whereas they do grasp those OS related terms I mentioned.

Hold that in your head and then add in this: Linda also said that 8th graders have similar computational thinking skill abilities as the college students she teaches and they run into the same problems. So although there are periods of predictable cognitive leaps as kids develop (4th - 5th grade seems big) , in terms of skill acquisition ability in computational thinking, there doesn't appear to be much change between 8th grade and freshman year of college.

If that is the case, should we rethink our decades old accepted wisdom about what concepts we teach first and what is necessary as foundational? The work we were hearing about focused on K-12, but what about university computing curricula? We have been beating our heads on the wall for decades on some of the same CS1 and CS2 problems - what if, instead of continuing to rework, tweak, re-present the same basic set of introductory concepts in the hopes of getting them across better - what if instead we look at upending the entire curriculum and putting the so-called hard concepts first? What if many of these aren't really the conceptually hard concepts at all? Conversely, what if the stuff we think of as easy and fundamental gets pushed out much later? Junior year? Senior year?

Why, for example, do we teach variables right off the bat anyway? Because we always have? Because all the textbooks are written that way? Because everyone does it that way? Because they are obviously simpler concepts? Because this is so fundamental to our belief system that we don't question it? Because it would be scary as heck to throw it all out the window? We can come up with lots of reasons why this paradigm shift (as it most definitely is)would be impractical to try. But when have true paradigm shifts ever been comfortable or without large speed bumps along the way?

Here is one of my favorite quotes from this morning:

"As a teacher you need to forget everything you know and think like a first grader".

Although directed at teachers and researchers working with first graders, I think that it would be healthy for all of us to periodically think like a first grader. Before we have internalized so many fixed notions of how the world works, and, to quote back from yesterday's post, before we have developed Functional Fixations.

2 comments:

The Program by Design community has been saying for a long time that mutable state (aka variables) is not what should be taught first. Unfortunately, although they may be correct, their style of delivery for this message often gets in the way of having it be more broadly accepted.

Variables are a core element in programming. It's not that you cannot do any programming without variables... but it'd be very little. We could perhaps teach more advanced concepts about computing, but we wouldn't be able to get students to write any code to *play* with those concepts if they haven't acquired a reasonable level of expertise in programming. What do you think?

The blog header is very much "me", however you can see more formal information about my evaluation & assessment work at www.lisakacz.com . You might also like my book: "Computers and Society - Computing For Good" (CRC Press 2012) www.computers-and-society.com