The program provides both a theoretical foundation in computer science, required for continued success in this rapidly changing field, as well as practical experience with current tools and techniques. To achieve these goals, students take courses that span a spectrum of knowledge ranging from theoretical foundations, which enable rigorous analysis of computational problems and solutions, to applied design and engineering methods.