Tuesday, March 19, 2013

Jessica Jackley and Learning to Code

I went to a public presentation last night by Jessica Jackley, the social entrepreneur most famous for cofounding Kiva.org. She spoke as part of the Excellence in Leadership speaker series here at Ball State University. Jackley gave an inspirational talk entitled "Love, Money, and Work: Social Entrepreneurship as a Career," in which she outlined her career path, lessons learned, and inspirational advice to the many students in attendance.

There were many questions at the end of her presentation. The penultimate question came from a social work major, who asked about Jackley's inspirations and methods for realizing change in the world. Jackley masterfully handled all of the questions given to her, and at the end of her response to this question—almost as an afterthought—she added, "Learn to code." She said that she had only learned in the past year, but that she thought it was important, and pointed out that there are many accessible and affordable ways to build this skill. The crux of her comment was that coding gives you power to make the change you desire.

She brought this up again in her closing remarks, and this time, I had my notebook ready to get the exact quotation: "Learn to code. It's really fun. You should do it."

Thank you, Jessica Jackley, for using your position of influence to promote computing-for-everyone! Please keep sharing this message!

Saturday, March 16, 2013

Choosing Your Own Adventure

While visiting the educational resources section of the Ball State library the other day with one of my boys, I saw a pair of Choose Your Own Adventure books—easily recognizable to me by the red banner on the spine after not having seen one in many years.


I checked out Lost on the Amazon by R. A. Montgomery and brought it home to show my six-year-old son, who is an avid reader. He seems to have no trouble with the How to Drain Your Dragon and Captain Underpants series of books, and I thought a classic CYOA might be fun for him.


When I brought it home and explained what it was, he was uninterested. I brought it up a few times during the past two weeks, but he didn't show any interest until we sat on the couch together yesterday afternoon and read it together.

I will summarize our story. We were a doctor whose friends had gone missing on the Amazon River. When we find this out, we have to choose to immediately go up the river with the "Indian" Owaduga, charter a plane and go to the last known location of our friends, or wait three days to go upriver with a group of police and soldiers.



We chose to trust the Indian, and he took us in his dugout canoe up the river. As dusk approached, Owaduga gave us a choice:


We decided to rest a while, so we set up camp on the shore. Then, ...


The bold serif The End was as memorable to me as the red logo. Through no faulty reasoning or logic, we ended up being eaten by piranhas. I explained to Alex that CYOA books are like Faster Than Light: you play for the fun of playing, always with a hope of winning, but usually dying.

However, this discussion was not my first response: my first, internal reaction was to flip back to the previous decision and try again. In fact, I felt it in my fingers: I remembered how I used to keep a finger on the previous page so that I could easily backtrack.

That is, I used quick save.

I had last read a CYOA book some time in the 1980s. At the time, I was also playing games at the arcade, on the Commodore 64, and on friends' Atari machines. The arcade machines were quarter-eaters of course, and the few home computer games that had any save mechanisms were anything but "quick." (Trigger the sound of a 1541!) I have recently been thinking about the implications of digital quicksave-quickload systems on modern consciousness, knowing that experiences with technology can change the structure of the mind. However, here is evidence—long buried in my mind and perhaps inaccessible without the mediation of holding and reading this book—that my experience with quicksave-quickload predates their digital incarnation by about ten years.

My son and I read through two more times, both resulting in death by poison arrows. He tried to read it again that night, and when I asked him about it, he said he "kept getting lost." It's not that he was lost in the Amazon—he was forgetting that he couldn't just read page by page and had to follow the instructions at the bottom! This morning, he tried the plane for the first time, and he ran excitedly into my office, saying, "I survived!" Turns out, he got stranded and had to await the River Patrol: he didn't actually find his lost friends, but he had also not died, which to him was an epic win.

Saturday, March 9, 2013

SIGCSE 2013 Conference Report, Day 3

(Day 1) (Day 2)

I had toyed with the idea of skipping the morning session to have breakfast with a friend, but it turns out he had a coauthored paper being presented. I didn't go to his session, but I ended up at the "Computational Thinking" session. Am I glad I went! The session was well-attended considering that Nifty was going on at the same time, and that's always a big draw. What was most exciting about this session was that each presentation was given by a senior researcher. I don't mind grad students giving papers—in fact, it's critical that they learn to do it. It just happened that these papers were all given by very bright researchers, and they had both good insights and good responses to questions.

