Method
Flexible
Live-Online
Term
FALL
Units
3.0 QUARTER UNITS
Estimated Cost
$750

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. 

Currently no classes scheduled. Would you like to be notified when a class is available?

This course applies to these programs:

Demo