Posts tagged ‘computational thinking’

Teaching Computational Thinking across an Entire University, With Guest Blogger Roland Tormey

During Spring Break, Barbara and I were invited to go to Switzerland.  Sure, when most people go someplace warm for Spring Break, let’s head to the mountains!

Roland Tormey organized a fascinating workshop at EPFL in Lausanne, Switzerland (see workshop page here) to inform a bold and innovative new effort at EPFL. They want to integrate computational thinking across their entire university, from required courses for freshman, to support for graduate students doing Computational X (where X is everything that EPFL does).  The initiative has the highest level of administrative support, with the President and Vice-President of Education for EPFL speaking at the workshop.  The faculty really bought in — the room held 80-some folks, and it was packed most of the day.

Roland got a good videographer who captured both of the keynotes well.  I had the first keynote on “Improving Computing Education with Learning Sciences: Methods for Teaching Computing Across Disciplines.”  I argued that we need different methods to teach computing across the curriculum — we can’t teach CS the same way we teach CS majors as future software developers.  I talk about Media Computation, predictions (and they caught my audio demo with ukulele playing well), subgoal labeling, and Parsons problems.

Shriram Krishnamurthi had the second keynote on “Curriculum Design as an Engineering Problem.”  He talked about the problems of transfer and how Bootstrap works.  I liked how he broke down the problem of transfer — there there are three requirements: Deep structural similarities between the problems, explicit instruction, and a process for performing tasks.  He showed how all other design disciplines have multi-stage processes, use multiple representations in their designs, and look at problems from multiple viewpoints.  Mostly in CS classes, we just code.  I learned about how Bootstrap scaffolds problem-solving, and includes all of those elements.  I recommend the talk.

Barb’s panel on teaching computational thinking wasn’t captured.  She talked about the methods she’s developed for teaching computing, including her great results on Parsons problems.  In a short talk, she gave a lot of pointers to her work and others’ on how to teach CT.

Roland sent me a note with what he took away from the workshop. I thought it was a great list, so with his permission, I’m including it here:

For me, we also had a lot of other valuable take home points from the day:

(1) We need to work on putting Computational thinking (and maybe Math and Physics too) into the context of the students’ own disciplines — at least, though the examples and exercises we choose.

(2) The drive to better develop scientific thinking in disciplines like chemistry and life sciences and the development of CT are entirely consistent, but one shouldn’t eclipse the other. It’s not about replacing existing scientific processes with CT. It’s about augmenting them.

(3) We need to help professors gather data on effective methods of teaching as well as help them become aware of methodologies with demonstrated effectiveness (like the Parsons Problems for example).

(4) The exercises and exercise sessions will be crucial for making the link between CT and disciplines, but this implies giving the doctoral and teaching assistants a clear understanding of the goals and methods of CT. They have to understand what we are trying to achieve.

(5) CT provides an understanding of, a language for, and a toolbox for analysing processes, and these can be applied in a lot of domains. However that is not going to happen unless we explicitly teach CT in ways that promote near and far transfer

(6) We need to make the most of the EPFL initiative by properly evaluating the impact, which implies the need to collect some pre-intervention data now.

April 20, 2018 at 7:00 am 10 comments

The state of the field in pre-college computer science education: Highly recommended Google report

Google has just released a report: Pre-College Computer Science Education: A Survey of the Field (available here).  The report is authored by Paulo Blikstein of Stanford.  The report is innovative, developed with an unusual method.  It’s terrific, and I highly recommend it.

Paulo started out with a pretty detailed survey document about the state of the literature in computer science education. He covered from the 1967 launch of Logo to modern day.  Then he interviewed 14 researchers in the field (I was one). These were detailed interviews, where the interviewees got to review the transcript afterwards.  Paulo integrated ideas and quotes from the interviews into the document.  Here comes the really cool part: he put the whole thing on a Google doc and let everyone comment on it.

When I got the call to review the document, I just skimmed it.  It looked pretty good to me.  But then the debates started, and the fights broke out.  That Google doc had some of the longest threads of comments I’ve ever seen.  After a few weeks, Paulo closed the comments, and then integrated the threads into the document.  So now, it’s not just a serious survey paper, brought up to date with interviews.  It’s also a record of significant debate between over a dozen researchers, where the tensions and open questions were surfaced.

This is the document to read to figure out what should come next in computing education research.  I will recommend it to all of my students.

