Posts tagged ‘computing education’

HyperBlocks come to Snap! — UX for PX in CS4All

Jens Moenig kindly shared with me a video announcing HyperBlocks that he’s added to the next version of Snap! The idea of hyperblocks is to support vector and matrix operations in Snap!, as in APL or MATLAB.

I’m interested in the research question whether vector operations are easier or harder for students, including considering who the students are (e.g., does more math background make vector operations easier?) and how we define easier or harder (e.g., is it about startup costs, or the ability to build larger and more sophisticated programs?). My suspicion based on the work of folks like L.A. Miller, John Pane, Diana Franklin, Debbie Fields, and Yasmin Kafai is that vector operations would be easier. Students find iteration hard. Users have found it easier to describe operations on sets than to define a process which applies the operation to specific elements. It’s a fascinating area for future research.

And, you can do Media Computation more easily (as Jens shows) which is a real win in my book!

They also have an online course, on using Snap! from Media Computation to Data Science: https://open.sap.com/courses/snap2

Soon after Jens sent me this video, I got to see him do this in real-time at Snap!Con, and then he and Brian Harvey won the NTLS Education Leadership Award for their work on Snap! (see link here). Congratulations to them both!

So here’s the question that I wonder: Who does Snap! work for, and who doesn’t it?

  • I find Snap! fascinating but not usable for me. I have tried to do what I see Jens doing, but have to keep going back and forth from the video to the tool. It’s not obvious, for example, where to get the camera input and how to use it. I’m sure if I spent enough time using Snap!, I’d get it. What teachers and students are willing to pay that cost? Obviously, some are — Snap! is popular and used in many places. Who gets turned off to Snap!? Who doesn’t succeed at it?
  • I attended some of the sessions at Snap!Con this summer: https://www.snapcon.org/conferences/2020. I was particularly struck by Paul Goldenberg’s session. He showed videos of a young kid (somewhere in 8-10) using Snap!. He was struggling to place blocks with a trackpad. Think about it — press down at the right place, drag across the trackpad without lifting up, release at the right place. This is hard for young kids.

These are important questions to consider in pursuit of tools that enable CS for All. UX for PX – how do we design the user experience of the programming experience.

P.S. Jens just sent me the link to his Snap!Con talk video: https://youtu.be/K1qR4vTAw4w

October 5, 2020 at 7:00 am 10 comments

Proposal #3 to Change CS Education to Reduce Inequity: Call a truce on academic misconduct cases for programming assignments

I participated in a Black Lives Matter protest in Ann Arbor a few weeks ago, where I first heard the slogan “Defund the Police.” I was immediately uncomfortable. The current model for police in the US may be broken, but the function of the police is important. But the more I learned, the more I became more comfortable with the idea. As this NYTimes article suggests (see link here), the larger notion gaining support in the US is that we need a reinvestment. We want to spend less on catching criminals, and more on supporting community health and welfare. That’s when I realized what I wanted for my third and final proposal to change CS education to reduce inequity.

This is my four and last post in a series* about how we have to change how we teach CS education to reduce inequity. The series has several inspirations, but the concrete one that I want to reference back to each week is the statement from the University of Maryland’s CS department about improving diversity, equity, and inclusion within their department:

Creating a task force within the Education Committee for a full review of the computer science curriculum to ensure that classes are structured such that students starting out with less computing background can succeed, as well as reorienting the department teaching culture towards a growth mindset

Students don’t learn best by discovery

Paul Kirschner, John Sweller, and Richard Clark have been writing a series of controversial and influential papers in educational psychology. The most cited (in Educational Psychologist) lays out the whole premise in its title “Why minimal guidance during instruction does not work: An analysis of the failure of constructivist, discover, problem-based, experiential, and inquiry-based teaching” (see link here). Another, in American Educator, is a more accessible version “Putting students on the path to learning: The case for fully guided instruction” (see link here). A quick summary of the argument is that learning is hard, and it’s particularly hard to learn if you are trying to “figure things out” or “problem-solve” at the same time. In fact, it’s so hard that, unless you tell students exactly what you want them to learn, the majority of your students probably won’t learn it.

Computer scientists are big believers in discovery learning. I’ve had a senior faculty member in my department tell me that, if they gave students feedback from the unit tests (vs. a binary passed/failed) used in autograding, “we would be stealing from students the opportunity to figure it out for themselves.” I have been interviewing teaching assistants for the Fall. They tell me that if I made my class harder, so students have to struggle more to figure out the programming assignments, they would learn more and retain it longer. I know of little evidence for these beliefs, and none in CS education. Telling students leads to more students learning and learning more efficiently than making them figure it out. Efficiency in learning does matter, especially when we are talking about students who may have competing interests for their time (like a job) and during the stress of a pandemic.

Learning requires challenge, but too much cognitive load reduces learning. My guess is that we believe in the power of struggle because it’s how many of us learned computing. We struggled to figure out undocumented systems, to make things work, and to figure out why they worked. We come away with a rationalization that the process of discovery, without a teacher or guidance, is what led to our learning. The problem is that for experts and high-ability/highly-motivated learners, we like to learn that way. We want to figure it out for ourselves. There is a motivational (affective) value for discovery. However, the available evidence suggests that our belief in discovery is a mirage, a cognitive illusion, a trick we play on ourselves. We don’t learn best by discovery.

What’s worse, by forcing more students to learn by discovery, we will likely drive away the less prepared, the less motivated, and the less able students. That’s the point of this series of blog posts. We as CS teachers make decisions that often emphasize how we wanted to be taught and how our top students want to learn. That is inequitable. We need to teach “such that students starting out with less computing background can succeed.”

Programming assignments should be practice, not assessment

Clark, Kirschner, and Sweller describe how we should be teaching to be most effective and efficient:

Teachers providing explicit instructional guidance fully explain the concepts and skills that students are required to learn. Guidance can be provided through a variety of media, such as lectures, modeling, videos, computer-based presentations, and realistic demonstrations. It can also include class discussions and activities—if the teacher ensures that through the discussion or activity, the relevant information is explicitly provided and practiced. In a math class, for example, when teaching students how to solve a new type of problem, the teacher may begin by showing students how to solve the problem and fully explaining the how and why of the mathematics involved. Often, in following problems, step-by-step explanations may gradually be faded or withdrawn until, through practice and feedback, the students can solve the problem themselves. In this way, before trying to solve the problem on their own, students would already have been walked through both the procedure and the concepts behind the procedure.

Programming assignments are the opportunities to practice in this model, not the time to “figure it out for themselves” and not the time to assess learning or performance. In explicit instruction in programming, the teacher tells the student exactly what to do to solve a programming problem. Tell them how to solve the problem, and let them practice the same problem. (Better yet, give students worked examples and practice interleaved, as we do in our ebooks.) Programming is a great place for learning, since it provides feedback on our tests and hypotheses.

