This course introduces computational fluid dynamics (CFD) using a primarily software-based approach. Following an overview of the key steps involved with CFD, the class reviews the fundamental mathematics that govern fluid dynamics. An overview of governing equation discretization techniques is presented with assignments that involve building custom algorithms to solve simplified CFD problems. CFD essentials such as consistency, stability and convergence are covered in-depth. Several modeling labs are used to build software skill and explore internal and external flows that are largely incompressible and viscous. The final weeks of this class are dedicated to a final project on a student-selected topic. The student will complete an independent laboratory exercise of project.