Archive for February, 2012

Bret Victor’s “Inventing on Principle,” and the trade-off between usability and learning

I have had several people now send me a link to Bret Victor’s video on Inventing on Principle. It is a really impressive demo!

His system reminds me of Mike Eisenberg’s work on SchemePaint.  Mike wanted the artist to be able to interleave programming and direct manipulation.  In SchemePaint, you could draw something by hand, then store the result in a variable to manipulate in a loop.  Or you could write some code to tesselate some graphical object, then add tweaks by hand.  It was beautiful.  The work that Mike did on SchemePaint led to his wonderful work on HyperGami, a CAD system for origami, which was the start of his Craft Technology group. That’s the group from which Leah Buechley graduated — she did the LilyPad.

People are sending me Bret’s video asking, “Wouldn’t this be great for learners?”  I bet it could be, but we’d have to try it out. At one point in his lecture, Bret says, “Why should I have to simulate the computer in my head?”  Because that’s the point of understanding computer science.  Bret’s system looks like a powerful visualization system, and visualization can be used to lead to real understanding, but it isn’t easy to design the visualization and context such that learning occurs.

The problem is that visualization is about making information immediate and accessible, but learning is about changes in the mind — invisible associations and structures.  Sometimes good usability makes it easier to make these associations and structures.  Tools like Scratch and Alice increase usability in one direction (e.g., syntax) while still asking students to make an effort toward understanding (e.g., variables, loops, and conditionals).

My first PhD student was Noel Rappin, who explored the features of modeling environments that lead to learning.  He had a CHI paper about his work on helping chemical engineers learn through modeling.  Our colleagues in chemical engineering complained that their students couldn’t connect the equations to the physical details of the pumping systems that they were modeling. Noel built a system where students would lay out the physical representation of a pumping system, then “look underneath” to see the equations of the system, with the values filled in from the physical representation (e.g., height difference between tanks).

He ran a pilot study where students would lay out a system according to certain characteristics.  They would then manipulate the system to achieve some goal, like a given flow rate at a particular point in the system.  When Noel asked the pilot students if they gained any new insights about the equations, one student actually said, “What equations?”  They literally didn’t see the equations, just the particular value they were focusing on.  The system was highly usable for modeling, but not for learning.

Noel built a new system, where students could lay out a model, and values from the model were immediately available in an equation space.  To get the flow rate, the student would have to lay out the equations for themselves.  They would still solve the problem by manipulating the physical representation in order to get the right flow rate, and the system would still do all the calculations — but the students would have to figure out how to compute the flow rate.  The system became much harder to use.  But now, students actually did learn, and better than students in a comparison group.

Bret’s system is insightful and may have some terrific ideas for helping learning.  I’m not convinced that they’re new ideas yet, but an old idea in a new setting (e.g., JavaScript) can be powerful.  I worry that we get too entranced by improvements in usability.  In the end, learning is in the student, not in the system.

February 21, 2012 at 7:50 am 17 comments

CS2013 Strawman Curriculum Standard now available

Dear colleagues,