Students should be encouraged to engage in programming practice. The way we do that is by giving points towards grades. We should probably give more points for correct solutions, because that creates desirable incentives. But being able to program does not indicate understanding. The recent ITiCSE 2020 paper by Jean Sala and Diana Franklin showed that use of a given code construct was not correlated well with understanding of that code construct (see paper here). It’s also the case that students may understand the concept but can’t make it work in code.

As I was writing this blog post, the ACM SIGCSE-Members email list had a (yet another!) great thread on how to reduce cheating in CS1. The teachers on the list were torn. They want to support student learning, but they don’t want to reward cheaters. Many echoed this same point — that programming assignments have to be an opportunity for learning, not a summative assessment.

We need to separate learning and assessment activities. Most programming should be a learning opportunity, and not a time to assess student learning. I suppose we might have a special programming assignment labelled, “This one is under exam conditions,” and then it’s clear that it should be done alone and for assessment. I don’t encourage trying to make those kinds of distinctions during remote teaching and learning. I completely understand the reason for plagiarism detecting and prosecution on exams and quizzes. Those are assessment activities, not learning activities.

We should evaluate the students’ programs and give them feedback on them. Feedback improves learning. It shouldn’t be about punishing students who struggle with or even fail at the programs — programming should be part of a learning process.

We can assess learning about programming without having students program

One of our biggest myths in computer science is that the only way to test students’ knowledge of programming is by having them program. Allison Elliott Tew showed that her FCS1 correlated highly with the final exam scores of the students from four courses at two universities who were part of her study (see post here, with diagram of this scatterplot). Her test (all multiple choice) was predicted the grade of the semester’s worth of programming assignments, quizzes, and tests.

Over the years, I’ve attended several AP CS presentations from psyshometricians from ETS. Every time, they show us that they don’t need students to program on the AP CS exams. They can completely predict performance on the programming questions from the multiple choice questions. We can measure the knowledge and skill of programming without having students program.

Of course, it’s easier to tell the students to program, as a way of testing their programming knowledge. However, it’s not an effective measurement instrument (understanding and coding ability are not equivalent), it’s inefficient (takes more time than a test), and it creates stress and cognitive load on the students. (I recommend the work by Kinnunen and Simon on how intro programming assignments depress students’ self-efficacy.) We can and should build better assessments. For example, we could use Parsons problems which are more sensitive measures of understanding about programming than writing programs (see blog post). We want students to program, and most of our students want to program. Our focus should be on improving programming as a learning activity, not as a form of assessment.

Now more than ever, encourage collaboration

Here’s the big ask, Stop prosecuting students for academic misconduct if you detect plagiarism on programming assignments. My argument is just like the policing argument — we should be less worried about catching those who will exploit the opportunity to get unearned points, and more worried about discouraging students from collaboration that will help them learn. We already have inequality in our classrooms. During the pandemic, the gap between the most and less prepared students will likely grow. We have to take specific actions to close that gap and always in favor of the less-prepared students.

Notice that I did not say “stop trying to detect plagiarism.” We should use tools like MOSS to look for potential cheating. But let’s use any detection of plagiarism as an opportunity to learn, and maybe, as a cry for help.

Why do students cheat on programming assignments? There’s a body of literature on that question, but let me jump to the critical insight for this moment in time: All those reasons will be worse this year.

  • When we ask students to program, we are saying, “I have shown you all that you need to be able to complete this program. I now want you to demonstrate that you can.” Are we sure about that first part? We’re going to be doing everything online. We might miss covering concepts that we might normally teach, maybe in side conversations. How would we know if we got it wrong this next year?
  • One of the most powerful enablers for cheating is that students feel anonymous. If students feel that nobody knows them or notices them, then they might as well cheat. Students are going to feel even more anonymous in remote teaching.
  • Finally, at both higher education institutions where I’ve taught, the policy term for cheating is “illicit collaboration.” Especially now in a pandemic with remote teaching, we want students to collaborate. The evidence on pair programming and buddy programming is terrific — it helps with learning, motivation, and persistence in CS. But where’s the line between allowed and illicit collaboration when it’s all over Zoom? I’m worried about students not collaborating because they fear that they’ll cross that line. I have talked to students who won’t collaborate because they fear accidentally doing something disallowed. It will be even harder for students to see that line in a pandemic.

Some students cheat because they think that they have to. “If I don’t cheat and everyone else does, I’m at a disadvantage.” That’s only true if student grades are comparative. That’s why Proposal #2 is a critical step for Proposal #3 — stop pre-allocating, curving, or rationing grades. Use grades to reward learning, not “rising above your peers.”

I worry about us encouraging cheating. The pressures that Feldman identifies as exacerbating cheating will be even greater in all-online learning:

For example, we lament our students’ rampant cheating and copying of homework. Yet when we take a no-excuses approach to late work in the name of preparing students for real-world skills and subtract points or even refuse to accept the work, we incentivize students to complete work on time by hook or by crook and disincentivize real learning. Some common grading practices encourage the very behaviors we want to stop.

Feldman, Joe. Grading for Equity (p. xxii). SAGE Publications. Kindle Edition.

If you detect plagiarism, contact the student. Tell them what you found. Ask them what happened. Ask how they’re doing. Are they getting lost in the class? Use this as an opportunity to explain what illicit collaboration is. Use this as an opportunity to figure out how you’re teaching and what’s going on in the lives of your students. This will be most effective for your first-generation students and your students who are in a minority group. They would likely feel alone, isolated, and invisible even in the in-person class. It’s going to be worse in remote teaching. They are less likely to reach out for help in office hours. Let them know that you’re there and that you care.

Last year, I was in charge of “cheat finding” for a large (over 750 students) introductory programming course. In the end, we filed academic misconduct accusations for about 10% of the class (not all of whom were found guilty by the Honor Council). It was a laborious, time-consuming task — gathering evidence, discussing with the instructional team, writing up the cases, etc. We should have spent that time talking to those students. We would have learned more. They would have learned more. It would have been a better experience for everyone.

Let’s change CS teaching from being about policing over plagiarism, to being about student health, welfare, and development.


* This will be last post for awhile. I’m taking a hiatus from blogging. This series on CS teaching to reduce inequity is my “going out with a bang.”

July 30, 2020 at 7:00 am 7 comments

Managing CS major enrollment boom with a lottery: “A lottery, by definition, is fair.”

I am excited to see that the University of California, San Diego is now managing their over-enrollment in the computer science major with a lottery — see the article here.

Instead of enrolling students holistically or based on GPA, the department selects at random — assuming they exceed the 3.3 CSE GPA threshold. With the lottery system, all students are equally considered despite differences in their experience, drive, and ability.

When asked about the implications of the new system — and possible disadvantage to high-performing students — CSE Chair Dean Tullsen explained, “a lottery, by definition, is fair.”

“I think there’s this false assumption that the students who work harder are the ones who are getting the 4.0s, that hard work directly translates to a higher grade. [The lottery system will] admit a lot of hard-working students who weren’t getting in before,” CSE Vice-Chair for Undergraduate Education Christine Alvarado added.