Of course, it’s not perfect.  The researchers interviewed tended towards the Logo/MIT/constructionist perspective.  The emphasis was on the US, though there were a couple of non-US interviewees.  If someone was to do this again (which I don’t recommend for a few years — it’ll take us awhile just to work on this agenda), I’d recommend including interviews with a wider range of folks:

  • We need to hear more voices from the evidence-based learning perspective, those inspired by Carl Wieman.  I’m thinking about people like Beth Simon, Leo Porter, Cynthia Lee, Christine Alvarado, and Dan Zingaro.
  • There’s no one on this list that I think would label themselves as a cognitive tutors or Learning at Scale researcher.  We need to hear from people like Mehran Sahami and Ken Koedinger.
  • I’m so glad that we have voices from the UK in this document, but if you’re going to go international, you have to include voices from the Nordic (e.g., Michael Caspersen, Jens Bennedsen, Lauri Malmi, Juha Sorva, and probably several from Upcerg, the world’s largest academic CS Ed research group), from Israel (e.g., Moti Ben-Ari, Judith Gal-Ezer, Yifat Kolikant, and Orit Hazzan), and from Australasia (e.g., Katrina Falkner, Ray Lister, Tim Bell).  The reality is that CS Ed Research is far larger outside the US than inside the US. There are more CS Ed researchers with a more diverse range of opinions outside the US.

I’m sure that I’m forgetting important voices, but this is enough to say that this report is a good first effort at bringing in a range of perspectives.  There are other important voices needed, if you really want to understand the state of CS education research at the pre-college level.

As it is, it’s still a fascinating and important report.  I’m biased — my thoughts and words are in there.  There is a range of opinions in there. I don’t agree with everything in there.  Paulo did a good job capturing the tensions around computational thinking, and I’m much more positive about blocks-based programming languages than are other voices in the report.

I highly recommend reading the report.

 

March 5, 2018 at 1:00 pm 3 comments

Advancing Computational Thinking Across K-12 Education, across Many Disciplines – Digital Promise #CSEdWeek

New report on coding, computer science, and computational thinking has just come out from Digital Promise.  I have been critical of some definitions of computational thinking (as I described in my book). I like the way Digital Promise defined them, and particularly how they connect CT to learning in other disciplines.

Advocating for computational thinking throughout the K-12 curriculum does not replace or compete with efforts to expand computer science education: on the contrary, it complements them. Where computer science is not yet offered, integrating computational thinking into existing disciplines can empower educators and students to better understand and participate in a computational world. And schools already teaching coding and computer science will benefit from weaving computational thinking across disciplines in order to enrich and amplify lessons that are beyond the reaches of computer science classes.

We offer a number of recommendations to move this work forward. Among them are advocacy campaigns, curriculum and resource development, professional development for teachers and administrators, and continued research.

Source: Advancing Computational Thinking Across K-12 Education – Digital Promise

December 8, 2017 at 7:00 am Leave a comment

Why should we teach programming (Hint: It’s not to learn problem-solving)

This is a revision of the original post. Several readers pointed out on Twitter that my original post was insensitive. It read like an attack on Brenda, a woman of color, from a senior white guy (me). That was not my intent, and I apologize for that. I am grateful to Joseph P. Wilson who helped me understand how to avoid that impression. I can’t change the post that went out yesterday, but I will be more careful in future blog posts.


At the CS for All Consortium Celebration Tuesday, Brenda Wilkerson gave the closing keynote. The full livestream of the CS for All Summit is available here, and it includes Brenda’s talk. I’m a huge fan of Brenda, and she’s done fabulous work in Chicago. She is a leader in bringing CS to All.

I have not seen Brenda’s talk or any of the livestream. My experience of the Consortium Celebration was through reading the Twitter stream as I found time during the day. Brenda had one slide (which you can see in the tweet linked here) that I disagreed with, and because it’s an important point, I’m going to respond to it here.

It says, “Computer science builds the mental discipline for breaking down problems, and solving them.” There are few studies that test this claim as “computer science,” but there have been lots of studies looking for transfer from teaching programming to general problem-solving skills. Probably the first study investigating this claim is Roy Pea and Midian Kurland’s paper On the cognitive effects of learning computer programming. You can find this claim in a paper by Henry Walker to which I responded in this blog. You can see it in posts all over the Internet, from this blog post to this article from a teacher in England. There is a strong belief out there that learning computer science, and programming called out specifically, leads to new problem-solving and “a new way to think.”