Alexander Repenning talked about the sustainability of K-12 interventions; that is, how well do they continue once the researchers leave the scene? His results were promising, and his research group is trying to tackle a very difficult problem of scale. As part of his presentation, he included an infographic that took Csikszentmihalyi's Flow diagram and injected Zone of Proximal Development into it, wedging ZPD between "Flow" and "Anxiety." I asked for a clarification, which prompted him to explain fundamental definitions of Flow and ZPD—probably helpful for others to frame the question, but not really addressing my concern. I am not sure that these two theories live in a planar embedding on the skill/challenge axes. If one considers points moving through the Flow space over time (adding time as third dimension), I suspect ZPD would embed into upper-right arcs. I need to think about this some more. Repenning suggested that his group has some methods for tracking student projects through this two-dimensional space, and that it is useful; I should follow up with him to see how they're doing it. I had never really thought of combining Vygotsky and Csikszentmihalyi in this way, but I still have some doubts about the simplicity of the proposed overlay.

The next presentation in this session was given by Yasmin Kafai, who spoke about the social aspects of computing. I got several references from her talk that I should investigate, including Samba Schools and Scratch, Jr. During Q&A, I asked her about her thoughts on the relationship between social learning and individual grading a la GPA and NCLB. She thought for a moment and suggested that badges-for-learning is a valuable effort in this direction. I like this model of badges as a wedge, a way of getting leverage into an otherwise closed system.

The third presenter was David Touretzky, who reported on an effort to teach kids computational thinking with a fast-pased introduction to Kodu, Alice, and Lego NXT. One interesting result was that, in this intensive one-week introduction, the robots took the cake. Touretzky is a robotics researcher and so certainly is not unbiased, but knowing kids... yeah, programming robots would be pretty cool. An interesting aside: Touretzky mentioned that if he could only teach two computational tools to someone, they would be state machines and trees. A beautiful choice, I say—not sure I could do any better.

My talk was in the next session. Although it was called "Capstones," only the first presenter talked about capstones. I am sad to report that my presentation was very sparsely attended. There were less than ten people in the audience besides the other presenters, maybe less than five. At some point, you just try not to count. I find this sad, because I really loved this work and writing this paper, and I know that hearing papers presented is often an inspiration to read them and incorporate their ideas.

On the positive side, I think it was well-received. During Q&A, all the questions were really about the VBC experience, not the assessment model I presented. Someone asked about how well the arts and humanities students adopted the agile methodology, and I explained how it helped to give them an early win, so that they could understand how and why Scrum operated. Another asked about how the relationship with the Children's Museum related to the initiation and execution of the project, and afterwards, he and I had a good discussion about the pros and cons of no-cost student projects with non-profits. In the coding of sprint retrospectives, I used the terms Collaboration, Community, Support, and Learning; one attendee explained after the talk that she thought "Support" meant something completely different until I talked through it. This was great feedback, since the terms only really made sense to me, and her recommendation—"Resources"—really was better than mine.

The lunch was good aside from a rotten tomato in my salad. Since I was the only person out of 1300 attendees who had a sour face and left the room, I think I had the only one, which is not a bad rate. Jane Margolis talked about diversity, it being the ten-year anniversary of the publication of Unlocking the Clubhouse. She mentioned that she had expected to give a rather somber presentation until about six weeks ago, but that now we have exciting news such as President Obama's advocacy of teaching computing to everyone and the phenomenal success of the Code.org video. The numbers for diversity are still low, and she pointed to the dangers of growing too fast in the wrong ways: if we don't take this opportunity to grow Computer Science for all, we risk staying in the shallow end of diversity. In particular, she pointed out how several of the Code.org video celebrities came from privileged backgrounds, which could enforce the idea that programming is some kind of inborn skill as opposed to learn. Also, she pointed out that the Code.org video talked mostly about programming as if it were the goal, ignoring the years of work by the CS Education community in getting people to understand that computing and computational thinking are not only realized through programming.

I typed this day's report from the airport, where I await my on-time departure. Many flights have been cancelled and postponed due to inclement weather, but I think these are mostly smaller planes. Now it's time for me to enjoy a few more minutes on the ground before packing up. Thanks for reading! I already have a few ideas for papers for SIGCSE 2014 in Atlanta...

Friday, March 8, 2013

SIGCSE 2013 Conference Report, Day 2