This is a much more fair system than simply allowing in the top GPA students. It probably doesn’t make Tech companies happier, but it’s not clear that it makes them less happy. They will still get lots of potential employees who are above the bar. Those employees will likely be more diverse than the graduates being produced from CS programs today. The students getting the top grades in the early classes are typically those with more opportunity to learn CS, more wealth, and more privilege. A lottery says that anyone who is prepared for the courses can take them.

June 22, 2020 at 7:00 am 22 comments

Becoming anti-racist: Learning about race in CS Education

I don’t usually invite external review on my blog posts for CACM, but I did this month because it’s such an important topic and I know too little about it — “CS Teachers, It’s (Past) Time To Learn About Race” (see link here). Many thanks to Melissa Perez, Carl Haynes, Leigh Ann DeLyser, Betsy DiSalvo, Leo Porter, Chad Jenkins, Wes Weimer, Barbara Ericson, Matthew Guzdial, Katie Guzdial, and Manuel Perez Quinones.

We have to change CS Education. We do not talk enough about BIPOC (Black, Indigenous, and People of Color) students and faculty in CS education. We have to reflect that Black Lives Matter in our teaching practice. We have to become explicitly anti-racist (a term I just learned this last week, see the book link here) — actively seeking to address historic and systemic inequities (see piece at CNN too).

One of the reviewer’s comments was that, by offering some small suggestions (like changing how we grade), I might dissuade people from bigger changes. It’s a valid concern. I’m hoping that people will take me at my word: I’m just learning here, and I hope that you will educate me (and each other) by sharing other ideas and resources. Please do share more ideas in the comments to this post.

Here are a few more that have come my way since that post that I wanted to share:

  • Ron Eglash has written up a terrific list of strategies for address issues of racism in technology — see link here.
  • Melissa Perez, a PhD student working with Barb Ericson, pointed out that it’s not enough to bring more people into CS education if we don’t change what we’re doing in CS. For example, we have to consider the problem of using biased training data for machine learning training. She recommends this article for considering the ethics of what we do in CS, besides how we teach CS. We need to integrate ethics across CS education.
  • Carl Haynes, also a PhD student working with Barb, recommends this book on intersectionality (see link here).
  • Manuel Perez Quinones recommends this Best Paper awardee from CHI 2020 on “Critical Race Theory for HCI” (see link here).
  • Kamau Bobb gave a talk at CornellTech in January “Unpacking Equity: To Code + Beyond” which is available on YouTube here. (Thanks to Leigh Ann DeLyser and Dianne Levitt for this.)
  • Patricia Garcia, who does terrific work on helping underserved students author their computational identities, recommends this video on Black Lives Matter myths debunked.
  • The University of Michigan’s School of Information has been having an amazing online discussion about how to make their education anti-racist. A book that stood out on the resources shared there was Stamped from the Beginning: The definitive history of racist ideas in America by Ibram Kendi (Amazon link here).
  • I had my children read the CACM blog post, and they gave me valuable comments on it. My daughter, Katie, a science teacher in Detroit Public Schools suggested these three books: The Color of Law: A forgotten history of how our government segregated America by Richard Rothstein (link), We Want to Do More Than Survive: Abolitionist Teaching and the Pursuit of Educational Freedom by Bettina Love (Amazon link), and Why Are All the Black Kids Sitting Together in the Cafeteria? by Beverly Daniel Tatum (Target link).

The issues of race, culture, and members of underserved groups are particularly critical for us to consider as we move into the 2020-2021 academic year during a worldwide pandemic. As we move classes on-line, we are putting at a greater disadvantage underserved populations. We have to be sensitive and thoughtful that our response to pandemic doesn’t exacerbate our existing structural inequities. Let’s worry less about cheating, and more about

  • how to help students taking our classes remotely who don’t have laptops, or who have to share a single laptop with a family, or who don’t have broadband Internet access;
  • how to help students who can’t come to class because they would be put at risk;
  • how to help students who have hearing disabilities and won’t be able to read lips if a teacher is wearing a mask (thanks to Bonnie MacKellar for pointing out that concern).

We have privilege and resources, and we should use them to address inequities.

TL;DR: I know too little about race, and I have not considered the historic and systemic inequities in CS education when I make my daily teaching decisions. I haven’t read all of the above, but I’m working on it daily. Please do share valuable resources you have found in the comments. Let’s learn about race in CS education and make change to improve learning for everyone.

June 8, 2020 at 7:00 am 13 comments

Goals for CS Education include Getting Students In the Door and Supporting Alternative Endpoints

ACM Inroads has published an essay by Scott Portnoff “A New Pedagogy to Address the Unacknowledged Failure of American Secondary CS Education” (see link here). The Inroads editors made a mistake in labeling this an “article.” It’s an opinion or editorial (op-ed) piece. Portnoff presents a single perspective with little support for his sometimes derogatory claims. I have signed a letter to the editors making this argument.

Portnoff is disparaging towards a group of scholars that I admire and learn from: Joanna Goode, Jane Margolis, and Gail Chapman. He makes comments about them like “had CSEA educators been familiar with both CS education and the literature.” Obviously, they are familiar with the research literature. They are leading scholars in the field. Portnoff chides the CSEA educators for not knowing about the “Novice Programmer Failure problem” — which is a term that I believe he invented. It does not appear in the research literature that I can find.

In this blog, I want to try to get past his bluster and aggressive rhetoric. Let’s consider his argument seriously.

In the first part, he suggests that current approaches to secondary school CS education in the United States are failing. His measure of success is success rates on the Advanced Placement Computer Science Principles exam. He also talks about going on to succeed in other CS courses and about succeeding at industry internships, but he only offers data about AP CSP.

He sees the reason for the failure of US CS education in high school is that we have de-emphasized programming. He sees programming as being critical to success in the AP exams, in future CS classes, and in industry jobs. Without an emphasis on programming, we will likely continue to see low pass rates on the AP CS Principles exam among female and under-represented minority students.

In the second part, Portnoff lays out his vision for a curriculum that would address these failings and prepare students for success. He talks about using tools like CodingBat (see link here) so that students get enough practice to develop proficiency. He wants a return to a focus on programming.

What Portnoff misses that there is not consensus around a single point of failure or a set of goals about CS Education. In general, I agree with his approach for what he’s trying to do. I value the work of the CSEA educators because the problems that they’re addressing are harder ones that need more attention.

The biggest problem in US high school CS education is that almost nobody takes it. Less than 5% of US high school students attend any CS classes (see this blog post for numbers), and the students we currently have are overwhelmingly male, white/Asian, and from wealthier schools. Of course, we want students to succeed at the Advanced Placement exams, at further CS courses, and at industry jobs. But if we can’t get students in the door, the rest of that barely matters. It’s not hard to create high-quality education only for the most prepared students. Getting diverse students in the door is a different problem than preparing students for later success.

