Skip to content

3. Field Activity 03

Creating the fidget out of Tinkercad Codeblocks for Module 2 Week 1 gave me the idea for this Module’s Field Activity. I had students practice programming by creating a decorative object using Tinkercad Codeblocks, or embroidering something using either TurtleStitch or the PEmbroider library for processing, or create an image in usual Processing, but use it for lasercutting. here is the Scopes Lesson Plan link. I also reflected on it in this blog post.

Additionally, we listened to guest speakers talk about AI, which I took notes on in this blog post

Feedback

I had hoped students would be excited by their physical objects, but most were most interested in just getting done exactly wha they needed to and nothing more (I could tell this by the number of times I was asked “Is this enough” and that they would groan when I’d say “Really I mean for you to be repeating something here”). I had a hard time motivating the whole repeating idea – in the future I will show students tiling patterns on mosques and such to encourage them to think more this way. I also think January is a rough time, for student excitement generally.

The questions students asked while working on this project made it very clear that the students still had a lot of work to do in understanding how to create for loops, and understanding what each argument sent to the functions we’ve been using all year do (See also: January is hard). I’ve built the next few assignments to help students review the content. By the end of the project students did seem more able to recognize when loops were useful and became better at writing them regardless of which tool they were using.

Students did catch the connnections between the Processing language and p5.js that they had been using, and the repeating things in the Tinkercad Codeblocks or Turtlestitch. Moving out of the Processing language that requires a lot of syntax definitely seemed to help them understand the concept of loops. It seemed like pulling out the concepts in this manner helped them understand it.

Also, when you are working with machines and not just what is on the computer, any one of the physical components can go wrong. I spent a lot of time debugging the embroidery machine - making sure we set up the thread correctly, trying to get the fabric on the embroidery hoop to be taught. In general this was good for the students to see, however; they watched me debug something I didn’t know, and were often left watching videos and figuring things out for themselves.

When working on a project with a physical component like this, students ended at wildly different times. The first student to complete something using a given digital fabrication example (the embroidery machine, the 3D printer, etc.) would often help later people, but it still led to a lot of downtime for some students. In the last day of the project as some were commenting while others were printing, and I had a few more just play a review game. I also gave early finishers some time to relax - they had put in the work, and did have other work to do.

While thiis process was frustrating, in the end students were generally pleased with the things they created, and seemed to have some fun with it once the objects themselves existed. “Programming makes things” and “Programming can be fun” are two of my main learning goals of literally everything I do with my students, so I would count this activity a success.

Reflection

  1. Collaboration: Reflect on how you worked with colleagues or FLA participants during the Field Activity. What steps did you take to involve collaborators? How did this collaboration influence the outcome of your final lesson plan?

Contrary to most of the poeple in this program, I am more comfortable with the code than with any of the different forms of digital fabrication. Jaymes helped me understand how to use the embroidery machine, and helped my students debug why their objects weren’t printing so that I could focus on helping students with their code. Knowing that I have someone easily available to me that can help with all the technical difficulties and digital fabrication setup made doing this project seem much more appealing.

  1. Instructional Challenges: What challenges did you encounter or anticipate while teaching this lesson? How did you address or plan to address them? Were there, or do you anticipate, specific areas where students might struggle with the technology or content?

See “feedback” above - there were several challenges around timing the students to be in anywhere near similar places and the machines often required debugging. Any sort of technology class should embrace any sort of required debugging as helping students learn an essential part of the process, and a little messiness around who is done when is ok as long as the expectations are clear.

  1. Diversity: How will you accommodate and support students with diverse learning levels, perspectives, and cultural backgrounds in this lesson?

I gave the students a lot of choice in this lesson. They chose whether to create an image and lasercut it, create a 3D Printed object in Tinkercad Codeblocks, or use the PEmbroider library for Processing or Turtlestitch to make an embroidered object. This helped ensure they were building something they had some level of interest in to begin with. I let them use any pattern they were interested in - several made hearts, or other images they liked such as Spiderman, others built fidgets themselves, or just a really neat decoration. I did not explicitly have students look at repeated patterns with cultural significance, though I perhaps should have and will when I run it in the future.

I also let the students work at multiple levels. The most important thing was for the student to make something they wanted to make; I did not encourage particular software because it was easier or harders. However, I did vary how much help I would give a student - walking some students through each step while allowing others to create something almost entirely independently. I also encouraged some to try something particularly different such as the Tinkercad Codeblocks while encouraging others to stick with something they were more comfortable creating.

  1. Teacher Growth: How has this experience influenced your approach to integrating technology, such as digital fabrication, into your teaching? What new skills or strategies have you developed as a result?

In all my previous Computer Science teaching, I have kept the students on the computers. I have been concerned about budget, but also concerned that debugging how to thread an embroidery machine was not actively part of what I was teaching. At my current school, we already have the machines. Students are familiar with using the machines because their freshman year is a course on Digital Fabrication. Working on this project, watching the students debug the machines and see how that connected to the code they were writing helped me appreciate that debugging physical objects that connect to digital programs can also be a huge part of computing, and make the computing feel more real.

Practical skills-wise, I’ve also learned a lot about different kinds of embroidery stitching, and how to make the embroidery machine work, and a couple of different things that might go wrong on the 3D printer - a non-flat object requires a raft, for instance.

This project also made me less timid about teaching students in one language and moving to another for a similar concept. Students were able to recognize the same concepts in both languages, and it helped cement the concept over the syntax, which is most important part.

  1. AI Usage: If you used AI, reflect on how it can be leveraged to enhance your teaching. How does collaborating with AI compare to collaborating with a colleague?

I did not use AI for this lesson, and in fact while I often let the students use Large Language Models to help them create, debug, and understand code, this particular project was acting as an assessment of how well they understood loops, so I encouraged them not to use AI for it either.

Code Example

Here is some example code from one of my students, who used PEmbroider to make a grid of cats from an image uploaded from the computer.

// Test program for the PEmbroider library for Processing:
// Filling a pre-loaded "image" using various hatching methods.
import processing.embroider.*;
PEmbroiderGraphics E;

PImage cat;
 void setup() {
  size(900, 900); 

  cat = loadImage("catcliparttest.png");
  cat.resize(350, 350);

  // Invert the image colors
  cat.loadPixels();
  for (int i = 0; i < cat.pixels.length; i++) {
    color c = cat.pixels[i];
    float r = 255 - red(c);
    float g = 255 - green(c);
    float b = 255 - blue(c);
    cat.pixels[i] = color(r, g, b);
  }
  cat.updatePixels();

  // Initialize PEmbroiderGraphics
  E = new PEmbroiderGraphics(this, 500, 500);
  String outputFilePath = sketchPath("PEmbroider_bitmap_image_1.vp3");
  E.setPath(outputFilePath);

  // Set up the PEmbroider object
  E.beginDraw();
  E.clear();
  E.fill(0, 0, 0);
  E.noStroke();

  // Parallel hatch 
  E.setStitch(5, 30, 0); 
  E.hatchMode(PEmbroiderGraphics.PARALLEL);
  E.hatchAngleDeg(15);
  E.hatchSpacing(1.5);

  // Loop through grid positions and embroider each cat image
  for (int y = 0; y < 780; y = y + 260) {
    for (int x = 0; x < 780; x = x + 260) {
      // Embroider the image at each grid position
      E.image(cat, x, y);
    }
  }

  // Optimize the embroidery
  E.optimize();   
  E.visualize();
  // E.endDraw();  // Uncomment to write out the embroidery file
  E.printStats();  // Display stats
}

See the photos on the Scopes lesson