This document provides an introduction to computer programs and programming. It discusses the basic concepts such as what a program and programming are, and differentiates between compilers, interpreters, and assemblers. It also outlines the typical program development life cycle of analysis, design, implementation, testing, and maintenance. Under design, it describes pseudocode and flowcharts as tools for designing algorithms to solve problems. The document is intended to help readers understand the fundamental concepts of computer programs and programming.