This document provides a friendly introduction to generative adversarial networks (GANs). It explains the general idea of GANs which involve a discriminator and generator playing a game, with the goal of the generator being to generate fake images that cannot be distinguished from real images by the discriminator. The document then walks through building the simplest GAN with a 1-layer neural network discriminator and generator. It explains how to train the GAN by having the discriminator and generator update through backpropagation to minimize their loss functions. Code examples are provided to demonstrate how to implement the GAN.