Skip to content

About the SCB

mike-snhu edited this page Oct 25, 2026 · 2 revisions

The STEM Computing Baseline (SCB) is a standardized set of tools and packages designed to provide a consistent technical environment for STEM-related computing tasks across Windows, MacOS, and Linux. This document outlines the components of the SCB and provides guidance for setting up a consistent development environment across different operating systems.

Table of Contents

  1. Install the SCB
  2. System Package Manager
  3. System-Specific Packages
  4. Scripting Languages
  5. Source Control Management
  6. Documentation Format
  7. Extensible Code Editor
  8. Ideation and Planning
  9. More About the SCB

Install the SCB

To install and configure the STEM Computing Baseline (SCB), select your operating system and follow the corresponding instructions.

System Package Manager

A system package manager installs, updates, and removes software packages and manages their dependencies. The SCB uses command-line package managers to simplify software installation and maintenance across operating systems.

Windows

WinGet is Microsoft's command-line package manager for Windows. It installs, updates, and removes software from configured package sources. WinGet is distributed through Windows App Installer and is available on supported versions of Windows 10 and Windows 11.

macOS

Homebrew is a third-party package manager for macOS. It installs and manages command-line tools, applications, and supporting libraries that may not be included with the operating system. Homebrew must be installed separately on macOS.

Linux

Advanced Package Tool (APT) is the package management system used by Debian-based Linux distributions, including Ubuntu. It installs, updates, and removes software from configured package repositories while managing package dependencies. The SCB uses apt for interactive package management and apt-get for automated installation scripts.

System-Specific Packages

System-specific packages provide additional tools and dependencies needed to support the SCB on different operating systems. These packages may not be installed by default, and some are required only for particular development tasks.

Windows-Specific Packages

  • Python Install Manager (PIM): Installs and manages Python runtime versions on Windows. It supports selecting and maintaining Python installations without manually managing separate installers.

  • Git for Windows: Provides Git and Git Bash for Windows. Git Bash supplies a Bash-compatible shell environment and common Unix-style command-line utilities, supporting shell scripts and Git workflows on Windows.

  • Windows Terminal (optional): Provides a terminal application with multiple tabs, panes, and configurable profiles for PowerShell, Command Prompt, Git Bash, and other command-line environments.

macOS-Specific Packages

  • Command Line Tools for Xcode: Provides development utilities, compilers, and system libraries needed to build software and install packages that require compilation. It includes tools such as Git and Clang without requiring the full Xcode application.

  • GNU Bash (Homebrew) (conditional): Provides a newer version of Bash than the version included with macOS. It supports modern Bash scripting features that may not be available in the operating system's bundled Bash interpreter.

Linux-Specific Packages

The following packages apply to Debian-based distributions, including Ubuntu.

  • Python Virtual Environment Support (python3-venv): Enables Python to create isolated virtual environments for installing and managing project-specific packages without modifying the system-managed Python environment.

  • Data Transfer and Archive Utilities (curl, unzip): Provide command-line tools for downloading files from remote servers and extracting ZIP archives. These utilities support automated software installation and resource management.

  • Certificate Authorities (ca-certificates): Provides trusted certificate authorities used to verify secure TLS connections, supporting reliable downloads and communication with HTTPS services.

  • Development Build Tools (build-essential) (optional): Provides essential compilation tools, including GCC, G++, and Make. These tools support building software from source code and installing dependencies that require native compilation.

Scripting Languages

Scripting languages allow users to execute commands, automate repetitive tasks, manage files and software, and process data. The SCB includes three cross-platform scripting languages: GNU Bash, PowerShell, and Python. Each provides different capabilities for system management, task automation, and working with data.

GNU Bash

GNU Bash is a command-line shell and scripting language commonly used for system administration and automation on Unix-like operating systems. It is particularly useful for executing operating-system commands, connecting command-line tools through pipelines, and automating tasks with shell scripts. Bash is widely available on Linux and macOS and is available on Windows through Git for Windows and the Windows Subsystem for Linux (WSL).

PowerShell

PowerShell is a cross-platform command-line shell, scripting language, and configuration management framework developed by Microsoft. Unlike traditional text-based shells, PowerShell uses an object-based pipeline, allowing commands to exchange structured data. It is particularly useful for managing operating-system resources, configuring software, and automating administrative tasks. PowerShell 7+ runs on Windows, macOS, and Linux.

Python

Python is a general-purpose programming language used in the SCB primarily for task automation. Its readable syntax and extensive library ecosystem make it particularly useful for processing structured data, manipulating files, interacting with application programming interfaces (APIs), and developing automation tools that require more complex program logic. Python runs on Windows, macOS, and Linux.

Source Control Management

Source control management (SCM) tools track changes to files over time, maintain a history of revisions, and support collaboration on software projects.

Git is a distributed version control system that tracks changes to files and maintains a history of revisions. It allows users to create branches, compare versions, restore earlier revisions, and merge changes from different contributors. Git operates locally without requiring an internet connection and supports synchronization with remote repositories hosted on services such as GitHub. Git is available for Windows, macOS, and Linux.

GitHub is a cloud-based platform for hosting Git repositories and collaborating on software projects. It provides tools for managing repositories, reviewing proposed changes through pull requests, tracking tasks and defects through issues, and automating workflows with GitHub Actions. GitHub is accessible through a web browser and command-line tools, including the GitHub CLI, which enables users to manage GitHub resources directly from a terminal.

Documentation Format

Documentation formats define how information is structured, formatted, and presented. The SCB uses GitHub Flavored Markdown (GFM) to create readable, portable, and version-controlled documentation. Markdown format use plain-text files that can be edited in a code editor and rendered as formatted documents.

