Preparing Students for a Technological Future

I’m currently preparing a proposal to create a laboratory of digital fabrication machines–a CNC, a laser, and a vinyl cutter–and one of the questions I’m answering is about how the proposed project would prepare students for a technology-rich future. What you see below is my first response to this prompt. It’s a bit longer than I have space for in the proposal, and probably a bit too philosophical, but before I cut it down I wanted to post this draft because it does a reasonable job of encapsulating my philosophy when it comes to teaching technology:

Preparation for a technology rich future is less about preparing for specific technologies and more about getting students to have a growth mindset with respect to technology. We are living in a truly wonderful moment in history. Technological tools are rapidly expanding what we as individuals can accomplish. They are allowing us to see farther (think about remote sensing like lidar and tomography), collate more information (especially with more and more data becoming publicly available), and create things that push the limits of our imaginations. Indeed, to paraphrase a former student, we are already living in the future.

To prepare students to live and thrive in this ever-evolving present we need to demystify technology and give students the intellectual tools to deal with the rapid change. We can start by letting them peek into the black boxes that our technological devices are rapidly becoming.

We request electronics stations and tool kits not just to build things, but to be able to take them apart and look inside. Students greatly enjoy dissassembling and reassambling computers, for example, which provides younger students a good conceptual understanding of how most modern devices work. This foundation helps when they start building circuits of their own and realize what they really want to do is to control them–making lights blink and turning motors for example–and this is when they will start working with Raspberry Pi computers, Arduino microcontrollers and programming.

As students start to build (and even before really), they naturally start thinking about design. We all have an affinity for the aesthetic. If you’ve ever had the opportunity to see a laser in action, you’ll remember your sense of fascination the first time you saw someone’s design emerging from the raw material right before your eyes. Thus we get into graphic design, computer aided design (CAD) and computer aided manufacturing (CAM) and the digital fabrication machines we propose.

By the time they’re done with this curriculum, we intend that students will have developed an intimate familiarity with the technological world–including the ability to create and design their own, which prepares them for the technological future.

Vegetable Boxes

Harvesting turnip greens out of our vegetable boxes.
Harvesting turnip greens out of our vegetable boxes.

Two years ago we bought a greenhouse. It was aluminum framed with plastic panels. Unfortunately, its profile was not as wind-resistant as it needed to be for our campus. So last semester we built three vegetable boxes and salvaged the plastic panels from the greenhouse to build low-profile cold frames. These turned out quite nicely, and the Middle School’s Student-Run-Business’ Gardening Department have been experimenting with different types of produce.

Assembling the side panel for the cold-frames. The front and top plastic panels were salvaged from our aluminum-framed greenhouse.
Assembling the side panel for the cold-frames. The front and top plastic panels were salvaged from our aluminum-framed greenhouse.
Cilantro growing out of our raised beds with the cold-frames removed.
Cilantro growing out of our raised beds with the cold-frames removed.

The wood for the raised beds and the frames for the cold frames were purchased using funds from a grant by the Whole Kids Foundation and the pieces cut at the TechShop.

A Really Quick Introduction to Programming

With examples using python.

  • Statement: A command given to the computer.
    • Assign a value of -9.8 to a variable called “g”:
    • g = -9.8
    • Print the value of “g” to the screen:
    • print g 
  • Variable: A placeholder name used to record data for later use. In the first statement above, g, is a variable and it is assigned a value of -9.8. Variable names in python start with a letter or underscore “_”. Variables can hold different types of data, for example:
    • strings:
    • x = "hello"
    • Floating point number (aka. a float):
    • x = 9.8
    • Integer:
    • x = 5
    • True/False (aka boolean):
    • x = True 
  • Operations: Statements where some sort of calculation is made:
    • Add two numbers and assign the result to a variable called “y”:
    • y = 3 + 5
    • Divide the value in the variable “y” by 2 and then assign the value to another variable called “z”:
    • z = y / 2
  • Operators: The symbols that tell what operation to do:
    • + – * / are used for addition, subtraction, multiplication, and division respectively
    • ** is used for exponents so 5 squared (52) is:
    • a = 5**2
  • Loops: Tell the computer to do something over and over again. There are different types:
    • “For” loops are good for doing things a set number of times
    • for i in range(5):
      	print i

      results in:

      0
      1
      2
      3
      4
      
  • Logical statements: These test to see if something is True or False and then do different things based on the outcome:
    • Assign a value to a variable called “x”, check to see if the value is greater than 10, and print out a different sentence based on the result:
    • x = 12
      if (x > 10):
      	print "x is greater than 10"
      else:
      	print "x is less than 10"
  • Functions: Chunks of code that someone (maybe even you) wrote that can be referenced via a shortcut:
    • Create a function to calculate the force of gravity at the Earth’s surface if you give it a mass:

      def forceOfGravity(mass):
      	Fg = mass * -9.8
      	return Fg

      Call the function to find the force of gravity acting on a mass of 100 kg and print out the result:

      x = forceOfGravity(100)
      print x

      the result should be:

      -980
  • Classes: A class is like a function that you can assign to a variable and then have it do a lot more stuff.
    • In vpython there is a class called “sphere”. It renders a 3d sphere on the screen. Here we’ll create a sphere, assign it to a variable “ball” and then change one of its built-in properties, the color, from the default (white) to red. (if you are using Glowscript.org then don’t use the first line that imports the visual module).

      from visual import *
      ball = sphere()
      ball.color = color.red

Getting Data into R

One of my students is taking an advanced statistics course–mostly online–and it introduced her to the statistical package R. I’ve been meaning to learn how to use R for a while, so I had her show me how use it. This allowed me to give her a final exam that used some PEW survey data for analysis. (I used the data for the 2013 LGBT survey). These are my notes on getting the PEW data, which is in SPSS format, into R.

Instructions on Getting PEW data into R

Go to the link for the 2013 LGBT survey“>2013 LGBT survey and download the data (you will have to set up an account if you have not used their website before).

  • There should be two files.
    • The .sav file contains the data (in SPSS format)
    • The .docx file contains the metadata (what is metadata?).
  • Load the data into R.
    • To load this data type you will need to let R know that you are importing a foreign data type, so execute the command:
    • > library(foreign)
      
    • To get the file’s name and path execute the command:
    • > file.choose()
      
    • The file.choose() command will give you a long string for the file’s path and name: it should look something like “C:\\Users\…” Copy the name and put it in the following command to read the file (Note 1: I’m naming the data “dataset” but you can call it anything you like; Note 2: The string will look different based on which operating system you use. The one you see below is for Windows):
    • > dataset = read.spss(“C:\\Users\...”)
      
    • To see what’s in the dataset you can use the summary command:
    • > summary(dataset)
      
    • To draw a histogram of the data in column “Q39” (which is the age at which the survey respondents realized they were LGBT) use:
    • > hist(dataset$Q35)
      
    • If you would like to export the column of data labeled “Q39” as a comma delimited file (named “helloQ39Data.csv”) to get it into Excel, use:
    • > write.csv(dataset$Q39, ”helloQ39Data.csv”)
      

This should be enough to get started with R. One problem we encountered was that the R version on Windows was able to produce the histogram of the dataset, while the Mac version was not. I have not had time to look into why, but my guess is that the Windows version is able to screen out the non-numeric values in the dataset while the Mac version is not. But that’s just a guess.

Histogram showing the age at which LGBT respondents first felt that they might be something other than heterosexual.
Histogram showing the age at which LGBT respondents first felt that they might be something other than heterosexual.