(Here's a link to day 1.)

I went to the speaker's breakfast this morning and was able to talk at length with Stephen Edwards of Virginia Tech about their use of test-driven development in CS1. Part of his discussion that resonated with me was that students with prior programming experience tend to be the most vocal opponents of TDD, often willing to defend their implementations sans tests as correct. It is noteworthy that Virginia Tech uses Web-CAT for automatic grading of programming assignments, and that this grading includes unit tests and test coverage. I experience this phenomenon in CS222, where the students push back on TDD, instead assuming that the ad hoc methods that got them through CS1 and CS2 are somehow good and universally correct—and no one pushes harder than the ones who had prior experience and easily aced those prerequisites. I notice, however, that their scale is a weakness. At Virginia Tech, they cannot automatically detect whether tests were written first or not, but I have found in CS222, with manual inspection, I can. There are traces that are left in proper TDD, and while I'm not sure I can build a taxonomy of them at this time, I do get a definite sense when reading implementations as to whether TDD was followed. In particular, with an emphasis on "Refactor" as a critical part of "Red-Green-Refactor," code that was tested post-creation tends to have much worse semantic connection between test and production code, and the tests tend to be poorly constructed. When writing just enough code to make a test pass, it's generally obvious. There's probably an empirical research project in here somewhere involving machine learning and automated grading.

This morning's plenary talk by Michael Kölling was excellent. In part, I felt vindicated in his embracing his status as a tinkerer, not a researcher. This was important to me, since there's a sense in which we were intellectual competitors in the early 2000's, not that he would have known it. I developed a visual operation semantics for Java as part of my doctoral work, and I had several pages in my dissertation comparing my notation to his for Blue and BlueJ—of course, with the claim that mine was a superior notation. However, my contour-based approach never had enough traction to make a tool like BlueJ, let alone a textbook, workshops, staff, federal funding, etc. Still, it was good to hear him happily say that he just made something up and it caught on, which I think situates my work well in a historical context as being more driven by issues of soundness and completeness—programming language issues, not pedagogic ones.

Kölling made a fascinating analogy to Haeckel's Recapitulation Theory, summarized as "ontogeny recapitulates phylogyny." Of course, that's meaningless to mere mortals, but he explained it as the idea that human embryos grow through all the stages of evolutionary heredity, which is why they look sequentially like fish, frog, or chicken embryos. This theory is disproven, but he described how well-meaning professors treat Computer Science learning—and programming in particular—as if Recapitulation Theory were true: I learned programming by learning pointer arithmetic, so you must have to learn programming by pointer arithmetic. His bigger point, then, was that in the layers of abstraction in computing, we all have to draw a line somewhere and treat the stuff underneath as a black box. This resonated with me, and I appreciated drawing upon falsified science for the analogy.

My presentation was the first in my session, and I feel it went well. I was able to embellish the presentation with some personal stories that don't show up in the paper, but work really well to "sell" the ideas in the research. I hope that some people are inspired to take a closer look at the paper.

The other two presenters in my session had interesting work, and it was fun to talk to them a little about it. Henry Etlinger drew explicitly upon Contributing Student Pedagogy (as defined by Hamer et al.), which had slipped off of my radar, but which is probably a useful frame for some of my research. Etlinger also described how he organized students into "coalitions": not quite teams, not quite groups. When asked to clarify, he described his taxonomy. To him, a team had a shared mission and a leader, while a group was just an unorganized collection. He used the term "coalition" to frame to students that they had to work together and had to negotiate with each other, but that they didn't necessarily have a holistic team identity. I thought this choice of words and explanation were interesting, though I'm not sure what I'll do with it.

I was able to meet up with Bonnie MacKellar at lunchtime to talk about my CS222 course and compare it to her course, which is designed to meet similar constraints. This inspires me to write something a bit more academic about the design, execution, and evaluation of CS222; watch for this in a future CCSC or SIGCSE submission.

I went to the Rediscovering Passion, Beauty, Joy, & Awe panel after lunch, which I didn't realize was one in a series. It seems it started with Grady Booch's SIGCSE keynote several years ago, which I still remember as one of the best keynotes I have seen. This time around, the theme was innovative and engaging approaches to introductory computer science. The presentations were good, although I regret a bit my question to Mark Guzdial about paradigms for media computing. I am very interested in how learners are impacted by procedural vs. object-oriented introductions to programming, although my one experiment in this area yielded nothing publishable; unfortunately, I think he mistook my question about paradigm for an attempt to start a language war. Media Computing is available in Java and Python, and what I really wanted to know was whether the procedural implementation (Python) offered different learning outcomes from the OO implementation (Java). From his response, I think the answer is no, but I feel bad that I didn't articulate the question clearly, or maybe should have just emailed it to him.

Regardless, I think it is noteworthy that this panel was packed, with hundreds of people in the room, and meanwhile, there were four paper sessions that collectively probably had fewer attendees (or at least close). I think this is symptomatic of what I wrote about yesterday. I would rather have the best and the brightest attending paper sessions and asking hard questions of the presenters. In this way, they can model the perceptions and insights that allowed them to rise to the top of the field. Also, if they get sick of sitting through low-quality research, they have the clout to change the direction of the conference.

After the panel, I spent some time in the exhibit hall, talking to some friends and a few vendors. I spent quite a bit of time at the Broadening Participation Alliance, trying to figure out which of the partnering organizations might be interested in a pet idea I've been kicking around. One of the gentleman I met was Manuel Pérez-Quiñones, who is involved with the Coalition to Diversify Computing. Also, it turns out he is a Ball State alumnus! We're going to try to get him to come and give a talk some time next year.

I attended two more paper presentations after this, and the best story here is that the last presenters were hoping to run slides from their iPad. Even with the proper dongle, the projector would not recognize the device. They tried pulling up a backup presentation from Google Drive, but it was in Keynote, and the presentation laptop was a Windows 7 PC. They were a bit flustered, understandably, and proceeded to give their presentation without any visual aids. It was excellent. I shook their hands afterwards and encouraged them to be confident and always deliver that talk without slides. After seeing bullet points for the last two days, it was refreshing to have a pair of presenters just talk to the audience.

It turns out that their presentation drew a little bit upon Vygotsky's Zone of Proximal Development. This reference in their paper title was my main reason for attending the session, but I was a little disappointed. I had hoped for a more formal theoretical framing of the work in terms of internalization of the instructors' guidance, but from the discussion, it seemed that they simply used ZPD to rationalize scaffolding. I have nothing against good scaffolding, but as I've been reading more about activity theory, I find myself wanting to tie this line of work with CS education in a more formal way.

I returned to my hotel room and brought up my slides for tomorrow's talk, expecting to just do a little mental rehearsal. I was dismayed to see that I had never actually finished them. Whoops. I think I did a good first pass, and then devoted all my attention to the first talk—the one I gave this morning. Revising these will keep me off the street, at least. I visited a few friends who were setting up a workshop for MIT App Inventor, got some seafood chowder and a beer, and now I'm back in the hotel room. Next up: slide revision.

Thursday, March 7, 2013

SIGCSE 2013 Conference Report, Day 1

The opening keynote was unconventional: rather than have a single distinguished speaker, they had seven people give "Flash Talks," with twenty slides, fifteen seconds per slide, all on the theme of broadening participation. It was kind of fun, but if you follow broadening participation at all, then you likely knew everything they had to say. The nice thing about a Flash Talk though is that even if you don't care for the content or speaker, you don't have to wait long for the next one. I've still never done one, but it sounds like a good design challenge. I do wonder why they didn't do a proper pechakucha.

One of the presenters was Jan Cuny who spoke about the NSF's CS10K program, which seeks to get 10,000 qualified high school computer science teachers by 2015. Two things she mentioned interested me: that high school was where intervention dropped off, and that there was a plan. This inspired me to ask a question about the role of K-8 in the plan: if a diverse group of students didn't consider computing as a career, who would fill the high school classes? Her response was that the NSF is currently focused on high school precisely because the culture of AP courses provides a hook: there's a place for an intervention to live where, once established, it is not as likely to be a victim of cutbacks in the way that a purely elective computer science course might. She (or another respondent, I don't remember) also mentioned that the K-8 interventions are primarily about computing in a context as opposed to Computer Science as a distinct field. This makes sense, since few K-8 schools have a CS teacher but they all have to do math, science, English, etc. It's true that we will lose inspired K-8 students if they have no where to go, and I will be interested to track this project as it goes on. I'm sure future SIGCSE meetings will report on it, if nothing else.

