Learning computing on computer, not in IDE

October 5, 2009 at 10:35 am 3 comments

Ray Lister, who’s been really good at provoking my thinking lately, made an interesting response to Ed Gehringer on the SIGCSE members list last night:

On Sat, 3 Oct 2009, Ed Gehringer wrote:
> In the last few years, I’ve been concerned that my tests and exams
> have been given in an environment that is increasingly artificial.
> No one would think of writing code while away from a computer …


For today’s novice, who is learning to program in an era where
sitting in front of the computer means that the next compile-and-run is
only a mouse click away, it is tantalizingly easy but ultimately futile
to pursue a strategy of trying to get the computer to do the thinking
for them.

I think we need to place greater explicit pedagogical emphasis on
performing programming activities *away* from the computer. I’m
not advocating zero use of machine-based testing. But I think
testing students on paper is part of a healthy grading mix.

(Apologies in advance if I’ve just started an email storm.)


Dr. Raymond Lister
Science Teaching and Learning Fellow,
University of British Columbia,
Department of Computer Science,
Vancouver, Canada

Ray’s call for paper-based and computer-based assessment is interesting.  My recent reading spree on cognitive load has me thinking about student learning activities that are on the computer, but not in the IDE.  For example, how about tools that let a student enter an equation or a loop in response to a question, and then a parser (or maybe even just a tokenizer for some expressions) gives the student feedback that is tuned to that problem?  Not just “You’re missing a right paren” but “You’re missing the term where you divide by the count to get the average” or even “Hmm, doing it like that will miss the last item in the list.”  These could be used for testing, as Ed’s question originally suggested, but also new kinds of student activities for learning.

Intro to CS courses will be about programming, enforced by student and teacher culture.  However, programming is a pretty blunt instrument for helping students learn — there are lots of cognitively complex activities there, with little useful feedback.  The educational psychology literature I’ve been reading has me realizing what few tools we computing educators have right now to facilitate student learning about computing.  What if our students can’t solve the big programming assignments we assign?  Well, we can give them a smaller programming assignment, or a different language for programming. Katrin Becker came up with a nice list in her blog of educational activities that aren’t just “generate program (in whatever language).”

The non-programming activities on Katrin’s list, though, are mostly without computational support.  Could we use our own technology to support learning about the technology?  How about tools that help a student in identifying the differences between two programs by highlighting comparable parts? Or can parse a student’s natural language explanation of a program to provide feedback?  Or ask a student to generate the output of a program, and then use pattern matching to give feedback on that response?  We might use all this cool computing technology we have to provide learning experiences and feedback to students other than just programming error messages from the IDE.  Surely, we can figure out more to do with a computer to help learning than just to build more languages and IDEs.

Entry filed under: Uncategorized. Tags: , .

Question Everything: How We Teach Intro CS is Wrong Computing Surge in Georgia from Inside Higher Ed

3 Comments Add your own

  • 1. Mike McMillan  |  October 5, 2009 at 5:32 pm

    Mark, I teach introductory computer science at a community college and at a four-year university. I am building a programming environment that addresses some of the concerns you mentioned. My editor uses a current open-source compiler but I’m building a separate parser that will allow me to provide much more accurate error messages, including a code template so that the student can see what the incorrect statement should look like, though without specifics for the problem they are working on. I am also building in a knowledge base for the problems the students are asked to solve to provide them with problem-specific help.

  • 2. Mark Miller  |  October 7, 2009 at 3:14 am

    I am a fan of paper-based programming as a part of educating a student about the subject. Getting the student to think like the computer is helpful in debugging. I’m rather surprised this is a subject of debate. When I took CS we used to write snippets of code on paper tests all the time. There were a few occasions where I or a friend was trying to figure out a bug that was difficult to find. If all else failed I would print out my code and go through it step by step, keeping track of variables and information in memory blocks using a piece of scratch paper. I did this with fellow students as well. We’d usually pinpoint the bug this way, like I said when all else failed. It was a way to slow down and think about what the program was doing. Sometimes it would help me pinpoint a misunderstanding the other student had.

    An easy to use environment can end up encouraging bad habits when a student is trying to solve a problem. It enables experimentation, but that can lead to just “shooting into the dark”, hoping you hit something meaningful, and not understanding what’s really happening.

  • […] tend to evoke giggle around here.)  I can find a few minutes this week to think about the “Phonics of CS Education” work that I’ve been talking about here lately.  I’m running into a problem for […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 9,005 other followers


Recent Posts

Blog Stats

  • 1,879,157 hits
October 2009

CS Teaching Tips

%d bloggers like this: