Situated Computational Thinking

Intro


The research group that I’m a part of, Re-Making STEM, of is looking at ways that computational thinking (CT) practices intersect with creative, collaborative human activities.  This has led to some really interesting explorations in computing, cognition, and culture. Our practical goals include: discovering ways that teachers and their students can engage with and learn CT, and discovering design principles for learning and applying CT in interesting ways.  In this post, we’ll look at some of those explorations and hopefully leave you with some things to think about.

Computational thinking

I think this definition of CT is as good a starting point as any:

Computational Thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent (Cuny, Snyder, Wing, 2010).

Wing (2010) says she’s not just using problem / solution to refer to mathematically well-defined problems but also to complex real-world problems.  She also says that the solutions can be carried out by humans, computers, or combinations of humans and computers. This definition places the emphasis on representation, but begs the question, what are forms that can be effectively “carried out” by information-processing agents?  What does “carried out” mean anyway?

Let’s pin these down for the sake of discussion.  We might say that the forms we’re talking about are abstract representations (abstractions, the noun).  Indeed, abstraction (the verb) is widely recognized as an essential component of CT (Grover and Pea, 2013).  Let’s say abstractions are formal representation (e.g. formal logic, mathematical equations, computer code), and “carry out,” means execute.  So we’re talking about executing algorithms. And let’s be real – we are only going to write formal algorithms if we intend to automate them with a computer.  

So if CT in practice is, “writing algorithms that can be executed by computers,” then we are really talking about programming.  This contradicts Wing’s clarifications about “problems” and “agents,” described above. Furthermore, the field is saying loud and clear that CT is not just programming.  Since 2013, the concept of CT has expanded (e.g. Weintrop et. al., 2015), and for most people it is certainly not limited to executing algorithms on computers.

Opening it up

Let’s look at this piece by piece, starting with the “carrying out.”  Even if we’re talking about formal representations and computers, CT involves formulating data as well.  Data is not “carried out,” or executed, like an algorithm – it is structured, processed, analyzed, synthesized, and interpreted (by humans and computers).  

Now let’s look at formality and agents as computers / humans.  We already saw what happens when we are strict about formality and computers.  If we loosen the restriction on formality, but still think of agents as computers (or virtual agents), then we allow pretty much any human-computer interaction.  If we keep formality strict, but allow for people as agents, then we allow for things like math to count. The latter might work for some, but I would ask: do we care about distinguishing between CT and mathematical thinking?  Is CT == mathematical thinking + computers? Do we want to allow for less formal expressions of CT?

Let’s put these two axes (more or less formal, extent of computer use) on a table.


We in the CS community might have a tendency to think about CT as living in the upper-left corner of the table (formal, tied to computer use).  In reality, creative collaborative human activity blends all of these types of communication, and CT (whatever it is) intersects with all of these other areas.  Authentic computational practice also involves multiple people and computers working together – there are more than two agents in the system. So, as a general case, we have systems with: agents (humans, computers, and virtual agents), situated in environments (physical, social / cultural, virtual), interacting using systems of representation (sounds, images, diagrams, natural and formal languages, etc.).  

One CT, many CTs

What are the implications of this?  I think there are two clear options for how we define CT:

  • (A) Restrict what we mean by CT.  This is perfectly reasonable and probably necessary for most practical purposes.  However, this has the inevitable consequence of fragmenting our understanding of CT.  There will be different CTs in different disciplines / fields. We will do this, but we should try to understand the restrictions that we are imposing, and the consequences of imposing them.
  • (B) Break our concept of CT wide open.  I think the scientific community (at least, those who are studying the construct of CT and how it plays out in real cultural contexts) should do this, so that we can explore how CT is understood and practiced in a variety of contexts and for a wide range of purposes.  

This is not a binary choice that we need to make, individually or collectively, once and for all.  The processes of imposing structures and breaking them apart will enrich our understandings of CT. In closing, I ask you to consider how you construct CT with your students and colleagues, and what effects this might have on who engages with and learns CT at your school.

These ideas in this post are part of a collaborative research effort with the Re-Making STEM PIs, Brian Gravel, Eli Tucker-Raymond, Maria Olivares, Amon Millner, Tim Atherton, and James Adler, and the dedicated research team, Ada Ren, Dionne Champion, Ezra Gouvea, Kyle Browne, and Aditi Wagh. 
This material is based upon work supported by the National Science Foundation under Grant Numbers DRL-1742369, DRL-1742091. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

References and further reading:

David Benedetto, At-Large Representative


Scrum in the Computer Science Classroom


