Course Description
Formerly "Linux Systems Programming."
EMBD.X420 is an industry-paced Linux systems programming course built for practicing engineers in the Embedded Devices track. Students learn the Linux/POSIX programming model by implementing real tools and services, and by building one integrated project end-to-end over the full 10-week run.
The course project is a custom shell that evolves from a minimal command runner into an AI-enhanced developer tool ("AiShell"). Students use Linux system APIs to implement features week-by-week (files, processes, pipes, signals, threads, sockets) and also implement the surrounding engineering work that makes systems software usable in production: packaging, structured documentation, stable CLI interfaces, and automation.
Naming used in course materials:
- Project/system name: AiShell
- Reference command/binary name used in examples: aishell
A defining characteristic of EMBD.X420 is that AI is not optional. AI-assisted development is required and explicitly taught as a professional workflow to increase productivity, expand scope, and accelerate learning of advanced topics that are difficult to cover formally in a short course (for example grammar-driven parsing and security concepts). Later in the course, students also build for AI by exposing structured command metadata and agent-oriented interfaces (MCP-style patterns) so the evolving shell can be safely and usefully driven via a natural-language interface.
Development is performed on a Linux desktop environment. Students may optionally run or deploy the resulting tools on an embedded Linux target (for example a Raspberry Pi or other embedded Linux device).
Learning Outcomes
At the conclusion of the course, you should be able to
- Implement and explain core Linux/POSIX system programming concepts across file I/O, processes, IPC, signals, threads, and sockets.
- Design a clean command-line tool interface with consistent help, stable flags, and predictable error behavior.
- Build an integrated shell that executes built-in tools and external programs, including pipelines and redirection.
- Package and document a suite of tools with structured metadata and generated documentation.
- Apply an AI-assisted workflow responsibly: planning, implementing, refactoring, debugging, and verifying systems code under time constraints.
- Expose structured tool metadata and agent-facing interfaces so an AI assistant can safely discover capabilities and propose actions.
Topics Include
- Command-line interface design: consistent flags, help text, and option parsing.
- Files and directories: file I/O, metadata, directory traversal, permissions.
- Processes: fork/exec, environment, exit status, process lifecycle.
- Pipelines and redirection: file descriptors, pipes, I/O routing, error handling.
- Signals: practical signal handling patterns for process management.
- Threads: pthread fundamentals, synchronization, and safe shared state.
- Networking: socket programming for client/server communication.
- Packaging and documentation: command metadata, generated docs, versioning, distribution concepts.
- Debugging and verification: reproducible builds, targeted tests, and diagnostic tools.
- AI-assisted systems engineering: prompt discipline, refactoring workflows, test generation, and verification.
- AI integration: structured command catalogs and agent-oriented interfaces (MCP-style concepts) enabling a safe natural-language mode.
Note
Each weekly session is three hours in duration. Approximately one hour of class time will be devoted to student demos of weekly progress (oral, slide deck, or recorded video). The remaining two hours will focus on new theory, guided design discussion, and an in-class implementation kickoff. Students will leave each session with a clear milestone and acceptance checks that define "done" for that week.
Additional Information
AI* - This course requires AI to be used as a tool in order to mirror modern engineering practice: higher throughput, broader scope, and faster iteration cycles. Students will use AI to accelerate implementation, explore unfamiliar technical areas efficiently (e.g., grammar-driven parsing and security concepts), and improve code quality via structured review and test-driven verification. AI is also part of the product. As the shell evolves into AiShell, students will implement structured command metadata and agent-facing interfaces (MCP-style patterns) that enable an AI assistant to discover capabilities, propose actions, and improve the user experience through natural-language interaction, while maintaining explicit safety controls.
Skills Needed:
Comfortable C programming on Linux (no Windows environment for this course), basic command-line familiarity (editing files, compiling, running programs), and Python familiarity is helpful (for automation and agent/client examples) but not strictly required.
- Flexible Attend in person or via Zoom at scheduled times.
| Date | Start Time | End Time | Meeting Type | Location |
|---|---|---|---|---|
| Fri, 09-25-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 10-02-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 10-09-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 10-16-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 10-23-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 10-30-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 11-06-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 11-13-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 11-20-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 12-04-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
| Fri, 12-11-2026 | 6:00pm | 9:00pm | Flexible | SANTA CLARA / REMOTE |
This class meets simultaneously in a classroom and remotely via Zoom. Students are expected to attend and participate in the course, either in-person or remotely, during the days and times that are specified on the course schedule. Students attending remotely are also strongly encouraged to have their cameras on to get the most out of the remote learning experience. Students attending the class in-person are expected to bring a laptop to each class meeting.
No meeting on November 27, 2026. One "No meeting" date TBD. To see all meeting dates, click "Full Schedule" below.
You will be granted access in Canvas to your course site and course materials approximately 24 hours prior to the published start date of the course.
Required Tools and Materials: Students are expected to install or have access to Linux Operating System version 7, or higher (version 9 is preferred) on their home computers. Options include VMWare, VirtualBox, LiveCD, disk partition or separate drive or an embedded Linux system such as a Raspberry Pi.
This course applies to these programs: