Programming at the Hardware/Software Interface is a textbook appropriate for a Computer Organization or introductory Computer Systems course for undergraduate computer science or software engineering students. Stripping away many of the computing abstractions that students and professionals rely upon, this publication introduces students to the underlying realities of computer systems that can introduce unexpected and unwelcome surprises into software designed for an idealized machine. From data representation and assembly language to concurrency and hardware design concepts, students will explore the low-level world of computer systems. The textbook contains material that can be covered in a 15-week academic semester. Each chapter, after motivating the topic, guides students through the topic, provides randomized practice problems to allow students to check their understanding, and includes “reality checks” that relate the chapter’s topic to real-world examples.