I went to several paper presentations, and while they were interesting, I don't have much specific to share from them. While the SIGCSE community has moved toward a more rigorous research model, there is still a lot of stuff that gets published that strikes me as immature work. I think a good path to raising the overall level of quality would be to accept fewer, high-quality works, and have more attendees in the room seeing what good work looks like. Right now, with four or five concurrent paper sessions, attendees are spread around and subjected to a mix of excellent, good, and fair work; a novice in the field would not be adequately prepared to tell the difference.

Particularly troublesome to me—and I've mentioned this in my other conference reports, so you know it's coming—is the low quality of the presentations themselves. Every presentation had bullet points on slides with lots of text. Several had unreadable visuals, either due to poor design or poor scaling. Yet, these presenters are all Computer Science teachers who ostensibly study education: why are their presentations so poorly designed? The most ironic one was the presenter who pointed out that people say undergraduates don't know how to design programs, and that undergraduates don't know how to design algorithms, ... then he proceeded to demonstrate that he didn't know how to design a presentation.

At least twice today, I saw speakers get tripped up by attendees asking two-part questions. I need to remember to only ask one question at a time. My talks are designed to allow for some short discussion afterward, and I may go so far as to interrupt anyone who says "I have two questions..." and demand only one at a time, to ensure quality of conversation. I know I saw a speaker do that once, though I cannot remember where or when.