Markdown is a lightweight markup language used to create formatted documents using simple, readable plain-text syntax. It supports common document elements such as headings, paragraphs, lists, links, images, and code blocks without requiring specialized editing software. Markdown files are plain text and typically use the .md extension. They can be viewed and edited on Windows, macOS, Linux, and Web.

GitHub Flavored Markdown (GFM) is a standardized dialect of Markdown based on CommonMark, with additional syntax for tables, task lists, strikethrough text, and automatic URL linking. GFM is particularly useful for creating repository documentation, README files, project instructions, and task checklists that render directly on GitHub. It maintains Markdown's plain-text readability while providing additional formatting features for technical documentation and collaboration.

Extensible Code Editor

An extensible code editor provides tools for creating, viewing, and modifying source code and other text-based files. Extensions allow users to customize the editor with support for different programming languages, file formats, and development tools.

Visual Studio Code

Visual Studio Code (VS Code) is a free, cross-platform code editor developed by Microsoft. It provides syntax highlighting, code completion, an integrated terminal, debugging capabilities, and built-in Git integration. Its extensive extension ecosystem supports additional programming languages, linters, formatters, diagrams, and documentation tools. VS Code is available for Windows, macOS, Linux, and the web.

Extensions

Language Support

  • PowerShell: ms-vscode.powershell
  • Python:
    • Python Extension: ms-python.python
    • Pylance: ms-python.vscode-pylance

Code and Documentation Quality

  • Python Linter and Formatter (Ruff): charliermarsh.ruff
  • Code Spell Checker: streetsidesoftware.code-spell-checker
  • Markdown Linter: DavidAnson.vscode-markdownlint

Diagramming and Visualization

  • Visual Diagram Editor (Draw.io): hediet.vscode-drawio

Markdown Authoring and Export

  • GitHub Markdown Preview: bierner.github-markdown-preview
  • Markdown All in One: yzhang.markdown-all-in-one
  • Markdown to PDF: yzane.markdown-pdf

Ideation and Planning

Virtualization and Containers

Virtualization tools create isolated computing environments for software development, testing, and system administration. Containers package applications and their dependencies into lightweight environments, while virtual machines (VMs) run complete guest operating systems with virtualized hardware. These technologies support reproducible development environments, allow multiple isolated systems to run on one computer, and reduce differences between computing environments.

The SCB is evaluating the following cross-platform tools for potential use in STEM courses. These tools are not currently required components of the SCB.

Docker

Docker is a containerization platform used to package, distribute, and run applications with their software dependencies. Its primary advantage is creating lightweight, reproducible application environments without requiring a separate guest operating system for each container. Docker Compose allows users to define and manage collections of interconnected containers through a single YAML configuration file. Docker configurations can be maintained in GitHub repositories, while prebuilt container images can be distributed through the GitHub Container Registry (GHCR). Docker supports Windows, macOS, and Linux.

Windows Subsystem for Linux (WSL 2)

WSL 2 is a compatibility layer for running Linux binary executables natively on Windows 10 and later. Its primary advantage is providing a full Linux kernel and environment without the overhead of a separate virtual machine. WSL 2 supports multiple Linux distributions, which can be managed through the WSL command-line interface and PowerShell scripts. Course repositories can distribute provisioning scripts, configuration files, and prebuilt .wsl images to recreate consistent Linux environments on Windows systems.

Oracle VirtualBox

Oracle VirtualBox is a general-purpose virtualization platform that runs complete guest operating systems on virtualized hardware. Its primary advantage is supporting operating-system-level learning and testing environments, including different Linux distributions and Windows, subject to host compatibility. VirtualBox provides a graphical management interface and the VBoxManage command-line utility for creating, configuring, and managing collections of VMs, virtual networks, and snapshots. VM configurations and provisioning scripts can be distributed through GitHub repositories, while portable virtual appliances can be exported separately in OVF or OVA formats. VirtualBox supports Windows, macOS, and Linux hosts, with guest compatibility depending on the host processor architecture.

Resource Requirements and Course Distribution

Containers generally require fewer computing resources than full virtual machines because they share an operating-system kernel rather than running a separate kernel for each environment. Actual resource requirements depend on the software being executed, the number of concurrent environments, and the host operating system.

Tool Relative Runtime Overhead Managing Multiple Environments GitHub Distribution
Docker Low per container; additional VM overhead on Windows and macOS Easy using Docker Compose Dockerfiles, Compose files, and container images through GHCR
WSL 2 Low to moderate; Linux distributions share a lightweight VM and kernel Multiple independent distributions managed through WSL CLI and PowerShell scripts Provisioning scripts, configuration files, and prebuilt .wsl images through GitHub Releases
VirtualBox Moderate to high; separate guest OS for each VM GUI and CLI management; additional tools can coordinate collections VM configuration and provisioning files; OVA/OVF appliances distributed separately

Note: WSL 2 is Windows-specific. Its shared-kernel architecture generally makes it more resource-efficient than running separate full Ubuntu VMs, but actual resource consumption depends on the number of distributions, their workloads, and memory allocation.

Course repositories should generally distribute small, text-based configuration files and provisioning scripts rather than large VM disk images. This approach supports version control, reduces repository size, and allows environments to be recreated or updated as course requirements change.

More About the SCB

SCB Versioning

SCB minimum versions are derived from the second most recent Ubuntu major release. For example, if the most recent LTS release is Ubuntu 26, the SCB minimum versions would be based on versions used in Ubuntu 24.

The second most recent Ubuntu release is chosen to ensure stability and compatibility, yet still provide security updates and relatively recent features. The most recent release may have new features and changes that are not yet widely adopted or tested, while the second most recent release has had more time for community testing and bug fixes, providing a more reliable foundation for the SCB.

Clone this wiki locally