CSEA knows more about serving students in under-served communities than I do. They know more about how to frame CS in such a way that principals will accept it and teachers will teach it. That’s a critical need. We need more of that, and we probably need a wide range of approaches that achieve those goals.

A focus on programming is critical for later success in the areas that Portnoff describes. The latest research supporting that argument comes from Joanna Goode (as I described in this blog post), one of the educators Portnoff critiques. Joanna was co-author on a paper showing that AP CS A success is more likely to predict continuation in CS than AP CSP success. I’m also swayed by the Weston et al. article showing that learning to program led to greater retention among female students in the NCWIT Aspirations awards programs (see link here).

I also agree with Portnoff that learning to program requires getting enough practice to achieve some level of automaticity. CodingBat is one good way to achieve that. But that takes a lot of motivation to keep practicing that long and hard. We achieve reading literacy because there are so many cultural incentives to read. What will it take to achieve broad-based programming literacy, and not just among the most privileged? Portnoff tells us that his experience suggests that his approach will work. I’m not convinced — I think it might work with the most motivated students. He teaches in the same school district where the ExploringCS class was born. But Portnoff teaches in one of LAUSD’s premier magnet schools, which may mean that he is seeing a different set of students.

An important goal for CS Education is to get students in the door. I’m not sure that Portnoff agrees with that goal, but I think that many involved in CS education would. There is less consensus about the desired outcomes from CS education. I don’t think that CSEA has the same definition of success that Portnoff does. They care about getting diverse students to have their first experience with computer science. They care about students developing an interest, even an affinity for computing. They care more about creating a technically-informed citizenry than producing more software developers. Portnoff doesn’t speak to whether CSEA is achieving their desired outcomes. He only compares them to his goals which are about continuing on in CS.

There is a tension between preparing students for more CS (e.g., success in advanced classes and in jobs) and engaging and recruiting students. In a National Academy study group I’m working in, we talk about the tension between professional authenticity (being true to the industry) and personal authenticity (being personally motivating). The fact that so few students enroll in CS, even when it’s available in their school, is evidence that our current approaches aren’t attractive. They are not personally authentic. We need to make progress on both fronts, but considering how over-full undergraduate CS classes are today, figuring out the recruitment problem is the greater challenge to giving everyone equitable access to CS education.

I just learned about a new paper in Constructionism 2020 from David Weintrop, Nathan Holbert, and Mike Tissenbaum (see link here) that makes this point well, better than I can here. “Considering Alternative Endpoints: An Exploration in the Space of Computing Educations” suggests that we need to think about multiple goals for computing education, and we too often focus just on the software development role:

While many national efforts tend to deploy rhetoric elevating economic concerns alongside statements about creativity and human flourishing, the programs, software, curricula, and infrastructure being designed and implemented focus heavily on providing learners with the skills, practices, and mindset of the professional software developer. We contend that computing for all efforts must take the “for all” seriously and recognize that preparing every learner for a career as a software developer is neither realistic nor desirable. Instead, those working towards the goal of universal computing education should begin to consider alternative endpoints for learners after completing computing curricula that better reflect the plurality of ways the computing is impacting their current lives and their futures.

June 1, 2020 at 7:00 am 17 comments

Data science as a path to integrate computing into K-12 schools and achieve CS for All

My colleague Betsy DiSalvo is part of the team that just released Beats Empire, an educational game for assessing what students understand about middle school computer science and data science https://info.beatsempire.org The game was designed by researchers from Teachers College, Columbia University; Georgia Tech; University of Wisconsin, Madison; SRI International; Digital Promise; and Filament Games in concert with the NYC Dept. of Education. Beats Empire is totally free; it has already won game design awards, and it is currently in use by thousands of students. Jeremy Roschelle was a consultant on the game and he just wrote a CACM Blog post about the reasoning behind the game (see link here).

Beats Empire is an example of an important development in the effort to help more students get the opportunity to participate in computing education. Few students are taking CS classes, even when they’re offered — less than 5% in every state for whom I’ve seen data (see blog post here). If we want students to see and use computing, we’ll need to put them in other classes. Data science fits in well with other classes, especially social studies classes. Bootstrap: Data Science (see link here) is another example of a computing-rich data science curriculum that could fit into a social studies class.

Social studies is where we can reach the more diverse student populations who are not in our CS classes. I’ve written here about my work developing data visualization tools for history classes. For a recent NSF proposal, I looked up the exam participation in the two Advanced Placement exams in computer science (CS Principles and CS A) vs the two AP exams in history (US history and World history). AP CS Principles was 32% female, and AP CS A was 24% female in 2019. In contrast, AP US History was 55% female and AP World History was 56% female. Five times as many Black students took the AP US History exam as took the AP CS Principles exam. Fourteen times as many Hispanic students took the AP US History exam as took the AP CS Principles exam.

Data science may be key to providing CS for All in schools.

April 27, 2020 at 7:00 am Leave a comment

Checking our hubris with checklists: Learning a lesson from the XO Laptop

My Blog@CACM blog post for February was on Morgan Ames’ book The Charisma Machine (see post here). The book is well-written, and I do recommend it. In the post, I say that the OLPC opposition to HCI design practices is one of the themes in her book that I found most interesting:

It takes humility to design software that humans will use successfully. The human-computer interaction (HCI) community has developed a rich set of methods for figuring out what users need and might use, and for evaluating the potential of a new interface. To use these methods requires us to recognize our limitations — that we are unlikely to get the design right the first time and that our users know things that we don’t.

How do we get developers to have that humility? There are a lot of rewards for hubris. Making big promises that you probably can’t keep is one way to get grant and VC funding.

I just finished Atul Gawande’s The Checklist Manifesto (which I already blogged about here, before I even read it). It’s a short book which I highly recommend. I hadn’t realized before how much Gawande’s story overlaps with the OLPC story — or rather, how much it doesn’t but should have. Gawande is a surgeon. His entry into the idea of checklists is because of the success of checklists in reducing costs and improving patient success rates in medicine. There, too, they had to deal with physician hubris. They saw the checklists as busywork. As one physician said in opposition to checklists, “Forget the paperwork. Take care of the patient.”

The OLPC project couldn’t be bothered with user studies or pilot studies. They wanted to airdrop tablets into Ethiopia. They were so confident that they were going to (in Negroponte’s words) “eliminate poverty, create peace, and work on the environment.” They couldn’t be bothered with the details. They were taking care of the patient!

Gawande points out that checklists aren’t needed because physicians are dumb, but because they know SO much. We’re humans and not Econs. Our attention gets drawn this way or that. We forget about or skip a detail. Our knowledge and systems are so complex. Checklists help us to manage all the details.

We need checklists to check our hubris. We have confidence that we can build technology that changes users lives. The reality is that the odds are slim that we can have impact without going through an HCI design process, e.g., know the user, test often, and iterate. The OLPC Project could have used an HCI checklist.

