Posts tagged ‘computational thinking’

The Ground Truth of Computing Education: What Do You Know?

Earlier this month, I was a speaker at a terrific event at Cornell Tech To Code & Beyond: Thinking & Doing organized by Diane Levitt (see Tweet here). I spoke, and then was on a panel with Kelly Powers, Thea Charles, Aman Yadav, and Diane to discuss what is Computational Thinking.

One of the highlights of the day for me was listening to Margaret Honey, a legendary educational technology designer and researcher (see bio here). She is President and CEO of the New York Hall of Science. One of my favorite parts of her talk was a description of the apps that they’re building to get kids to notice and measure things in their world. I even love the URL for their tools — https://noticing.nysci.org/

At the event, Diane mentioned that she was working on a blog post about her “ground truth” — what she most believed about CS education. She shared it as a tweet right after the event. It’s lovely and deep — find it here.

A couple of my favorite of her points:

Students thrive when we teach at the intersection of rigor and joy. In computer science, it’s fun to play with the real thing. But sometimes we water it down until it’s too easy—and kids know it. Struggle itself will not turn kids away from computer science. They want relevant learning experiences that lead to building things that matter to them. “I can do hard things!” is one of the most powerful thoughts a student can have.

The biggest lever we have is the one we aren’t using enough yet: preservice education for new teachers. The sooner we start teaching computer science education alongside the teaching of math and reading, during teachers’ professional preparation programs, the sooner we get to scale. It’s expensive and time-consuming to continually retool our workforce. Eventually, if every teacher enters the classroom prepared to include computer science, every student will be prepared for the digital world in which they live. This is what we mean by equity: equal access for every student, regardless of geography, gender, income, ability, or, frankly, interest.

Sara Judd answered Diane’s post with one of her own — find it here. I really enjoy it because she sees computer science like I do. It’s not just about problem-solving, but also about making things and connecting to the world.

Programming makes things.

While programming for it’s own sake can be fun for some people, (me, for instance) generally when people are programming it is because there is a thing that needs to be made. These things can be expressive pieces of visual art or music. These things can be silly fun for fun’s sake. These things can revolutionize the world, they can make our lives easier. The important thing is, they are “things.” CS doesn’t exist in a vacuum. Therefore, classroom CS should not exist in a vacuum.

I encourage more of us to do this — to write down what we believe about CS education, then share the essays. It’s great to hear goals and perspectives, both to learn new ones and also to recognize that others share how we think about it. I particularly enjoy reading these from people with different life experiences. I have a privileged life as a University CS professor. Teachers in K-12 struggle with very different things. I’m so pleased when I find that we still have similar goals for and perspectives about CS education.

January 28, 2019 at 7:00 am 1 comment

Computational thinking abstracts too far from the computer: We should teach CS with inquiry

Judy Robertson has a blog post that I really enjoyed: What Children Want to Know About Computers. She argues that computational thinking has abstracted too far away from what students really want to know about, the machine.

Computational thinking has been a hugely successful idea and is now taught at school in many countries across the world. Although I welcome the positioning of computer science as a respectable, influential intellectual discipline, in my view computational thinking has abstracted us too far away from the heart of computation – the machine. The world would be a tedious place if we had to do all our computational thinking ourselves; that’s why we invented computers in the first place. Yet, the new school curricula across the world have lost focus on hardware and how code executes on it.

Her post includes pictures drawn by children about what they think is going on inside of the computer.  They’re interested in these things!  We should teach them about it.  One of the strongest findings in modern science education is that inquiry works. Students learn science well if it’s based in the things that they want to know. Judy argues that kids want to know about the computer and how code executes on the computer. We shouldn’t be abstracting away from that. We should be teaching what the kids most want to learn.

To be clear, I am not criticizing the children, who were curious, interested and made perfectly reasonable inferences based on the facts they picked up in their everyday lives. But I think that computer science educators can do better here. Our discipline is built upon the remarkable fact that we can write instructions in a representation which makes sense to humans and then automatically translate them into an equivalent representation which can be followed by a machine dumbly switching electrical pulses on and off. Children are not going to be able to figure that out for themselves by dissecting old computers or by making the Scratch cat dance. We need to get better at explicitly explaining this in interesting ways.

December 10, 2018 at 7:00 am 3 comments

Maybe there’s more than one kind of Computational Thinking, but that makes research difficult

Shuchi Grover has a nice post in Blog@CACM where she suggests that there is more than one kind of Computational Thinking, which tries to resolve some of the concerns about the term (some of which I discussed here):

It’s also clear to me that in order to help make better sense of CT, we must acknowledge and distinguish two views of CT for K-12 education that are defined and operationalized based on the context for teaching/learning/application. One is a view of CT as a thinking skill for CS classrooms, that includes programming and other CS practices with the goal of highlighting authentic disciplinary practices and higher-order thinking skills used in computer science. The other is CT as a thinking skill/problem-solving approach in non-CS settings—this is often about using programming to automate abstractions of phenomena in other domains or work with data with the goal of better understanding phenomena (including making predictions and understanding potential consequences of actions), innovating with computational representations, designing solutions that leverage computational power/tools, and engaging in sense making around data.

