A collection of progressively more advanced systems programming projects written in C on Linux. The goal of this repository is to build a strong foundation in Linux systems programming, embedded software concepts, and flight software architecture, culminating in applications built with NASA's Core Flight System (cFS).
This portfolio focuses on developing practical experience with:
- C programming
- Linux systems programming
- Processes and threads
- Inter-process communication (IPC)
- Networking
- Daemon development
- Unit testing
- Telemetry and command systems
- Embedded software concepts
- Real-time software design
- NASA Core Flight System (cFS)
Each project builds upon the previous one, introducing a new systems programming concept while reinforcing earlier material.
| Project | Focus | Major Concepts |
|---|---|---|
| 01. Linux System Monitor | Linux Fundamentals | /proc, file I/O, parsing, Makefiles, unit testing |
| 02. Health Monitor Daemon | Long-running Services | Daemons, signals, logging, configuration, systemd |
| 03. Multithreaded Task Scheduler | Concurrency | POSIX threads, mutexes, condition variables, timing |
| 04. Message Queue Library | Inter-process Communication | Producer/consumer, thread-safe queues, synchronization |
| 05. Telemetry & Command Server | Networking | TCP sockets, serialization, command protocols |
| 06. Mission Control Dashboard | System Integration | Telemetry visualization, command interface, monitoring |
| 07. Software Bus | Modular Architecture | Publish/subscribe messaging, decoupled applications |
| 08. Spacecraft Simulator | Embedded Systems | Modular subsystems, telemetry, command handling |
| 09. RTOS Concepts Lab | Real-Time Software | State machines, periodic tasks, watchdogs, fault management |
| 10. NASA cFS Application Suite | Flight Software | cFS applications, Software Bus, telemetry, command processing |
systems-portfolio/
│
├── 01-linux-system-monitor/
├── 02-health-monitor-daemon/
├── 03-multithreaded-task-scheduler/
├── 04-message-queue-library/
├── 05-telemetry-command-server/
├── 06-mission-control-dashboard/
├── 07-software-bus/
├── 08-spacecraft-simulator/
├── 09-rtos-concepts-lab/
├── 10-nasa-cfs-application-suite/
│
└── docs/
The ultimate objective of this portfolio is to develop the knowledge and practical experience required for roles such as:
- Linux Systems Engineer
- Systems Software Engineer
- Platform Engineer
- Infrastructure Software Engineer
- Ground Systems Software Engineer
- Embedded Software Engineer
- Flight Software Engineer
By the final project, the repository progresses from standalone Linux applications to software architectures inspired by real spacecraft flight software using NASA's Core Flight System (cFS).
- C
- GNU Make
- GCC
- Linux
- POSIX Threads
- TCP/IP Networking
- Git
- Bash
- systemd
- NASA Core Flight System (cFS)
| Project | Status |
|---|---|
| 01. Linux System Monitor | ⬜ Planned |
| 02. Health Monitor Daemon | ⬜ Planned |
| 03. Multithreaded Task Scheduler | ⬜ Planned |
| 04. Message Queue Library | ⬜ Planned |
| 05. Telemetry & Command Server | ⬜ Planned |
| 06. Mission Control Dashboard | ⬜ Planned |
| 07. Software Bus | ⬜ Planned |
| 08. Spacecraft Simulator | ⬜ Planned |
| 09. RTOS Concepts Lab | ⬜ Planned |
| 10. NASA cFS Application Suite | ⬜ Planned |