There is simply not evidence in support of these claims. I talk about these in my book, I reference the Palumbo meta-review in this blog post, and NYTimes wrote about it this last spring. Like “learning styles” and “Latin teaches thinking,” this is a persistent myth that learning computing leads to problem-solving skills, and we have no support the claim.

I tweeted in response to Brenda’s slide, and several CS teachers asked me, “So why teach programming or computing at all?”  That’s a great question!  Here are some of my top reasons:

  1. To understand our world. The argument that Simon Peyton Jones made in England for their computer science curriculum is that Computer Science is a science like all the others. We teach Chemistry to students because they live in a world with chemical interactions. We teach Biology because they live in a world full of living things. We teach Physics because they live in a physical world. We should teach Computer Science because they live in a digital world.
  2. To study and understand processes. Alan Perlis (first ACM Turing Award laureate) argued in 1961 that everyone on every campus should learn to program. He said that computer science is the study of process, and many disciplines need people to know about process, from managers who work on logistics, to scientists who try to understand molecular or biological processes. Programming automates process, which creates opportunities to simulate, model, and test theories about processes at scale. Perlis was prescient in predicting computational science and engineering.
  3. To be able to ask questions about the influences on their lives. C.P. Snow also argued for everyone to learn computing in 1961, but with more foreboding. He correctly predicted that computers and computing algorithms were going to control important aspects of our lives. If we don’t know anything about computing, we don’t even know how to ask about those algorithms. It shouldn’t be magic.  Even if you’re not building these algorithms, simply knowing about them gives you power. C.P. Snow argues that you need that power.
  4. To use an important new form of literacy. Alan Kay made the argument in the 1970’s that computing is a whole new medium. In fact, it’s human’s first meta-medium — it can be all other media, and it includes interactivity so that the medium can respond to the reader/user/viewer. Computing gives us a new way to express ideas, to communicate to others, and to explore ideas.  Everyone should have access to this new medium.
  5. To have a new way to learn science and mathematics. Mathematics places a critical role in understanding our world, mostly in science. Our notation for mathematics has mostly been static equations. But code is different and gives us new insights. This is what Andy diSessa has been saying for many years. Bruce Sherin, Idit Harel, Yasmin Kafai, Uri Wilensky, and others have shown us how code gives us a powerful new way to learn science and mathematics. Bootstrap explicitly teaches mathematics with computing.  Everyone who learns mathematics should also learn computing, explicitly with programming.
  6. As a job skill. The most common argument for teaching computer science in the United States is as a job skill.  The original Code.org video argued that everyone should learn programming because we have a shortage of programmers. That’s just a terrible reason to make every school child learn to program. That’s what Larry Cuban was arguing this last summer. Tax payers should not be funding a Silicon Valley jobs program. Not everyone is going to become a software developer, and it doesn’t make any sense to train everyone for a job that only some will do. But, there’s some great evidence from Chris Scaffidi (that I learned about from Andy Ko’s terrific VL/HCC summary) showing that workers (not software developers) who program make higher wages than those comparable workers who do not. Learning to program gives students new skills that have value in the economy. It’s a social justice issue if we do not make this economic opportunity available to everyone.
  7. To use computers better. This one is a possibility, but we need research to support it. Everyone uses computers all the time these days. Does knowing how the computer works lead to more effective use of the computer?  Are you less likely to make mistakes? Are you more resilient in bouncing back from errors? Can you solve computing problems (those that happen in applications or with hardware, even without programming) more easily?  I bet the answer is yes, but I don’t know the research results that support that argument.
  8. As a medium in which to learn problem-solving. Finally, computer programming is an effective medium in which we can teach problem-solving. Just learning to program doesn’t teach problem-solving skills, but you can use programming if you want to teach problem-solving. Sharon Carver showed this many years ago. She wanted students to learn debugging skills, like being able to take a map and a set of instructions, then figure out where the instructions are wrong. She taught those debugging skills by having students debug Logo programs. Students successfully transferred those debugging skills to the map task. That’s super cool from a cognitive and learning sciences perspective. But her students didn’t learn much programming — she didn’t need much programming to teach that problem solving skill.But here’s the big caveat: They did not learn enough programming for any of the other reasons on this list!  The evidence we have says that you can teach problem-solving with programming, but students won’t gain more than that particular skill. That is a disservice to students.