The second to last chapter in Gawande’s Checklist Manifesto captures the idea well that we need checklists:

We are all plagued by failures—by missed subtleties, overlooked knowledge, and outright errors. For the most part, we have imagined that little can be done beyond working harder and harder to catch the problems and clean up after them. We are not in the habit of thinking the way the army pilots did as they looked upon their shiny new Model 299 bomber—a machine so complex no one was sure human beings could fly it. They too could have decided just to “try harder” or to dismiss a crash as the failings of a “weak” pilot. Instead they chose to accept their fallibilities. They recognized the simplicity and power of using a checklist. And so can we. Indeed, against the complexity of the world, we must. There is no other choice. When we look closely, we recognize the same balls being dropped over and over, even by those of great ability and determination. We know the patterns. We see the costs. It’s time to try something else. Try a checklist.

April 13, 2020 at 7:00 am 14 comments

How I’m lecturing during emergency remote teaching

Alfred Thompson (whom most of my readers already know) has a recent blog post requesting: Please blog about your emergency remote teaching (see post here). Alfred is right. We ought to be talking about what we’re doing and sharing our practices, so we get better at it. Reflecting and sharing our teaching practices is a terrific way to improve CS teaching, which Josh Tenenberg and Sally Fincher told us about in their Disciplinary Commons

My CACM Blog Post this month is on our contingency plan that we created to give students an “out” in case they become ill or just can’t continue with the class — see post here. I encourage all my readers who are CS teachers to create such a contingency plan and make it explicit to your students.

I am writing to tell you what I’m doing in my lectures with my co-instructor Sai R. Gouravajhala. I can’t argue that this is a “best” practice. This stuff is hard. Eugene Wallingford has been blogging about his emergency remote teaching practice (see post here). The Chronicle of Higher Education recently ran an article about how difficult it is to teach via online video like Zoom or BlueJeans (see article here). We’re all being forced into this situation with little preparation. We just deal with it based on our goals for our teaching practice.

