Get a Raspberry Pi talking to your laptop, and get comfortable writing and running Python before any hardware is involved.
The finished machine is, underneath everything, a Python program reading sensors and driving motors. Before touching a single wire, it's worth being able to write a small program, run it, and read what went wrong when it doesn't work — that skill gets used every single week from here on. We also set up a habit that saves a lot of friction later: the Pi runs headless (no screen of its own), and you write code on your own laptop but run it on the Pi itself, over the network, using VS Code's Remote-SSH.
Install the Raspberry Pi Imager on your laptop. Choose “Raspberry Pi OS (64-bit)”, pick your SD card, then click the gear icon (advanced options) before writing — set a hostname (e.g. skittles.local), enable SSH, and set a username/password. This one dialog is what makes the Pi bootable straight into a network-ready state with no monitor needed.
Insert the SD card, power the Pi on, and give it about a minute. From your laptop, try:
ping skittles.local
Once it responds to ping, connect over SSH:
ssh yourusername@skittles.local
Install VS Code and the “Remote - SSH” extension on your laptop. Use it to open a connection to yourusername@skittles.local. Once connected, open a terminal in VS Code — you are now typing commands that run on the Pi, not your laptop, even though the window is on your screen.
Create hello.py and run it:
print("Hello from the Pi")
name = "Skittles"
print(f"Project: {name}")
Print a multiplication table using a for loop — the same warm-up exercise from the project's own coding playground:
table_of = 3
for counter in range(1, 11):
result = counter * table_of
print(f"{table_of} x {counter} = {result}")
Wrap logic in a function so it can be reused with different inputs:
def double(n):
return n * 2
print(double(7))
print(double(21))
Build a small unit converter that takes a value on the command line and prints the result — the same argparse pattern the colour classifier uses later in the course:
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("--celsius", type=float, required=True)
args = ap.parse_args()
f = args.celsius * 9/5 + 32
print(f"{args.celsius}\u00b0C = {f}\u00b0F")
Real engineers never write code without version control. Initialize a local git repository in your project directory so you can record your progress and easily revert mistakes:
cd ~/skittles
git init
git config user.name "Elliot"
git config user.email "elliot@example.com"
git add .
git commit -m "Week 1: Setup completed and Python basics verified"
git diff will instantly highlight every line you changed, saving hours of guesswork.--unit flag so the script converts either C→F or F→C depending on what's passed in..local resolution is flaky on your network.python3 explicitly — there usually isn't a plain python command.