This document provides an introduction to G-code programming for computer numerical control (CNC) machining. It reviews coordinate geometry basics, common terminology, and the G and M code programming languages. Examples of G and M code blocks are provided, along with explanations of linear and circular interpolation, absolute and incremental positioning, canned cycles, cutter compensation, and more. The document concludes with examples of complete NC programs for two practice parts.