Developing a Culture of
Computational Thinking

Ethan Bogle, Stanford University Online High School

ABSTRACT

In this talk, I present on a curriculum I designed for a pilot course on Computational Thinking at my school. My purpose while building this curriculum was to build interest and excitement about Computational Thinking and the Wolfram Language in my school community, or in other words to develop a culture of Computational Thinking. Given an audience who does not know about Computational Thinking and is not woven together by another common interest, my goal is to catch, and then retain, their interest so that they will learn Computational Thinking and the Wolfram Language for themselves. The design of the course includes flexible paths allowing participants to devote varying amounts of time to learning the Wolfram Language according to their interest and availability and weekly sessions designed to be applicable for a wide range of audiences. I will discuss the structure of the course, focusing on my design of the special topics discussions, and show several example sessions. I will also discuss my experience using the curriculum so far and the possible future of the curriculum. What I have designed is very much an experiment, but this experiment will give valuable data about what it takes to create a Culture of Computational Thinking.

My Journey to Designing a Computational Thinking Curriculum

2018 Wolfram Summer Camp

Computational Thinking Club

Expanding Computational Thinking

Computational Thinking Course

2019 Wolfram Summer School

The Goal: Developing a Culture of Computational Thinking

https://www.youtube.com/watch?v=JVMiu_tCeOQ

Course Design: The Main Principle

Assume your audience doesn’t know about Computational Thinking and the Wolfram Language. How do you catch their interest?

You must convince your audience to take time out of their own busy schedules to learn Computational Thinking of their own volition, not because you assigned them the work, but because they see how to apply Computational Thinking usefully to their preexisting pursuits.

This is the reason I fell in love with the Wolfram Language. This is how we should spread it.

Course Design: To Show

Computational Thinking is the process of conceptualizing ideas in a way that a computer can understand.

A Computational Language fuses the natural language character of English or philosophy language, the precise character of symbolic math language, and the computer-interpretability of a programming language.

A Computational Essay is an essay that harnesses a new type of evidence to prove its thesis. This evidence is computation.

Computational Literacy is the ability to use Computational Thinking to read and write Computational Language, for example reading and writing Computational Essays.

Course Design: Sessions

50 mins: 20 mins special topic presentation + 30 mins work time/exploration time/office hours

Topic presentations:

20 mins

Discuss a particular application of Computational Thinking

Wide range of disciplines, varying levels of sophistication

Applications to both modern research and coursework

Work Time:

30 mins

Time for students to ask questions, work through An Elementary Introduction to the Wolfram Language (EIWL) or on another exploratory activity

Provides dedicated WL practice time, especially for students not dedicating time outside of meetings (I’ll talk about paths in a moment).

Exit Ticket:

Short survey at the end of every meeting

Allows students to reaffirm or change path (I’ll discuss paths in a moment), update the leader on their progress, and respond to something from the session

In Addition:

Weekly Office Hours can be a resource for longer discussions or help.

Participants who are already very familiar with the Wolfram Language can serve as mentors while pursuing their own projects.

Course Design: Paths

Three different levels of participation

Enables students to devote as much or as little time as they want

Each has a suggested planned-out schedule.

The distinction between the paths is flexible, and students can jump between paths during the year if they like.

Regardless of path, all students will gain Computational Literacy.

In keeping with the theme of “Computational Thinking Land”, the three tracks are “Tourist”, “Study Abroad”, and “Expat”.

Tourist:

No time needed outside of meetings

~1 section EIWL per week

End Goal: decent familiarity with Wolfram Language and wide-ranging understanding of what it can be used for

Study Abroad:

~2 hrs per week outside of class meetings

~2 sections EIWL per week

End Goal: very good familiarity with Wolfram Language and wide-ranging understanding of what it can be used for

Expat:

~4-5 hrs per week outside of class meetings

~4 sections EIWL per week

End Goal: very good familiarity with the Wolfram Language, wide-ranging understanding of what it can be used for, and a research project in the student’s area of interest using the Wolfram Language

