Authentic Computational Thinking in a Project-Based Public High School

Matthew Green BA Mathematics, MS Educational Technology
Rick Biggerstaff BS Mathematics, MS Mathematics
Riverpoint Academy

Join the Conversation #WolframTechConf

Abstract

Seymour Papert gave us the phrase “Computational Thinking” in his 1980 book “Mindstorms.” In 1996 he provided further explanation in his paper, “An Exploration in the Space of Mathematics Educations” stating, “The goal is to use Computational Thinking to forge ideas.”  

The contemporary and popular definition of Computational Thinking has been stripped of its power.  Computational Thinking as a “forge for ideas” has been replaced with the basic, and low-level techniques of Computer Science.  It is our belief that these techniques are important in a deep study of computer science, but, as Stephen Wolfram himself explains, they are not the correct place to start.  

The Wolfram Language enables Computational Thinking in a profound way: It is a professional tool that is fully accessible to students. Most other tools used to teach Computational Thinking are stripped down, “toy” versions that will each be outgrown.

With the Wolfram Language, we have a professional tool that has enabled deep and meaningful computational and mathematical thinking and problem solving among all students at a depth we’ve only previously imagined possible. We cannot overstate our excitement at the power and potential of the Wolfram Language as a tool to transform all learning. 

We will present stories of deep student engagement in learning to think with computers and our plans for taking it further in our second year.

Today

How we view Computational Thinking

About us and our school

Computational Thinking with Wolfram Language, year one.

Where we’re going next with WL

Computational Thinking

We want students to use computation to think in new ways.

papert=Import["https://www.ithistory.org/sites/default/files/honor-roll/seymour_papert.gif",ImageSize->Large];
papert2=Import["http://lorenabarba.com/wp-content/uploads/2016/03/SeymourPapert.jpg",ImageSize->Large];
quoteStyle[x_]:=Text[Style[x,TextAlignment->Center,RGBColor[0.21,0.37,0.5],24,Italic]];
a="\"The goal is to use computational thinking to forge ideas\"";
s="\n\n";
b="\"My central focus is not on the machine but on the mind\"";
title=Text[Style["Seymour Papert",TextAlignment->Right,Black,30]];
r=StringJoin[a,s,b];
Grid[{{title,SpanFromLeft},{papert2,quoteStyle @ a},{Nothing,Nothing},
{papert,quoteStyle @ b}},Frame->False,Alignment->Center]

Sources: Lorena Barba, Seymour Papert, Stephen Wolfram

About Riverpoint Academy

