Archive for February, 2012
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.
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 (http://cs2013.org) or directly
BACKGROUND ON CS2013
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.
SIGCSE-12 PANEL ON 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.
Mehran Sahami and Steve Roach
Co-Chairs, CS2013 Steering Committee
CS2013 Steering Committee
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)
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)
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.
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!
A YouTube video of my talk (with Alan’s introduction) at C5 is now available.
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.
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.