This document describes a systems programming course and hardware lab component for a computer architecture course. The systems programming course consolidates programming skills from core courses and focuses on how programs interact with the operating system rather than OS internals. Students write large programs using tools like IDEs and source control. Topics include memory layout, compilers, libraries, scripting languages, processes, threads, and networking. The hardware lab teaches programming embedded systems through hands-on projects using a PIC18 microcontroller kit. Students write assembly and C programs for the PIC18 using an IDE and download them via a programmer.