ra=Import["https://twitter.com/riverptacademy","Images"];
ImageCollage[Select[ra,If[ImageDimensions[#][[1]]>800,True,False]&]]

About Us

We’re a 
- Public school, serving grades 9-12 with 175 students
- Not a magnet school, we serve all kids
- STEM + Entrepreneurship project-based school
- Our courses are all interdisciplinary, we have no bells and no “classrooms”
- 1:1 laptop school
- Apple Distinguished School & Washington State STEM Lighthouse Academy

“How can we create an engaging, accessible and authentic Math + CS experience for all RA students?”

Hypothesis: We believe authentic learning in Math + CS occurs when:

Students experience balance in mathematical practices and skills

(Year 1) Guiding Question: Can students engage in Standards for Mathematical Practice (SMP) work by writing and reading code?

We chose two SMP to focus on:
SMP7: Look for and make use of structure 
SMP8:  Look for and express regularity in repeated reasoning

ccssPreamble=TextWords["The Standards for Mathematical Practice describe varieties of expertise that mathematics educators at all levels should seek to develop in their students. These practices rest on important “processes and proficiencies” with longstanding importance in mathematics education. The first of these are the NCTM process standards of problem solving, reasoning and proof, communication, representation, and connections. The second are the strands of mathematical proficiency specified in the National Research Council’s report Adding It Up: adaptive reasoning, strategic competence, conceptual understanding (comprehension of mathematical concepts, operations and relations), procedural fluency (skill in carrying out procedures flexibly, accurately, efficiently and appropriately), and productive disposition (habitual inclination to see mathematics as sensible, useful, and worthwhile, coupled with a belief in diligence and one’s own efficacy)."];
ccssPreambleKeywords={"mathematics","processes","proficiencies","reasoning","procedural","fluency","efficiently","productive","adaptive","communication","representation","inclination"};
If[StringContainsQ[#,ccssPreambleKeywords],Style[#,Red,Bold,24],Style[#,12]]&/@ccssPreamble

Students have access to professional tools

(Year 1) Guiding Question 1: Is the Wolfram Language accessible to all RA students?
(Year 1) Guiding Question 2: Will we see students engage and persevere in writing code, and by extension, the SMP?

What we saw and heard during year one...

POTW Example 1

Exercise +5.1 gives students a great opportunity to think about equivalent forms and practice seeing structure and making use of regularity in repeated reasoning SMP7 & SMP8.  https://www.wolfram.com/language/elementary-introduction/2nd-ed/05-operations-on-lists.html

Most of our students would solve the above problem like you see below.  We believe this is due to the progression of exercises in the EIWL and how they were first introduced to doing operations on lists by creating the first 10 squares by typing: Range[10]^2

Range[10]*3

Some of our students would type:

Range[1,10]*3

Very few students did the following:

Range[3,30,3]

Discussion:  We are convinced that asking students to show equivalence is a great way to help them see structure, and make use of repeated reasoning.  Its also a great way to help them see new ways to think about problems.  As stated in the EIWL, there are “usually many ways to do the same thing in the Wolfram Language”  The students who did see this third method had the least difficulty in adapting to the Table function in the next problem set.

POTW Example 2

Exercise +6.1exposes how students think about building function rules.  While all approaches consist of the same operations, they way students apply these operations helps us see their depth of understanding and ability to build efficient rules.  We do not value efficient algorithms as students are starting out, but we do notice when students naturally work to make their methods more efficient.

Our student responses were pretty evenly split between the following two approaches.  Both indicate students thinking about methodically generating one list and subtracting it from another.

Range[10]^3-Range[10]^2
Table[n^3,{n,1,10}]-Table[n^2,{n,1,10}]

Very few students provided the following approach.  It is our practice to show students other methods once they’ve found their own solution method (never before).  We are again, focused on equivalence.  We confront them with it.  By showing the the output of the following method matches, exactly, the output of their solution they are forced to ask, how can this be?  They naturally start trying to figure out why some other solution produces the same solution.  Some students, of course are pragmatic to the core and cannot be roused to explore other ways to solve a problem they consider, “complete”

Table[n^3-n^2,{n,1,10}]

POTW Example 3

Exercise +6.2 allows us to work with students again on function rules, but this time in a more approachable way: with a linear function.

Most students would do the following. We believe this is because the progression of the exercises in the EIWL moved students toward using the Table function as a more powerful replacement for the Range function in many cases.  Certainly, this is how we messaged it with students.  Its funny, many of our students really, really, didn’t want to stop using the Range function.  They’d really grown to trust it and they really felt like they understood how it worked.  It wasn’t until we showed them that Table could do everything Range did, and more that they were willing to give it a shot.  For most, they had made the swap by the time they reached this problem.

Table[2n+1,{n,0,49}]

Very few students used the function rule 2n - 1. We’re not sure why, but it was a great chance to use Mathematica to plot both 2n + 1 and 2n - 1 and look at their similarities. We also took the chance to look at the comparison operator and asked Mathematica, “is yours equivalent to mine?”

yours= Table[2n+1,{n,0,49}];
mine = Table[2n-1,{n,1,50}];
yours == mine
p1 =ListPlot[yours,PlotMarkers->"+",PlotStyle->Bold]
p2 = ListPlot[mine,PlotMarkers->"x",PlotStyle->Red]
Show[p1,p2]

As we mentioned, most students had moved on from Range to Table, so we only saw a few examples like the following:

Range[1,100,2]
Range[0,49]*2+1
Range[1,50]*2-1

Project Euler Example 1- Quinn

Quinn’s work for Project Euler Problem 45: https://projecteuler.net/problem=45

T[x_]:=x(x+1)/2
P[x_]:=x(3x-1)/2
H[x_]:=x(2x-1)
Timing[
Tri=Reap[For[t=1,t<1000000,t++,Sow[T[t]]]];
Pent=Reap[For[p=1,p<1000000,p++,Sow[P[p]]]];
Hex=Reap[For[h=1,h<1000000,h++,Sow[H[h]]]];
(*Records the first 1000000 Triangle,Pentagram,and Hexagon numbers and compiles them into 3 seperate lists*)Tri2=First[Last[Tri]];
Pent2=First[Last[Pent]];
Hex2=First[Last[Hex]];
(*Simplifies all 3 lists*)Intersection[Tri2,Pent2,Hex2][[3]]]
(*Cross checks each simplified list with each other to find the values that are common.*)

Project Euler Example 2 - Jenna

Jenna’s work for Project Euler Problem 17: https://projecteuler.net/problem=17

singles=IntegerName[Range[9]];(*80 sets*)(*Need 1-9 for every decade of every century. There are 8 decades for every century, excluding the first two decades, and 10 centuries(ex:0-100 and 800-900) in 1,000, so you times 8 by 10 to get the the amount of sets of 1-9 you need(80)*)
single=""
For[j=1,j≤180, j++,
For[i=1,i≤9,i++, single=StringJoin[single,singles[[i]]]]]
single
(*this for loop writes out "one"-"nine" 80 times*)

ones=IntegerName[Range[19]];(*10 sets*)(*gives all letters from all numbers between 1 and 19 for every century(ex: 1-19 and 101-119*)
first=""
For[j=1,j≤10,j++,
For[i=1,i≤ 19,i++,first=StringJoin[first,ones[[i]]]]]
first
(*this for loop writes out "one"-"nineteen" 10 times*)

decade={"twentythirtyfortyfiftysixtyseventyeightyninety"};(*100 sets each*)(*Need 10 of every decade for every century, there are 10 centuries in 1,000 so you times 10 by 10 to get the amount of decade sets you need*)
decades=""
For[i=1,i≤100,i++,decades=StringJoin[decades,decade[[1]]]]
decades
(*this for loop writes out every decade("twenty"-"ninety") 100 times*)

hundred={"hundred"};(*900 sets*)(*for every hundred(ex:200-299), the word "hundred" appears 100 times. There is 9 different centuries, so you times 100 by 9 to get the total amount of "hundred"s you need(900)*)
hundredth=""
For[i=1,i≤900,i++,hundredth=StringJoin[hundredth,hundred[[1]]]]
hundredth
(*this for loop writes out "hundred" 900 times*)

ands={"and"};(*891 sets*)(*for every hundred(ex:201-299), the word "and" appears 99 times. There is 9 different centuries, so you times 99 by 9 to get the total amount of "and"s needed(891)*)
and=""
For[i=1,i≤891,i++,and=StringJoin[and,ands[[1]]]]
and
(*this for loop writes out "and" 891 times*)

StringLength[StringJoin[single,first,decades,hundredth,and,"one","thousand"]](*joins all the different word strings(ex:"and"+"hundred") into one big string and then counts the number of letters in it*)

Student Quotes

“I don’t necessarily like this, but after a while I start catching on.”
“I hate doing this, but I can’t stop!”
“These feel like puzzles”
“Is it okay if I use Mathematica with Khan Academy?”
“Is it okay if I use Mathematica to work on AP Calculus BC?”
“I’m going to use Mathematica to predict payload mass of my TARC rocket.”
“Okay, now I just need to BarChart it”

Students solve real problems, not just exercises

(Year 2) Guiding Question: How can we engage students in a deep exploration of data acquisition, analysis and visualization in the Wolfram Language?

Import["http://complabra.com", "Images"][[1]]

Computational Laboratory (CompLab)
“Students will develop the skills necessary to make and defend precise arguments through the use of data. Our focus will be on observable and quantifiable relationships involving movement or change. Through personal and collaborative projects, students will use Computational Thinking and technology to make informed and justifiable decisions.”

Themes of the course

Establishing Your Rhetorical Position
Finding Reliable & Relevant Data
Cleaning & Analyzing Data
Making Data Visual
Creating Purposeful Algorithms
Analyzing Behavior of Change

About Us

Matthew met Rick in 1997 as a student in Rick’s Pre-Calculus class at Lewis & Clark High School.  Matthew took AP Calculus from Rick the following year.  Matthew and Rick taught together at Lewis & Clark for five years and are now partnered again at Riverpoint Academy.  An award-winning, project-based High School in Spokane Washington.  They’ve been teaching Mathematics, Computer Science and Physics for a combined 44 years (R: 30, M: 14).  In the 2016/17 School year, Matthew and Rick built a mathematics and CS learning experience for all 175 Riverpoint Academy students, wherein each student engaged in solving problems and writing code in the Wolfram Language.

In 2017/18 Matthew and Rick are teaching a new course, “Computational Laboratory” in which students will use embedded systems, and sensors to collect and analyze data on their projects in Robotics, Rocketry, Horticulture, Marketing and Engineering, among many others.