For me, keeping peer instruction was my top priority. I use the recommended peer instruction (PI) protocol from Eric Mazur’s group at Harvard, as was taught to me by Beth Simon, Leo Porter, and Cynthia Lee (see http://peerinstruction4cs.com/): I pose a question for everybody, then I encourage class discussion, then I pose the question again and ask for consensus answers. I use participation in that second question (typically gathered via app or clicker device) towards a participation grade in the class — not correct/incorrect, just participating. 

My plan was to do all of this in a synchronous lecture with Google Forms, based on a great recommendation from Chinmay Kulkarni. I would have a Google Form that everyone answered, then I’d encourage discussion. Students are working on team projects, and we have a campus license for Microsoft Teams, so I encouraged students to set that up before lecture and discuss with their teams. On a second Google Form with the same question, I also collect their email addresses. I wrote a script to give them participation credit if I get their email address at least once during the class PI questions.

Then the day before my first lecture, I was convinced on Twitter by David Feldon and Justin Reich that I should provide an asynchronous option (see thread here). I know that I have students who are back home overseas and are not in my timezone. They need to be able to watch the video at another time. I now know that I have students with little Internet access. So, I do all the same things, but I record the lecture and I leave the Google Forms open for 24 hours after the last class. The links to the Google Forms are in the posted slides and in the recorded lectures. To fill out the PI questions for participation, they would have to at least look at that the lecture.

I’m so glad that I did. As I tweeted, I had 188 responses to the PI questions after the lectures ended. 24 hours later, I had 233 responses. About 20% of my students didn’t get the synchronous lecture, but still got some opportunity to learn through the asynchronous component. The numbers have been similar for every lecture since that first.

I lecture, but typically only for 10-15 minutes between questions. I have 4-5 questions in an 85 minute lecture. The questions take longer now. I can’t just move the lecture along when most of the students answer, as I could with clickers. I typically give the 130+ students 90 seconds to get the link entered and answer the question. 

I have wondered if I should just go to a fully asynchronous lecture, so I asked my students via a PI question. 85% say that they want to see the lecturer in the video. They like that I can respond to chat and to answers in Google Forms. (I appreciate how Google Forms lets me see a summary of answers in real-time, so that I can respond to answers.) I’d love to have a real, synchronous give-and-take discussion, but my class is just too big. I typically get 130+ students synchronously participating in a lecture. It’s hard to have that many students participate in the chat, let alone see video streams for all of them.

We’re down to the last week of lecture, then we’ll have presentations of their final projects. They will prepare videos of their presentations, and receive peer comments. Each student has been assigned four teams to provide peer feedback on. Each team has a Google Doc to collect feedback on their project.

So, that’s my practice. In the comments, I’d welcome advice on improving the practice (though I do hope not to have to do this again anytime soon!), and your description of your practice. Let’s share.

April 6, 2020 at 7:00 am 5 comments

What I learned from taking a MOOC: Live Object Programming in Pharo

I wrote this post a month ago, before COVID-19 changed how a great many of us teach in higher education. It feels so long ago now. I thought about writing a different post for this week, one about how I’m managing my large (260+) Senior-level User Interface Development class with projects. But I realize — I have a ton of those kinds of posts in my to-read queue now. We’re all being bombarded with advice on how to take our classes on-line. I can’t read it all. I’m sure that you can’t either.

So instead, I decided to move this post up in the queue. It’s about taking the students’ perspective. I worry about what’s going to happen to students as we all move into on-line modes. I wrote my Blog@CACM post this week about how the lowest-performing students are the ones who will be most hurt by the move to on-line — you can find that post here. This is a related story: What I learned about MOOCs by taking a MOOC.

I received in February my certificate of success for the MOOC I took on Pharo. I have not, in general, been a big fan of MOOCs (among many other posts, here’s one I wrote in 2018 about MOOCs and ethics). This MOOC was perfect for what I needed and wanted. But I’m still not generally a MOOC fan.

I’m a long-time Smalltalk programmer and have written or edited a couple of books about Squeak. I’m building software again at the University of Michigan (see the task-specific programming environments I’ve posted about). Pharo is a terrific, modern Smalltalk that I’d like to use.

A MOOC on Pharo matched what I needed. I fit the demographics of a student who succeeds at a MOOC — I already know a lot about the material, and I’m looking for specific pieces of information. Pharo has a test-driven development model that is remarkable. You define your classes, then start writing tests, and then you execute them. You can then build your system from the Debugger! You get prompts like, “You’re referencing the instance variable window here, but it doesn’t exist. Shall I create it for you?” I’ve never programmed like that before, and it was great to learn all the support Pharo has for that style of programming.

Yes, it was in French. They provide versions of the videos dubbed in English, and the French version can display English captions. I preferred the latter. I had French in undergraduate, which means that I didn’t understand everything, but I understood occasional words which was enough to be able to synchronize between the video and the captions to figure out what was going on.

My favorite part of the MOOC was just watching the videos of Stéphane Ducasse programming. He’s a very expert Smalltalk programmer. It’s great seeing how he works and hearing him think aloud while he’s programming. But he’s very, very expert — there were things he did that I had to re-watch in slow motion to figure out, “Okay, how did he do that?”

The MOOC was better than just a set of videos. The exercises made sure I actually tried to think about what the videos were saying. But it’s clear that the exercises were not developed by assessment experts. There were lots of fill in the blanks like “Name the class that does X.” Who cares? I can always look that up. It’s a problem that the exercises were developed by Smalltalk experts. Some of the problems were of a form that would be simple, if you knew the right tool or the right option (e.g., “Which of the below is not a message that instances of the class Y understand?”), but I often couldn’t remember or find the right tool. Tools can fall into the experts’ blind spot. Good assessments should scaffold me in figuring out the answer (e.g., worked examples or subgoal labels).

I ran into one of the problems that MOOCs suffer — they’re really expensive to make and update. The Pharo MOOC was written for Pharo 6.0. Pharo 8.0 was just released. Not all the packages in the MOOC still work in 8.0, or there are updated versions that aren’t exactly the same as in the videos. There were things in the MOOC that I couldn’t do in modern Pharo. It’s hard and costly to keep a MOOC updated over time.

My opinions about MOOCs haven’t changed. They’re a great way for experienced people to get a bit more knowledge. That’s where the Georgia Tech OMSCS works. But I still they that they are a terrible way to help people who need initial knowledge, and they don’t help to broaden participation in computing.

March 23, 2020 at 7:00 am Leave a comment

How do we test the cultural assumptions of our assessments?

I’m teaching a course on user interface software development for about 260 students this semester. We just had a Midterm where I felt I bobbled one of the assessment questions because I made cultural assumptions. I’m wondering how I could have avoided that.

I’m a big fan of multiple choice, fill-in-the-blank, and Parsons problems on my assessments. I use my Parson problem generator a lot (see link here). For example, on this one, students had to arrange the scrambled parts of an HTML file in order to achieve a given DOM tree, and there were two programs in JavaScript (using constructors and prototypes) that they had to unscramble.

I typically ask some definitional questions about user interfaces at the start, about ideas like signifiers, affordances, learned associations, and metaphors. Like Dan Garcia (see his CS-Ed Podcast), I believe in starting out the exam with some easy things, to buoy confidence. They’re typically only worth a couple points, and I try to make the distractors fun. Here’s an example:

Since we watched in lecture a nice video starring Don Norman explaining “Norman doors,” I was pretty sure that anyone who actually attended lecture that day would know that the answer was the first one in the list. Still, maybe a half-dozen students chose the second item.

Here’s the one that bothered me much more.

I meant for the answer to be the first item on the list. In fact, almost the exact words were on the midterm exam review, so that students who studied the review guide would know immediately what we wanted. (I do know that working memory doesn’t actually store more for experts — I made a simplification to make the definition easier to keep in mind.)

Perhaps a dozen student chose the second item: “Familiarity breeds contempt. Experts contempt for their user interfaces allows them to use them without a sense of cognitive overload.” I had several students ask me during the exam, “What’s contempt?” I realized that many of my students didn’t know the word or the famous phrase (dates back to Chaucer).

Then one student actually wrote on his exam, “I’m assuming that contempt means learned contentment.” If you make that assumption, the item doesn’t sound ridiculous: “Familiarity breeds learned contentment. Experts learned contentment for their user interfaces allows them to use them without a sense of cognitive overload.”

I had accidentally created an assessment that expected a particular cultural context. The midterm was developed over several weeks, and reviewed by my co-instructor, graduate student instructor, five undergraduate assistants, and three undergraduate graders. We’re a pretty diverse bunch. We had found and fixed perhaps a dozen errors in the exam during the development period. We’d never noted this problem.

I’m not sure how I could have avoided this mistake. How does one remain aware of one’s own cultural assumptions? I’m thinking of the McLuhan quote: “I don’t know who discovered water, but it wasn’t a fish.” I feel bad for the students who got this problem wrong because they didn’t know the quote or the meaning of the word “contempt.” What do you think? How might I have discovered the cultural assumptions in my assessment?

March 16, 2020 at 1:57 pm 15 comments

Ebooks, Handbooks, Strong Themes, and Undergraduate Research: SIGCSE 2020 Preview

A few items on things that we’re doing at SIGCSE 2020. Yes, SIGCSE 2020 is still have a face-to-face meeting. Attendance looks to be down by at least 30% because of coronavirus fears.

Barbara Ericson (and Brad Miller, who won’t be there) are presenting a paper on their amazingly successful Runestone open-source platform for publishing ebooks: Runestone: A Platform for Free, On-line, and Interactive Ebooks on Sat Mar 14, 2020 11:10 AM – 11:35 AM in D135. They are also hosting a workshop to help others to develop with Runestone: Workshop #401: Using and Customizing Ebooks for Computing Courses with Runestone Interactive on Sat Mar 14, 2020 3:30 PM – 6:30 PM in C120.

I’m part of the massive special session on Thursday 1:45 PM – 3:00 PM in B113 that Colleen Lewis is organizing: Session 2H: The Cambridge Handbook of Computing Education Research Summarized in 75 minutes. Colleen, who must have done graduate work in organizational management (or perhaps cat herding), has organized 25 authors (!) to present the entire Handbook in a single session. Even if I wasn’t one of the presenters, I’d go just to see if we can all pull it off! It’s going to be kind of like watching NASCAR — you’re on the edge of your seat as everyone tries to avoid crashing into one another.

Bravo to Bob Sloan who got this panel accepted this year: Session 6K: CS + X Meets CS 1: Strongly Themed Intro Courses on Fri Mar 13, 2020 3:45 PM – 5:00 PM in Portland Ball Room 255. The panelists are teachers and developers who have put together contextualized introductions to computing, like Media Computation. The panelists have done interesting classes, and I’m eager to hear what they have to say about them.

I am collaborating with Sindhu Kutty on her interesting summer reading group to engage undergraduates in CS research. (Read as: we meet occasionally to work on assessment, but Sindhu is really doing all the work.) The evidence suggests that she’s able to give undergraduates a better understanding of CS graduate research, at a larger scale (e.g. a couple dozen students to one faculty member) than typical undergraduate research programs. It seems like it might feel a bit safer and easier to try for female students. She was going to present a poster at RESPECT on Wednesday Undergraduate Student Research With Low Faculty Cost, but it’s now going to be virtual. I’m not sure how it’s going to work right now.

March 11, 2020 at 7:00 am 10 comments

Defining CS Ed out of existence: Have we made CS too hard to learn and teach?

It was this quote in a tweet from Miles Berry that really made me sit up and take notice of the latest news about the Computing at School initiative:

“If computing increasingly means CS, it looks likely that hundreds of thousands of students, particularly girls and poorer students, will be disenfranchised from a digital education over the next few years.”

He was quoting an article from the New Statesman which can be found here. It describes the history of the rise of the CS curriculum in England. The key paragraph for me is:

The new curriculum was failing. While a tougher course had been introduced, few students were taking it and even fewer teachers could teach it. In many cases, even those who could felt uncomfortable doing so.

The government read the reports and has decided to respond. There’s now an enormous investment in England in trying to train new teachers. The question is whether that’s the right investment.

Meanwhile, in Scotland, the headline of this May 2019 article is “Teachers and students in decline: the computing ‘crisis’ in Scotland’s schools.”

Experts are urging the Scottish Government to take radical steps to boost computing science education to prevent the subject from being squeezed out of schools.

The teaching of computing in schools is in “crisis”, practitioners have told The Ferret, with classes shrinking and teachers in short supply. The latest official data shows that the number of children studying the subject declined last year, while the number of teachers has fallen over the last decade.

Despite a national focus on delivering science and technology education and economic development, schools are finding it increasingly difficult to teach computing science to young people, critics say.

Let’s explicitly consider the questions raised in these two articles. Have we defined CS education in such a way that it’s too hard to teach? That it’s not interesting to learn? Maybe that it’s too hard to learn?

I’ve been writing in the last few months about the surprisingly low uptake of CS education in the United States (for example, in this CACM Blog post). No more than 5% of high school students in any US state are getting any CS classes, from the data available. There is value in setting high standards for CS education (as Alan Kay has been arguing), but that’s an argument for the end goal. Where do we start with CS education? How quickly can and will students learn CS education? What does it mean for something to be too hard to teach or too hard to learn?

Overall, US is following a similar strategy as in England and Scotland for computing in K-12: standalone CS classes, heavy emphasis on in-service teacher development, and counting the number of students in CS classes and the number of teachers leading those classes. There is integrated CS in the US, but as far as I know, no state is tracking those numbers. Public policy tends to focus on things that can be measured. Most of the argument against integration says that too little CS is covered in integrated forms. 95% of US students getting no CS at all is even less coverage than CS in integrated forms.

Let’s consider two hypotheses:

Hypothesis #1: We know how to teach computer science in such a way that all students can learn what they need to be technically-literate citizens, or even to develop the prerequisite knowledge they need to be software professionals. We have not yet achieved this goal because we do not have enough teachers to implement the curriculum. Larger investments in teacher development (perhaps including stipends or better pay to CS teachers) would allow us to scale CS Ed to reach everyone.

Hypothesis #2: We have defined computer science education in a way that is too hard to teach (so too few teachers are unwilling to teach it), and that is too hard to learn (which includes not being motivating enough to recruit students or engage student interest in order to achieve learning).

Given the evidence we have in the US, England, and Scotland, which hypothesis is better supported? You may have a Hypothesis #3 or #4 which is also well-supported by the evidence — I am very interested in hearing it.

In general, we tend to take the “insider view” of CS Ed, as Kahneman warned about (see excerpt here). If you step outside CS Ed, are we making progress along a trajectory that leads to CS education for all? And how long is that trajectory? If you were an Education faculty member and learned that CS had less than 5% of US high school students enrolled, wouldn’t it be reasonable to consider it a fad and likely to pass?

As I wrote in my blog post about what I got wrong in the last decade, I no longer think that CS for All is a matter of access. We have to figure out how to improve participation. I’m in support of Hypothesis #2. We need to re-think what and how we teach CS education. Because of my work these days, I suspect that we made a mistake at the design level. I was involved in the early days of the AP CS Principles (AP CSP) process. Most of the AP CSP curricula I’m aware of were developed by and tested with some of the best CS teachers in the US. That design and development process doesn’t promise a curriculum that many teachers can teach and that most students will learn from.

I just got back from a three day visit in Norway, where they are about to roll-out an integration of CS activities (explicitly programming) into mathematics, science, music, and arts & crafts classes. (See workshop about this topic here.). Maybe that would result in more students learning some computer science. Did US, England, and Scotland make a mistake by emphasizing standalone CS classes over integration?

March 9, 2020 at 7:41 am 22 comments

Final (likely) version of JES released, 18 years after first release

JES 6.0 is now available at https://github.com/gatech-csl/jes/releases/tag/6.0. JES is the Jython Environment for Students — it’s a Python IDE implemented in Java and with support for Media Computation built in. It was a lot of work for a bunch of people. Here are the notes from the release as a summary and acknowledgement for all the effort that brought this version fruition.

This is likely the final version of JES, unless a Jython 3.0 is developed.

This version was brought to completion by Nigel Charleston, based on the beta work of Veronica Day and Audrey Zhang (see discussion at this blog post https://computinged.wordpress.com/2019/07/22/beta-release-of-new-jes-jython-environment-for-students-now-available-media-computation-for-python-ide/). Many thanks to R. Benjamin Shapiro for helping us with many technical questions.

JES 6.0 updates Jython to 2.7beta, uses the latest version of JMusic (from https://jythonmusic.me/), fixes many bugs, will run with Java 8, and creates a new facility to generate pictures from a collection of pixels and sounds from a collection of samples.

The Mac version is a little more complicated to run than usual. You will need to have Java 8 installed to run JES. Thanks to Brian Howard and Michael Stewart for helping to figure this out.

The rest of the Mac version installation instructions can be found at the release page.

JES was originally written by a team of Georgia Tech undergraduates taking Senior Design in Summer 2002. It’s been in use and (sporadic) development for almost 18 years now. The previous version of JES was downloaded over 71K times (see counts here). I would not have predicted in 2002 that JES would still be used in 2020, with little maintenance and no additional funding. Software has to be continually maintained, right? I claim no great genius behind the design. How did it happen that it’s still working and being used?

An even more interesting example is our Squeak-based Wikis (Swikis) which were first developed in 1997. Jeff Rick created the version that we used in classes, and wrote about the process in what I think is the first ACM publication on wikis in 2000. Even after he graduated in 2007, they just kept going. The server http://coweb.cc.gatech.edu/ is still running today — I can find at least one Swiki there dating from 2002. I’ve patched the Swiki software only once or twice since Jeff graduated. Jeff did a great job designing Swiki, but I suspect that even he’d be surprised at how long they’ve run with essentially no maintenance.

What are the characteristics of educational technology that remains viable and usable (i.e., useful and actively used) with very little maintenance for well over a decade? Schools are under-resourced, as I talked about in the Thorndike vs Dewey blog post. It’s great to have educational software that just keeps going without maintenance. Maybe that it’s a certain class of software that works like this. Is it that JES and Swiki do so little, such that they’re really just frameworks on which to hang others’ content? Maybe that’s why they’ve been able to keep going for so long?

Your thoughts would be welcome.

March 2, 2020 at 7:00 am 2 comments

Learning the Craft of CS Education: Recommending the CS-Ed Podcast

I’ve just finished listening to the first three episodes of the new podcast on CS Education from Dr. Kristin Stephens-Martinez (click here for the podcast homepage). If you teach computer science, I highly recommend it to you. It’s not about CS education per se, except in the sense that research often informs the education topics being discussed. Rather, it’s a nuts-and-bolts discussion of issues relevant to the craft of being a CS educator.

Kristin is terrific as the interviewer on the podcast. She plays all of us — teaching CS, looking for tips, trying to get what she can from these experts.

  • The first episode was with David Malan of CS50 at Harvard. It was an in-depth discussion of the tools they’re creating for CS50. I didn’t hear any that I was particularly interested in using, but I did hear about tools that I wanted to recommend to colleagues who teach those topics.
  • Dan Garcia of BJC fame at Berkeley was absolutely delightful. He didn’t talk about Snap! or Beauty and Joy in Computing. Rather, he gave a concrete checklist of how to develop good exams in CS. I’m a fan of checklists, and his were great. I’ll definitely use these tips in the future.
  • Amy Ko of U.Washington talked about her research, but in really concrete, practitioner-oriented terms. The first part was about how to help students debug. She definitely gave me insights on how to help students develop debugging skills. The second part was about how Donald Knuth was really a qualitative researcher — fascinating stuff.

I’m going to show up later in the series. I don’t know remember what I said! I hope that Kristin is kind to me in the post-production phase, because I don’t think I’m typically as grounded and offering concrete advise as these first three were. I’ll find out in the next few weeks.

TL;DR: If you teach CS, go listen to the CS-Ed podcast. You’ll get something useful out of it that’s worth your time.

February 3, 2020 at 7:00 am 1 comment

Thorndike won. Dewey Lost: The Most Important 4 Words about the US Education System

One cannot understand the history of education in the United States during the twentieth century unless one realizes that Edward L. Thorndike won and John Dewey lost.
— Ellen Condliffe Lagemann

I mentioned that “Thorndike won and Dewey lost” on Twitter a couple months ago. I realized that some education researchers didn’t know this story. I first learned about it in Lagemann’s intriguing book, An Elusive Science.

Lagemann explains that Dewey was the pioneer at Chicago and Columbia, and recruited faculty and administrators that supported his perspective. But Thorndike came later and replaced those faculty.

Unlike Dewey, Thorndike favored the separation of philosophy and psychology. Despite considerable disdain for educators and an extremely imperialistic view of psychology, which he thought supreme for studying and controlling human affairs, Thorndike formulated ideas that were more suited to translation into formulas for educational practice. A conservative person whose prose was clear, to the point, humorless, and colorless, Thorndike was about as different from Dewey as two men could be. (p. 56-57)

Five years after Dewey left Chicago, Charles Hubbard Judd took his place. While Judd and Thorndike were rivals, they had similar views about the role and definition of school.

Over the years, Judd also recruited a faculty that was as supportive of his views as the Dewey group had been supportive of the views of their chief. (p. 68)

Although both thought experimentation was necessary in education, Dewey saw the school as the laboratory of education, whereas Judd saw the school as primarily the place for the implementation of real laboratory findings…Whereas Dewey saw teachers and researchers as more alike than different, wanting both to be skilled students of education, Judd believed that the improvement of education required the professionalization of education, which, in turn, necessitated tha teachers and researchers fulfill distinct roles. (69-70)

Audrey Watters has written a great blog post about the tension:

Ed-tech has always been more Thorndike than Dewey because education has been more Thorndike than Dewey. That means more instructivism than constructionism. That means more multiple choice tests than projects. That means more surveillance than justice.

If you do Web searches on “Thorndike won. Dewey lost,” you’ll find many relevant essays and papers. Dewey (wikipedia page) believed in educating the student, meeting them where they were, and helping them to develop in their community through teacher-driven innovations in the classroom. Thorndike (wikipedia page) was about administrative systems: grades, teacher requirements and credentialing, preparing students for vocations, testing (Thorndike is best known in psychology for his work on measurement), and teachers implementing what researchers invent. The US education system favors the latter.

I like David Labaree’s paper “How Dewey Lost: The Victory of David Snedden and Social Efficiency in the Reform of American Education” which summarizes why Thorndike won.

The pedagogically progressive vision of education — child-centered, inquiry based, and personally engaging — is a hothouse flower trying to survive in the stony environment of public education. It won’t thrive unless conditions are ideal, since, among other things, it requires committed, creative, energetic, and highly educated teachers, who are willing and able to construct education to order for students in the classroom; and it requires broad public and fiscal support for education as an investment in students rather than an investment in economic productivity.

But the administrative progressive vision of education — as a prudent investment in a socially efficient future — is a weed. It will grow almost anywhere.

When I look at computing education interventions, I see a lot informed by Dewey. Caring teachers, researchers working in partnership with practitioners (RPPs), and developers want students to engage and learn. That’s great, and as Audrey Watters has suggested, technology may be a way of making Dewey’s vision work in US classrooms today. But there’s likely a reason why Thorndike won.

It wasn’t luck. The US school system is built following Thorndike’s vision because his vision was more in concert with US values. I’m not an expert on how US values have driven the US education system, but I can guess at some of the factors. The US system is driven by the promise of compulsory education for all, a belief in rugged individualism, and the value for a capitalistic society.

  • We have a mission to educate everyone. When there’s a trade-off between increasing quality somewhere versus making sure that we can provide something for everybody, the most common choice is for the something for everybody.
  • We like our image of Americans as settlers/pioneers. No “hothouse flowers.” We’re “weeds” that can rise up to handle adversity. We want our education system to be small, minimalist, and local.
  • Education is expensive. States increase their investments only if (on paper at least) they can offer the same thing to everyone. The top goal in US education is to prepare workers, over a goal to prepare citizens. Our education decisions are dominated by economics.

Few students get access to computing education today (as I described in this blog post). The biggest barrier is that we’re too busy and resource-limited providing all the students the classes they need to meet current school requirements. See the principal in Miranda Parker’s dissertation who chooses to keep choir (which helps many students to get the credits they need to graduate) over CS (which only a few students might take). See the education faculty I talked about in my recent CACM blog, who are far too busy meeting state requirements for mathematics and science teachers to fit in CS which isn’t required to be taught pre-service. CS is something new that only a few students get excited about— that might be something Dewey would like since he values individuals finding their interests, but not Thorndike who values the education as a system for everybody.

The lesson is that if we want to get computing education in front of US students, we need to figure out how to make it work within Thorndike’s system. We have to be efficient. We have to do it with few resources. We have to fit into existing models. Alternatively, we can try to move the US education system into a more Dewey-like model — but we have to realize how big a shift that is. Thorndike won almost 100 years ago. The US education system has a century of ingrained views that align with Thorndike.

I wish I could argue for a more progressive view, but in the end: Thorndike won. Dewey lost.

January 27, 2020 at 7:00 am 4 comments

Older Posts


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

Join 7,995 other followers

Feeds

Recent Posts

Blog Stats

  • 1,801,953 hits
October 2020
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  

CS Teaching Tips