Learning Linux Course Description
Title: Learning Linux
Length: 15-week semester long course
Audience: High school students
Course Description Quality Score: 91/100 (Excellent)
Prerequisites
- Students must have strong typing skills including the use of the copy/cut and paste commands.
- Students should have access to a Linux terminal shell. Any of the following is acceptable:
- Mac Terminal
- Windows Windows System for Linux (WSL)
- Chromebook in developer mode
- Raspberry Pi (available in classrooms for under $100/student without a monitor) See here for details.
Why This Course
In late September 2025 The Raspberry Pi Foundation announced the Raspberry Pi 500+. Although this is just one announcement in a long line of Raspberry Pi products, the features and performance of the 500+ was stunning. But this was not just for the Do-It-Yourself (DIY) crowd. This was a device that could compete with some of the best desktop computers. And the nice thing about the 500+ was that it had all the hardware ports for connecting it to thousands of sensors and motors to control lab equipment in schools.
However, the 500+ lacked one big component: A really fun book to teach kids how to use the powerful Linux operating system that powered the 500+.
To put this in context, this was just around the time that Anthropic Claude Code Skills were taking off. And Claude Code was build around what core skill? If you guess Linux shell commands you were RIGHT!. In summary, I realized we could combine the need for Linux education with Claude Code to build a really fun world-class textbook targeting high-school students that would empower them with the knowledge they need to use these powerful tools.
Why this Course is Different
If you do a internet search, you can find hundreds of books on UNIX and Linux going back to the 1980s. But many of them are static printed books that are not designed for our TikTok obsessed youth that have the attention span of a gnat. They need fun, engaging and interactive systems that can keep their attention and intelligent textbook interaction points that allow instructors to monitor their progress.
Topics Covered
- UNIX
- UNIX and C
- Portability
- Linux
- Shell
- Startup
- Dot files
- .bashrc
- .zshrc
- Shortcuts
- tab completion
- Fonts and appearance
- Terminal Size
- Automating Startup
- Shell Commands
- Shell Programs
- Command Options
- grep
- regular expressions
- The Shell Pipe
- Input
- Output
- wc
- sort
- JSON
- jc
- Markdown
- network
- ping
- traceroute
- wifi
- curl
- wget
- version info
- shutdown
- text editing
- nano
- vi and vim
- find
- locate
- awk
- sed
- compression
- tar
- zip
- gzip
- diff
- cron
- history
- Design Philosophy
- Small Modular Tools
- Basic Commands
- Navigation
- Home Directory
- Environment Variables
- Ownership
- Permissions
- Directories
- File Systems
- Mounting Devices
- USB Drives
- USB Ports
- PATH
- PATH Order
- Override
- Alias
- Whereis
- Which
- Processes
- ps
- kill
- Debugging
- Installing
- Updates
- apt
- brew
- SSH
- remote login
- Firewalls
- sudo
- Shell prompts
- Customizing Terminal
- Terminal Themes
- Terminal in VSCode
- Terminal in Thonny
- Desktops
- Linux Versions
- Debian
- Real Time
- Ubuntu
- UNIX System V
- Berkley Distribution
- BSD Releases
- Virtual Memory
- Tuning UNIX
- Flash Drives
- Swap Drives
- top
- measuring performance
- CPU benchmarks
- Disk benchmarks
- GPU
- GPU benchmarks
- Adding a GPU to the Pi
- GPU drivers
- Webcams
- Adding a camera to a Pi
- Bluetooth
- printers
- displays
- HDMI ports
- Pi HDMI Micro Port
- Multiple Displays
- Display RAM
- Sounds
- Easter Eggs
- NVIDIA drivers on Pi
- Low Cost Linux
- Raspberry Pi Zero
- Linux in STEP
- Linux in Maker Spaces
- 40-pin port on the Pi
- Voltage Pins
- External Power
- Data Pins
- Monitoring Current
- LED Strip
- Motors
- Servos
- IoT
- Linux at Home
- Monitoring Your Home
- Docker
- Spinning up Linux on the Cloud
- Terraform
- Python
- PIP
- Python VMs
- Secrets
- GitHub
- git clone
- C
- The Future of Linux
- C vs. RUST
- Final Projects
- Web server
- Game Server
- Media Server
- Ad Blocker
- Retro Gaming
- VPN Setup
- VSCode
- Linux Careers
- Network admin
- Linux in Space
- Linux in Cars
Topics Not Covered
- Linux Internals
- Compiling Linux
- Device Drivers
- Linux Research
- Advanced RUST
- Advanced C
Learning Objectives
The following learning objectives are classified according to Bloom's Revised Taxonomy (Anderson and Krathwohl, 2001), organized from lower-order to higher-order cognitive skills.
Remember
By the end of this course, students will be able to:
- Recall the historical origins of UNIX and its relationship to the C programming language
- List common Linux shell commands (ls, cd, pwd, cp, mv, rm, mkdir, cat, grep, chmod)
- Identify the components of the Linux file system hierarchy
- Recognize the purpose of environment variables such as PATH and HOME
- Name the major Linux distributions (Debian, Ubuntu, BSD variants)
Understand
By the end of this course, students will be able to:
- Explain the UNIX design philosophy of small, modular tools
- Describe how the shell pipe connects command input and output
- Summarize the difference between file ownership and permissions
- Interpret file permission notation (rwx, numeric modes)
- Explain the purpose of package managers (apt, brew) in system maintenance
- Describe the role of processes and how they are managed in Linux
Apply
By the end of this course, students will be able to:
- Navigate the Linux file system using command-line tools
- Execute shell commands with appropriate options and arguments
- Set and modify environment variables and aliases
- Install, update, and remove software using package managers
- Mount and unmount USB drives and external storage devices
- Use process management commands (ps, top, kill) to monitor and control running programs
- Clone repositories from GitHub using git commands
Analyze
By the end of this course, students will be able to:
- Diagnose permission errors and determine appropriate solutions
- Analyze system performance using benchmarking tools (CPU, disk, GPU)
- Compare different Linux distributions and their use cases
- Interpret system resource usage from tools like top
- Troubleshoot PATH-related issues when commands are not found
- Examine the differences between C and Rust for systems programming
Evaluate
By the end of this course, students will be able to:
- Assess appropriate permission settings for security and functionality
- Evaluate which Linux distribution is suitable for a given application
- Judge the trade-offs between different hardware configurations (Pi Zero vs Pi 500+)
- Critique shell scripts for efficiency and best practices
- Assess system performance bottlenecks and recommend improvements
Create
By the end of this course, students will be able to:
- Write shell scripts that automate repetitive tasks
- Design a home monitoring system using IoT sensors and a Raspberry Pi
- Construct a development environment with Python, virtual environments, and version control
- Build Docker containers to deploy Linux applications
- Develop projects that interface with the Raspberry Pi GPIO pins (LEDs, motors, servos)
- Compose infrastructure-as-code configurations using Terraform for cloud Linux instances