She says that their are two “views” of CT, but she does distinguish Wing’s original definition which most people don’t buy. So, it seems like there are three.  (Kudos to Shuchi for pointing out that Seymour Papert actually uses the phrase “computational thinking” in Chapter 8 of Mindstorms — so cool!)

But I’m still wondering: Why do we have to call all of these things “computational thinking”?  I get that there’s a lot of energy around the term, but it’s an overloaded term.  Think about it from the perspective of any other science.  If you discovered that a species of animal or bacteria you were studying was actually two species, you’d name them differently.  In the 19th century, physicists thought that light traveled through a “luminiferous aether,” but now, nobody uses that term because we realized that such a thing didn’t exist. Maybe we as scientists should invent some new and more accurate terms instead of overloaded and confusing “computational thinking”?  If we’re using “computational thinking” because it has marketing cachet with teachers and principals (even if the term isn’t useful to researchers), that makes it hard to have a science around computing education.  Do we write about CT Type-1 vs CT Type-2?

December 7, 2018 at 7:00 am 17 comments

Literature is to Composition, as Computer Science is to Computational Literacy/Thinking

Coding_Literacy___The_MIT_Press

Annette Vee was visiting in Ann Arbor, and looked me up. We had coffee and a great conversation.  Annette is an English Professor who teaches Composition at University of Pittsburgh (see website here). She published a book last year with MIT Press, Coding Literacy: How Computer Programming is Changing Writing. (I’m part way through it and recommend it!) She knew me from this blog and my other writing about computational literacy. I was thrilled to meet someone who makes the argument for code-as-literacy with a real claim to understanding literacy.

One of the themes in our conversation was the distinction between literature and composition.  (I’m going to summarize something we were talking about — Annette is not responsible for me getting things wrong here.) Literature is about doing writing very well, about writing great works that stand the test of time. It’s about understanding and emulating greater writers.  Composition is about writing well for communicationIt’s about letters to Grandma, and office memos, and making your emails effective.  Composition is about writing understandable prose, not great prose as in literature. People in literature sometimes look down on those in composition.

There’s a similar distinction to be made between computer science as it’s taught in Universities and what Annette and I are calling coding/computational literacy (but which might be what Aman Yadav and Shuchi Grover are calling computational thinking).  Computer science aims to prepare people to engineer complex, robust, and secure systems that work effectively for many users. Computational literacy is about people using code to communicate, to express thoughts, and to test ideas. This code doesn’t have to be pretty or robust. It certainly shouldn’t be complex, or nobody will do it. It should be secure, but that security should probably be built into the programming system rather than expecting to teach people about it (as Ben Herold recently talked about).  People in computer science will likely look down on those teaching computational literacy or computational thinking. That’s okay.

Few people will write literature. Everyone will compose.

November 23, 2018 at 7:00 am 41 comments

Novum Organum: The original “How To Not Be Wrong”

When I visited with Alan Kay and Bonnie MacBird in June, one of the ideas that he got me thinking about was Sir Francis Bacon’s Novum Organum (1620, wikipedia link), for ‘new instrument of science.’ Bacon understood human tendencies for bias long before behavioral economics. His book was the prototype for the modern popular book “How to Not Be Wrong: The Power of Mathematical Thinking” which advocates for mathematics as an approach to addressing human biases and limitations.

Bacon aimed to construct a foundation for real science, a body of knowledge that we could trust despite the fact that our minds are weak and that we are easily swayed. He lists four “idols” — the biases which keep us from thinking objectively and scientifically. Wikipedia has a short description for each. A couple that I found particularly striking:

  • Idols of the tribe: The things we get wrong because we like to see things at human scale and in regular structures. I read these as including the ideas we like because everyone else likes them, like picking a programming language because it’s popular and not because it suits the task.
  • Idols of the cave: The things we get wrong because of our unique education and background. Bias due to privilege (and assuming that everyone else has the same privilege) seem to fall in here.
  • Idols of the market: I just kept thinking “computational thinking” here. Idols of the market include words “which spring from fallacious theories” and “that are the result of imprecise abstraction.”  Unsupported theories of transfer and terms which we can’t actually define and test are part of Bacon’s warnings about “the market.”

I haven’t read the whole document — it’s available on Project Gutenberg, but it’s tough going.  I have found that Bacon talks about issues not in the Wikipedia article that are are significant today. For example, Bacon decries making decisions based on too “few experiments” which is explicitly a concern addressed in the efforts to replicate prior results (e.g., article here).

I keep thinking about what Bacon would say about computing education research. CER has some deep research questions it’s pondering (which I plan to address in some future blog posts). How do we make sure that we’re doing Science and not just following our Baconian idols?

October 29, 2018 at 7:00 am 2 comments

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 11 comments

Older Posts


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

Join 6,143 other followers

Feeds

Recent Posts

Blog Stats

  • 1,607,261 hits
February 2019
M T W T F S S
« Jan    
 123
45678910
11121314151617
18192021222324
25262728  

CS Teaching Tips