Reaction-diffusion theory was first proposed by Alan Turing as a framework for self-organized pattern formation. Turing’s theory provides a model by which complex self-organized patterns form from simple reactions of two diffusible components. This model is called a reaction-diffusion model. Turing theory has many applications in the life sciences, it has been used to explain for example the formation of branching patterns in lung development and digital pattern in limb development. In this thesis, a reaction-diffusion model with Schnakenberg reaction kinetics is reviewed. The conditions for Turing pattern formation are presented. In particular, we discuss how patterns can be excited in bulk and surfaces of arbitrary domains. Numerical approximation of the Schnakenberg reaction-diffusion model is obtained by using the finite element method for spatial discretization and an implicit-explicit time-stepping scheme for time discretization. Numerical simulations of the discretized model are done in C++ using an open source library called Differential Equations Analysis Libraries (deal.II). We present numerical simulations on the bulk of arbitrary three-dimensional domains and also on arbitrary surfaces in three-dimensional space. We verify the numerical simulation results by using analytical solutions obtained from linear stability theory. Parameters for the Schnakenberg reaction-diffusion model are varied in order to excite different patterns on arbitrary bulk and surface domains.