Course Design: Platform

Implemented in Google Classroom because it was free, easy to use, and easy to port to other Learning Management Systems

Session Topics: Topic Design

The goal of the session topics is to catch the interest of someone who is asking “What could I use this for?” by showing

What Computational Thinking and the Wolfram Language are capable of,

A few examples that participants can not only use but also easily modify to their own questions, and

Further resources for participants to learn more about each application.

Balance between Generality and Specificity:

General enough that they catch the interest of a broad set of the students, yet

Specific enough that they can be directly applied by the students to something that is important to them

It is easy to create, rearrange, and share topics.

Session Topics: Choosing Topics

Considerations:

What is the existing culture at your school, i.e. what would people find useful?

What areas of application for Computational Thinking and the Wolfram Language are surprising?

What are people not going to cover in EIWL?

Session Examples

Example Session: Wolfram|Alpha

One of the first sessions

Entry point into the computational realm

80-second video, then exploration

Example Session:
The Notebook Interface

One of the first sessions

Built almost entirely from an existing presentation

Example Session: Maps

GeoListPlot[GeoNearest["Volcano",Here,30]]

Yes, maps are in EIWL, but I wanted to get to them sooner, since they are surprising and useful.

Much of the code is copied from EIWL, but I added my own commentary and added the function DynamicGeoGraphics.

Example Session:
Social Network Graphs

Repurposed code from a Wolfram Blog post, but changed it from Othello to Hamlet (since my school studies Hamlet).

Easy to adapt to a different play, and easy to do computation on the graph if desired, or just to use it as a visual.

Graph[
edgesReduced,
VertexLabels->"Name",
VertexStyle->{_:>RandomColor[]},
GraphLayout->"GravityEmbedding"
]

A Longer Example Session:
Literary Style

This session covers doing word searches in text (which is itself an application of computational thinking), the function FindTextualAnswer, and a specific example of analyzing different speakers in a play. Here’s the part about comparing speakers in a play. I’m going to add annotations in [square brackets]:

Comparing Speaking/Writing Styles:

[Clear statement of purpose.]

The task is to stylistically compare different speakers in a play.

To do that, let’s get the text of Hamlet again and clean it up, leaving only the character dialog (using code from previous sessions):

[I can reuse code. If necessary, we could go over it. By this point, students probably know enough that they can understand what’s going on. The important thing is that this code will always work, and will never need fixing.]

hamlet=ResourceData["Hamlet"];
hamletdialog=StringDrop[hamlet,702];
hamletdialog=StringDelete[hamletdialog,Shortest["["~~___~~"]"]];
hamletdialog=StringDelete[hamletdialog,Shortest["\nACT"~~___~~"\n"]|Shortest["SCENE"~~___~~"\n"],IgnoreCase->True]//FixedPoint[StringReplace["\n\n\n"->"\n\n"],#]&;

Let’s pick three particular characters, say Hamlet, Claudius, and Ophelia. If we look at the text, we see that Hamlet is “Ham.”, Claudius is “King.”, and Ophelia is “Oph.”. We can therefore extract their lines:

ham=StringCases[hamletdialog,Shortest["Ham.\n"~~dialog__~~"\n\n"]:>dialog];cla=StringCases[hamletdialog,Shortest["King.\n"~~dialog__~~"\n\n"]:>dialog];oph=StringCases[hamletdialog,Shortest["Oph.\n"~~dialog__~~"\n\n"]:>dialog];

[The code up to this point has been easy to modify, relatively understandable, and works without modification. It’s also fairly easy to modify for a different text. Now begins the exploration section, where the code may be a little bit harder to understand, but is still only one line.]

We can then do WordClouds:

WordCloud@*DeleteStopwords@*Flatten@*TextWords/@<|"Hamlet"->ham,"Claudius"->cla,"Ophelia"->oph|>//KeyValueMap[Labeled[#2,#1]&]

