Exploring Computational Thinking Through Making

This was a series of projects for an elective taken at the University of Michigan School of Information. Through making and tinkering activities, I practiced the 4 key skills in computational thinking: decomposition, abstraction, pattern recognition and algorithmic design.


Programming Microcontrollers

I used the SparkFun RedBoard Qwiic as a beginner-friendly microcontroller platform for electronics prototyping. I also learned to program the board with the Arduino IDE.

My first project was using a potentiometer to control how fast an LED blinks. The potentiometer is a variable resistor that controls the voltage in the circuit. The amount that the knob was turned was mapped to the delay between each time the light turned on and off.

Potentiometer as LED blinking speed control

With a good understanding of this concept, I was able to adapt the potentiometer to be an LED color control and a motion control by programming code snippets reading input from the potentiometer in different ways.

Potentiometer as LED color control
Potentiometer as motion control

LCD Display gone wrong

One of the projects was to program the board in the Arduino IDE to print text on an LCD display. Unfortunately, my display did not come with the pre-soldered pins that allowed me to interface it with the breadboard.

LCD display with pre-soldered I/O pins
My LCD display came without pre-soldered I/O pins 

The general I/O pins connect the display to the circuit and read input and output signals. I just needed something conductive to do this, so I used one jumpwire on each pin instead. Although I wasn’t able to finish this project because I ran out of jumper wires, it was a productive debugging experience that pushed me to think creatively with the limited materials at hand.

Simon Says

Simon Says was the most complex in terms of both electronics and programming. It used LEDs to flash a pattern which the player must remember and repeat using 4 color-coded buttons before time ran out. This was a complex circuit where multiple components including light (LEDs), sound (piezo buzzer), controls (potentiometer, buttons), and many jumper wires came together. I made sure to assemble and check each component and part of the circuit before moving on to the next.

The code also involved for loops, conditional statements, custom functions and the RedBoard’s built-in clock. Understanding the logic in the code was essential for me to understand how the game worked. Fortunately, my experience in a previous data-oriented (Python) programming course eased the comprehension especially of edge and error cases.

Paper Prototyping

Prompt:

“ I love plants. I have approximately fifteen plants in my home that I need to care for. Unfortunately, I am a forgetful person. Please design an app user interface that will help me keep my plants alive. "

I started by gathering information from the user (my professor) about their daily routine and feelings and expectations toward taking care of their plants. I intended to narrow down the scope and focus on collecting more details about a specific user goal. My problem statement was defined as follows:

Plant owners with a busy schedule may feel stressed and even guilty when their plants are not properly taken care of. They need daily reminders for the specific types of care their plants need.

My paper prototype covers the flow from receiving a push notification, to checking the type of need needed for each plant, and marking the reminder as complete. I focused on ‘today’ to bring in focus and offer a moment to celebrate the accomplishment when all reminders of the day are complete. I also added the option to snooze the reminders to provide more flexibility in a tight schedule (and a little room for procrastination tbh).

IMG_5664.jpg

Closing

From having never seen a breadboard to building circuits to solve information problems, this was a very interesting course to take. Progressing from simple to complex projects allowed me to gradually break into the concepts and feel more confident about making things work and debugging independently. I look forward to working with more complex microcontrollers and circuits as prototyping tools in the future.

Thank you Dr. Garcia and everyone in the class for a fun and engaging semester!