Certainly there are more reasons than these, and I’ve seen several in the response to this blog post, and some in the comments below.

This was just one slide in Brenda’s talk. Her overall point was much more broader and more significant. I strongly agree with Brenda’s key point: CS for All is a social justice issue. Learning computing is so important that it is unjust to keep it from some students. Currently, CS is disproportionately unavailable to poorer students, to females, and to minority ethnic groups. We need CS for All.

October 18, 2017 at 12:30 pm 15 comments

The Limitations of Computational Thinking: NYTimes

The New York Times ran a pair of articles on computing education yesterday, one on Computational Thinking (linked above and quoted below) and one on the new AP CS Principles exam.  Shriram and I are quoted as offering a more curmudgeonly view on computational thinking.  (Yes, I fixed the name of my institution in the below quote, from what how it is phrased in the actual article.)

Despite his chosen field, Dr. Krishnamurthi worries about the current cultural tendency to view computer science knowledge as supreme, better than that gained in other fields. Right now, he said, “we are just overly intoxicated with computer science.”

It is certainly worth wondering if some applications of computational thinking are trivial, unnecessary or a Stepford Wife-like abdication of devilishly random judgment.

Alexander Torres, a senior majoring in English at Stanford, has noted how the campus’s proximity to Google has lured all but the rare student to computer science courses. He’s a holdout. But “I don’t see myself as having skills missing,” he said. In earning his degree he has practiced critical thinking, problem solving, analysis and making logical arguments. “When you are analyzing a Dickinson or Whitman or Melville, you have to unpack that language and synthesize it back.”

There is no reliable research showing that computing makes one more creative or more able to problem-solve. It won’t make you better at something unless that something is explicitly taught, said Mark Guzdial, a professor in the School of Interactive Computing at Georgia Tech who studies computing in education. “You can’t prove a negative,” he said, but in decades of research no one has found that skills automatically transfer.

April 5, 2017 at 7:00 am 7 comments

From Computational Thinking to Computational Participation in K-12 Education: Yasmin Kafai in CACM

Yasmin Kafai has been a friend and mentor to me for years — she introduced me to my PhD advisor, Elliot Soloway.  Her book with Quinn Burke, Connected Code, updates thinking about the role of computing and programming in schools. They emphasize an idea they call Computational Participation as a contrast with computational thinking.  I asked Yasmin to do a CACM Viewpoint on the idea, and it’s published this month. Yasmin has shared the paper on Academia.edu.

In the 1980s many schools featured Basic, Logo, or Pascal programming computer labs. Students typically received weekly introductory programming instruction. These exercises were often of limited complexity, disconnected from classroom work, and lacking in relevance. They did not deliver on promises. By the mid-1990s most schools had turned away from programming. Pre-assembled multimedia packages burned onto glossy CD-ROMs took over. Toiling over syntax typos and debugging problems were no longer classroom activities.

Computer science is making a comeback in schools. We should not repeat earlier mistakes, but leverage what we have learned. Why are students interested in programming? Under what circumstances do they do it, and how? Computational thinking and programming are social, creative practices. They offer a context for making applications of significance for others, communities in which design sharing and collaboration with others are paramount. Computational thinking should be reframed as computational participation.

Source: From Computational Thinking to Computational Participation in K-12 Education | August 2016 | Communications of the ACM

August 17, 2016 at 7:06 am 1 comment

New ISTE Standards emphasize computational thinking with a better definition

ISTE has just released their ed-tech-influenced standards for students for 2016, and they include computational thinking — with a better definition than the more traditional ones.  It’s not about changing how students think.  It’s about giving students the tools to solve problems with technology.  I liked the frequent use of the term “algorithmic thinking” to emphasize the connections to the history of the ideas.  This definition doesn’t get to systems and processes (for example), but it’s more realistic than the broad transferable thinking skills claim.

CT-ISTE

Students develop and employ strategies for understanding and solving problems in ways that leverage the power of technological methods to develop and test solutions.

Source: For Students 2016

August 12, 2016 at 7:53 am 5 comments

Older Posts


Recent Posts

August 2018
M T W T F S S
« Jun    
 12345
6789101112
13141516171819
20212223242526
2728293031  

Feeds

Blog Stats

  • 1,538,864 hits

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

Join 5,301 other followers

CS Teaching Tips