According to the World Economic Forum’s (WEF) highly recommended meta-study “21st Century Skills”, schools need to prepare students to have a “future-based mindset” with skills such as collaboration, creativity, and adaptability.  Their answer: project-based learning (PBL). While PBL is gaining much speed in schools, how to manage projects can be a challenge: who is doing most of the work? who isn’t participating fully? how do you assess who has done what?

 In the computer science field, one means of project management is the Agile software development paradigm which, among other aspects, implements Scrum, a methodology for dividing work that needs to be completed into sprints, or stories.  In the Scrum environment, the team is considered capable of completing the task on their own. While the team is self-directed and is encouraged to problem-solve independently, there are two clearly defined roles that facilitate the process.  The first is the Scrum Master (in the classroom, this is the teacher), and the Product Owner (the students). The role of the Scrum master is to help the team when there is some impediment to their completion of a task, such as a bug or a design flaw.  The product owner’s/students job (in schools) is to keep the vision of the solution and manage the daily tasks. Scrum has recently been adopted in schools as a way to manage projects in both computer science and non-computer science classrooms.

Scrum meetings, which are short meetings occurring each day the class meets, consist of asking three essential questions:  What did you accomplish since the last scrum? What do you expect to accomplish before the next? and, Is anything blocking you (blocks are solved outside the scrum meeting)?  This level of accountability for students is essential for setting goals, prioritizing project tasks, assigning roles and jobs for team members, and keeping students on track for project completion. In 2016, The University of the Pacific conducted a study on using scrum in three computer science courses.  Their conclusion was that, overall, students found the above benefits to be true and helpful, while a few found the Scrum process to be cumbersome.

I have been using Scrum in my own classroom for several years now with great success.  Students know what they are expected to do and are held accountable to not only me, but to each other.  There are two components that stand out as key to the process. The first is student articulation and presentation of their project status.  This forces them to really pay attention to what they are doing, how their code is working, and gain an understanding of what they need to do next and with what they are struggling.  These are essential skills for their future as software programmers and engineers. The second aspect is teacher feedback. The daily feedback is essential for keeping them on track for successful project completion and for addressing problems quickly.  

While there are many ways to manage project based learning in an educational setting, it makes sense that in a software development course, learning to work in an environment that mimics the “real world” teaches valuable skills, in addition to preparing students for their future.

Works Cited

“Implementing Agile and Scrum in the Classroom.” GDC Vault, www.gdcvault.com/play/1020769/Implementing-Agile-and-Scrum-in.

“Scrum in the Classroom | Time for Change (Part 1).” Agile Transformation Experts and Agile Coach in New York City, Amsterdam, Miami and Boston, www.incrementor.com/blog/2018/2/18/scrum-in-the-classroom-time-for-change.

Jimenez, Osvaldo, and Daniel Cliburn.  “Scrum in the Undergraduate Computer Science Curriculum.”  Journal of Computing Sciences in Colleges,  Volume 31, Issue 4, April 2016, pp. 108-114.

Amy Fox, 9 – 12 Representative

“With a Little Help from My Friends”

With our ever-busier lives, I really appreciate my friends who help keep me up to date on interesting and exciting new developments in computing education. I am sure I saw the original posting but reminders from my friends help me remember to pay attention!!

Here are 2 items that my friends Mark Guzdial and Alfred Thompson recently pointed out to me!

Mark has a really interesting blog and recently wrote about the new SIGCSE conference paper award. To celebrate the 50th Anniversary of the SIGCSE Conference, the “Test of Time” award has been created. Its goal is to identify the top 10 papers submitted to SIGCSE in the past 50 years! You can see the list and vote here.

In honor of this event, ALL SIGCSE conference papers are freely available in the ACM Digital Library until March 2, 2019.

Here are a few of Mark’s favorites:

It’s worth the time to skim through the list and see what catches your eye – download now for FREE and save them to read later. There are lots of fun papers!

Alfred keeps a list of interesting blogs – at http://blog.acthompson.net/2012/11/computer-science-education-blog-roll.html including:

  • Mike Zamansky Mike runs the computer science program at Stuyvesant High School in New York City. He’s a very creative person. he’s also built and maintained a community of students who stay connected after graduation.
  • Garth’s CS Teacher Blog  Garth Flint is a teacher at a private Catholic school in western Montana. Garth always gives me things to think about.
  • Mark Guzdial –  Computing Education Blog  Mark is probably doing more research in how to teach computer science right than anyone else I know. His posts include information about the CS Principles course, he is on the advisory board, which will probably be a new APCS course. 
  • Doug Bergman is the award winning head of Computer Science at Porter-Gaud School in Charleston, SC 
  • Set Another Goal By Clark Scholten Computer Science Teacher at Pinnacle High School
  • Dawn DuPriest – coding in math class –  Middle School Computer Science and Electronics teacher
  • Communications of the ACM: blog@CACM The CACM blog has posts from some of the top people in computer science. Some of the posts are very technical but many are potentially interesting for students, teachers and CS hobbyists alike.  

Oh, and one more thing – I was honored to be the guest editor for the ACM Inroads magazine celebrating the 50th Anniversary of SIGCSE organization.  This special issue came out in December 2018 and has a variety of articles about the history of the organization, thoughts about the future, challenges we may face, etc. My favorite section is the “My SIGCSE’ where some of the SIGCSE members who share their stories with us. Give it a look!

So thankful for my friends!!


Jane Prey, ACM Representative