Windows native
Good fit when: Use this when course commands will run directly on a supported Windows computer and Windows-first software or policy makes a Linux layer undesirable.
Tradeoff: You must use Windows paths and scripts consistently, and the later Linux-container path depends on a supported virtualization backend.
Verify: Check the exact Windows release, architecture, install permission, free resources, and virtualization status.
Windows with WSL 2
Good fit when: Use this when you want Windows desktop applications while course tools, projects, and commands run inside one Linux distribution.
Tradeoff: The project must stay on the Linux side of the boundary; mixing Windows and WSL toolchains against one working copy creates path, performance, and ownership confusion.
Verify: Check WSL 2 support, virtualization permission, available resources, and whether your editor can open the Linux-side project.
macOS
Good fit when: Use this when course commands will run on a supported Mac and its local terminal, desktop applications, and architecture meet your constraints.
Tradeoff: You must identify Intel versus Apple silicon and verify every package and later container image for the matching architecture.
Verify: Check the exact macOS release, chip architecture, install permission, memory, disk, and current Java, Python, and Docker support.
Linux installed locally
Good fit when: Use this when course commands will run on a maintained Linux computer whose distribution, device support, and required applications meet your constraints.
Tradeoff: You own distribution-specific package, permission, service, and device decisions; a derivative distribution is not automatically vendor-tested.
Verify: Check the exact distribution and release, architecture, sudo boundary, resources, and vendor support for every required tool.
Remote or browser-based Linux
Good fit when: Use this when a remote Linux VM or hosted Linux workspace satisfies local hardware, policy, mobility, or access constraints better than a local installation.
Tradeoff: Internet, account access, cost or quota, persistence, SSH or browser connectivity, and later container or Kubernetes support become hard dependencies.
Verify: Check the provider's current billing controls, supported image, resource limits, access path, stop/delete behavior, storage retention, and later container requirements.