We're now in a position to answer a multitude of questions about these three characters’ styles (this could of course be expanded to the whole set of characters). Who speaks the most words?:

Total/@WordCount/@Flatten/@
<|"Hamlet"->ham,"Claudius"->cla,"Ophelia"->oph|>

Who tends to speak the longest, on average?:

Mean/@Map[WordCount,<|"Hamlet"->ham,"Claudius"->cla,"Ophelia"->oph|>,{2}]//N

Get a histogram about the differences in speech length (you can fiddle around with the PlotRange option to look at different parts of the plots). This generates a histogram showing the distribution of uninterrupted speech lengths in the characters’ dialogs:

Histogram[#,PlotRange->All]&/@Map[WordCount,<|"Hamlet"->ham,"Claudius"->cla,"Ophelia"->oph|>,{2}]

There are many, many more questions that one can ask about the text. For example, is a particular sentence that you’re citing for your essay statistically longer than the rest of the character’s sentences in the play? There are all sorts of questions you can ask!

[It’s now fairly easy for the student to substitute their own analysis idea on the dialog and to explore for themselves. They can quickly find out the insights they personally are interested in, either now, or when they return to this notebook and rerun the code in a few weeks when they are writing their Hamlet paper.]

My Experience So Far

What actually happened: 30 minutes per week, topic presentations only, without office hours and work time in the session itself.

More onus on the students to work on their own time.

More onus on me to sell them on it.

12 students consistently showing up each week (good attendance for a homeroom)

No office hours callers

No assignments, no projects yet

Turning to projects now

Presentations have been smooth--that part of the design is working

Mid-semester survey

How have you been enjoying the course in general? What part of the course have you enjoyed most?

“I have really enjoyed the applications in different subjects. I appreciate the diversity of the language in terms of its applications...I entertained myself for a good twenty minutes with just one of its built in functions - I think it was the dog vision one? Anyway, I appreciate how it has support in so many subjects.”

“I am enjoying this course a lot! I like how I can explore wolfram little by little without pressure.”

“I’ve been most enjoying the unusual to programming aspects: images and graph manipulations.”

What’s your goal, and how can we support that goal?

“I have been thinking about using Wolfram to analyze stocks and find the best stocks to buy.”

“I wanted to use this for pretty much anything! I wanted to use it to do research on subjects that I'm interested in.”

“One general project is I wanted to try to graph my grades over time in different classes.”

“Ultimately, I would like to use Wolfram with robots, like vision coding and taking text inputs from humans and trying to break it down into commands that the robot can follow.”

“I’m not sure what I want to do, because WL is so powerful . . . but right now I’m interested in taking countries from books and placing them on maps, possibly in timeline format.”

What have you learned about CT and WL so far?

“I have explored what types of information can be gained with the natural language input and the overall information Wolfram has.”

“There is so much more to WL then I originally expected!”

“I've learned about making infographics in wolfram, in particular maps and some word manipulation.”

“I have learned about strings, lists, and the manipulate command.”

“It does a great job manipulating all sorts of media! From text to images to human input and the neural nets, I'm continually astonished by its seemingly endless capabilities.”

Action Items

Accessing These Resources:

For the Google Classroom link, talk to me.

These slides and my Computational Essays essay are on Pathable.

You can find my posts on Wolfram Community.

For Students:

Start a club or class. Think (and talk) about what role Computational Thinking and the Wolfram Language could play in your curriculum.

Use the Wolfram Language for your classes. Impress your instructors with what it can do.

For Faculty/Staff:

Find the Wolfram Student Ambassadors or other Wolfram enthusiasts at your school and ask them if they would like to start a club/course.

Look for ways to use Wolfram Language in your classes. Impress your students with what it can do.

Hopes for the Future

The Goal is to Develop a Culture of Computational Thinking.

What I have designed is very much an experiment, but I think this experiment will give valuable data about what it takes to create a culture of Computational Thinking.

Thank you for coming!