The geometric ideas in computer science, mathematics, engineering, and physics have considerable overlap and students in each of these disciplines will eventually encounter geometric computing problems. The topic is traditionally taught in mathematics departments via geometry courses, and in computer science through computer graphics modules. This text isolates the fundamental topics affecting these disciplines and lies at the intersection of classical geometry and modern computing. The main theme of the book is the definition of coordinate-free geometric software layers for Euclidean, spherical, projective, and oriented-projective geometries. Results are derived from elementary linear algebra and many classical computer graphics problems (including the graphics pipeline) are recast in this new language. Also included is a novel treatment of classical geometric and solid modeling problems. The definition of geometric software layers promotes reuse, speeds up debugging, and prepares the ground for a thorough discussion of advanced topics. Start-up programs are provided for many programming exercises making this an invaluable book for computer science lecturers as well as software developers and researchers in the computer graphics industry.