We are delighted to announce the availability of the ACM/IEEE-CS Computer
Science Curricula 2013 – Strawman draft.
The draft is available at the CS2013 website ( or directly

Continuing a process that began over 40 years ago with the publication of
“Curriculum 68”, the major professional societies in computing–ACM and
IEEE-Computer Society–have sponsored efforts to establish international
curricular guidelines for undergraduate programs in computing on roughly a
10-year cycle. This volume, Computer Science Curricula 2013 (CS2013),
represents a comprehensive revision of previous computer science curricular
guidelines, redefining the knowledge units in CS and rethinking the
essentials necessary for a Computer Science curriculum.

The CS2013 Steering Committee welcomes comment on the CS2013 Strawman draft
from the computing community. The comment period will begin shortly
(additional information on how to provide comments will be sent out in a few
days) and remain open until July 15, 2012. Comments on the Strawman draft
will be addressed in future drafts of CS2013.

A panel session at SIGCSE-12 will provide a brief overview of CS2013 and
provide the opportunity for in-person feedback from the community on the
Strawman draft. The panel session is scheduled for Thursday, March 1, 2012
at 10:45am-12noon in Room 301AB.

Warm regards,
Mehran Sahami and Steve Roach
Co-Chairs, CS2013 Steering Committee

CS2013 Steering Committee

ACM Delegation
Mehran Sahami, Chair (Stanford University)
Andrea Danyluk (Williams College)
Sally Fincher (University of Kent)
Kathleen Fisher (Tufts University)
Dan Grossman (University of Washington)
Beth Hawthorne (Union County College)
Randy Katz (UC Berkeley)
Rich LeBlanc (Seattle University)
Dave Reed (Creighton University)

IEEE-CS Delegation
Steve Roach, Chair (Univ. of Texas, El Paso)
Ernesto Cuadros-Vargas (Univ. Catolica San Pablo, Peru)
Ronald Dodge (US Military Academy)
Robert France (Colorado State University)
Amruth Kumar (Ramapo Coll. of New Jersey)
Brian Robinson (ABB Corporation)
Remzi Seker (Univ. of Arkansas, Little Rock)
Alfred Thompson (Microsoft)

February 20, 2012 at 8:12 am 5 comments

Two CS Endorsement programs in Georgia!

Exciting that Kennesaw University now has an approved high CS teacher endorsement program!  That makes two in the state, the other being the original at Columbus State.  This doesn’t fix the problem of getting teachers into these programs. Maybe a program in the Atlanta area may draw a different audience than an on-line program in West Georgia.  In any case, it is a positive for CS10K, in that it increases the potential production of teachers.  Now we just need more teachers taking these programs.

This endorsement is intended to prepare computer science teachers (grades 6 through 12). It will lead to teacher certification in the teaching field of computer science in Georgia. As an endorsement, the teaching candidate must already have or simultaneously obtain a teaching certification in another field.

via Endorsement In Computer Science Education – Department of Computer Science.

February 17, 2012 at 9:34 am 4 comments

New PCAST report talks about SIGCSE

Pretty cool!  The latest PCAST (President’s Council of Advisors on Science and Technology) report is on “ENGAGE TO EXCEL: PRODUCING ONE MILLION ADDITIONAL COLLEGE GRADUATES WITH DEGREES IN SCIENCE, TECHNOLOGY, ENGINEERING, AND MATHEMATICS.”  CS Education plays a significant role in this, and SIGCSE gets a few mentions!

February 16, 2012 at 9:48 am 1 comment

Helping Everyone Create with Computing: Video of C5 Talk

A YouTube video of my talk (with Alan’s introduction) at C5 is now available.

February 15, 2012 at 10:33 am 2 comments

Using a Worksheet to Address a CS Education Problem

I just gave a midterm exam in my class on data structures using media computation.  The results are disappointing, and have prodded me into trying something new: I made a worksheet.

Two of the problems on the midterm were tracing problems.  One had a posterize method (reduces the possible number of colors in a picture), and I provided some RGB values for some sample pixels: What new RGB values will be in those pixels after this method executes?  The second problem had three graphics images, and three programs: Which program generated which image?  I had several people review the tracing problems — they weren’t trivial.

One of the problems was a code writing problem.  I gave them the Sound methods for reverse() and for increaseVolume().  They were to write a new method that reversed the first half the sound, then increased the volume in the second half the sound.  I literally expected them to copy the bodies of the two loops, and just tweak the ranges on the loops.

The average score on the two tracing problems (adding the percentages together and dividing by 200) was 96%.  15 of the 16 students in the class got over 90% on the two problems.  The average score on the one writing problem was 75%.  Five of the 16 students got less than 70% right.  These students are quite good at reading code.  Some of these students were unsuccessful writing code.

What happened?  The research literature on CS education has lots of examples of how reading and writing skills develop separately.  Pete Pirolli reported in the early 1980’s that, in several studies, Anderson’s lab at CMU found no correlation between reading and writing skills.  Raymond Lister and his colleagues have written several papers about students having one or the other, but not both sets of skills.  So, it’s not a surprising result, but it’s one that I need to address.

How?  The students are working hard on programming assignments.  Programming assignments are so heavy — they take so much time, they require so much effort.  I do require students to do a weekly out-of-class quiz, often oriented around videos.  This semester, two of the quiz assignments were to use Problets on for and while loops.  That may have helped with the reading skills, but doesn’t seemed to have helped much with writing skills.

I decided that I needed to try out one of the ideas in CSLearning4U, that is more examples and more lighterweight practice.  I made a worksheet for this week’s quiz. The worksheet has four completely worked out array manipulation programs (with outputs provided) and two more sound manipulation programs (for analogous actions as on the arrays), to make clear the connections.  There are five more programs that are nearly complete, including all outputs, but with some blanks. The blanks are mostly where range manipulations would take place.  The students have to complete the blanks.  I’m offering two points each for the 10 blanks, where the first 10 points go towards the quiz grade and the second possible 10 points are bonus points toward the midterm exam.

I made very clear that there was no partial credit.  The students get them right, or they don’t.  I explicitly said that the smartest thing to do is to type in the program, then fill in the blanks such that the output is right.  This is a lighterweight activity than programming from scratch.

This is unusual for me, and maybe for other higher-education CS teachers.  Worksheets are very common in high schools, and even in higher-education in other STEM disciplines.  I’ve seen physics labs and chemistry pre-labs in worksheet formats.  I can’t remember seeing them in CS, but I’m sure that somebody has done them.  What I’m doing here is something that K-12 teachers are taught to do: See a particular learning problem, then find or invent an activity to address that problem.  This is the first time I’ve created a worksheet as that activity.  In CS, we tend to assign some more programming to address a learning problem.  I’m looking for something with less cognitive load: More example, and more lightweight practice.

I’m still figuring out how I’ll evaluate if this worked.  My guess is that I’ll have a slightly more heavyweight version of this on next week’s quiz, e.g., I provide a partial program, with inputs and outputs specified, and I’ll ask them to fill in the rest of the program.  That will give me a sense if they’re developing the writing skills I hope to see.

February 14, 2012 at 8:18 am 10 comments

Learning to code for Valentine’s Day: Same problems as everyone else.

Here’s a cute story: Girlfriend of the founder of the website Instagram learns to program in Python in order to give her Valentine a new web tool to work with Instagram.  From a computing education perspective, it wasn’t so sweet. The complexity of learning computing got in her way and ruined her secret.  It’s just too darn hard.

And yes she also had to learn Photoshop to come up with the the three different designs, “It’s almost harder than Python,” she told me.

While the service ended up looking amazing, her plan to keep it a secret from Krieger didn’t work, mainly because of her frustration with working out bugs, “Something would take me an hour and a half and I knew that ten feet away is someone who could fix the same bug in ten seconds.” So she spilled the beans.

via Instagram Founder’s Girlfriend Learns How To Code For V-Day, Builds Lovestagram | TechCrunch.

February 14, 2012 at 8:15 am 2 comments

Older Posts Newer Posts

Recent Posts

February 2012
« Jan   Mar »


Blog Stats

  • 1,510,284 hits

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

Join 5,265 other followers

CS Teaching Tips