I got to see the presentation of the Best Paper Award winner, as well as related work in the same session. Briefly, this was the work that Mark Guzdial wrote about, how at UCSD they combined media computing, peer instruction, and pair programming to dramatically increase retention and success. It's very cool work, and I'll probably have more to say about it later. Long story short, their results are too good for us not to try to replicate them.

In the exhibit hall, I talked to a representative from GitHub and got to ask him about their academic agreements. I might consider trying GitHub in a future project. I originally chose Mercurial years ago because the command line struck me as more learnable for novices than Git's. Turns out Git has unified into one executable and basically copied Mercurial's syntax (from what I can tell), so it's back on the table. I also spoke at length with two folks at the poster session, doctoral students who were both presenting work that was not really their dissertation work, both related to games and learning. I'll be sure to keep an eye on both projects, as they coincide with some ideas I would like to pursue in the short term. I've found that I really enjoy the poster session format and talking with young scholars. Maybe it's because they are more willing to receive criticism and feedback than some old scholars. Memo to myself: remember to accept criticism and feedback.

I have been able to meet with some old friends and catch up, which is always nice. I remember the first time I went to an academic conference, it was very intimidating to know nobody. It feels great to see people at SIGCSE who I think are interesting and who are doing good work.

In other news, I had a medium rare burger that was actually medium rare along with a local lager at Katie Mullins last night. Today, I had a bowl of pho with a friend for lunch today—a welcome treat since although Muncie has recently acquired some great ethnic restaurants, we're still lacking Vietnamese. Denver is not what I expected: never having been here, I expected it to be more mountainous. In fact, the drive from the ~30 minute drive from the airport to downtown was very flat. Looking one direction, you'd swear you were in Kansas. The other way, behind the city, beautiful mountains. Maybe this is old news to folks who have been here, but I thought it would be worth documenting my assumptions so that I remember to watch out for preconceived notions in more serious matters.

Next up: the reception, which is promised to feature a free drink and heavy appetizers. I'm looking forward to my talk tomorrow and just did some minor revisions on the slides. After looking at the schedule, I'm a little miffed that Saturday's talk is in the "capstone" paper session, since my work has nothing to do with capstones per se. I hope I get the right kind of audience to share this work and get good feedback.

Tuesday, March 5, 2013

Preparing for SIGCSE 2013

I am soon to leave for SIGCSE 2013, and I am looking forward to the conference. I have attended several SIGCSE meetings over the last eight years, and I always come away feeling reinvigorated. The community values disciplinary education research and the dissemination of both original results and best practices. The conference experience itself is tiring, but I always walk away having learned something new or made new connections. It's a good thing that the conference builds such energy and positive momentum since it always falls during Ball State's Spring Break; I have to sacrifice a significant opportunity for productivity, relaxation, and family time.

This year, I am giving two research presentations.

On Friday at 10:45AM in Governors 10, I will present "Studio-Based Learning and App Inventor for Android in an Introductory CS Course for Non-Majors." This draws upon the doctoral work of Khuloud Ahmad, who completed an Ed.D. under my supervision last summer. The data collection dates back to the beta release of App Inventor for Android (now MIT App Inventor). We deployed several different assessments to triangulate on our conclusions: that this combination of technology and pedagogy is highly effective for engaging students and exposing them to a breadth of Computer Science ideas, both technical and non-technical. The research results are primarily Khuloud's work, but since she cannot make the trip from Kuwait, and I will be happy to present them.

On Saturday at 10:45AM in Governors 16, I will present "Empirical Evaluation of Periodic Retrospective Assessment," which was coauthored with Brian McNely. This paper formalizes the assessment technique I have written about here several times, with an empirical evaluation drawn from the VBC study. I am excited to present our findings on this unconventional assessment technique, and I am eager to hear how it is received. Hopefully the session will have a good draw despite being the last of the conference. I was inspired by a recent post by Mark Guzdial, where he describes having to frame his work in a broader education research context for a specific audience. Following this inspiration, I have a series of slides at the beginning of the talk that describe what I believe learning to be. In short, if you don't believe that learning is constructive, situated, social, and mediated, or that higher education is about values, dispositions, and reflection, then my assessment technique is not for you.

I may try to continue my 2012 tradition of daily conference reports while at SIGCSE. However, I also want to continue my tradition of sharing beers with like-minded strangers, so I suppose it gets down to which one wins out at the end of long days.