Computer science (CS) departments need to provide education and training in the latest technologies used in the workplace, which these days means the cloud and related technologies like virtualization. However, most universities don’t have the resources to build out new infrastructure to support these technologies, and the pace of change is so rapid that keeping up with the latest platforms, tools and languages is almost impossible.
At City College of New York (CCNY), the faculty wanted to provide students with hands on experience with virtualization, containers and other cloud technologies, which were not well addressed in their current textbooks and other course materials. CCNY needed a new strategy that would allow it to keep pace with the latest developments in computing in a way that was both affordable and practical.
“Many CS programs tend to be rather theoretical and traditional in their approaches to core data structures, algorithms and operating systems,” says Peter Barnett, Adjunct Associate Computer Science professor at CCNY. “It’s important to get students to ‘bend their minds outward.’ We need to provide a visionary education for students to be well-rounded computer scientists.”
Building a comprehensive CS education with the help of Google Cloud Platform
Barnett was referred to Google Cloud Platform (GCP) Education Grants by Lindsay Siegel, executive director of the Zahn Innovation Center, an incubator at CCNY that includes a startup bootcamp, mentorship, pro-bono services and rapid prototyping facilities.
When Barnett first introduced GCP to his class, he gave his students an exercise to get them thinking about how cloud platforms implement features of traditional operating systems and application servers. They were asked to consider the question “Where are you?”—a container or virtual machine? How can you tell if you’re on a particular server or a cluster of distributed machines?
Students were given the choice of working with GCP or another cloud technology provider. For the many who chose GCP, Barnett said they found the tutorials intuitive, making it easy to begin importing data and building applications. They had support from the GCP team and from CCNY’s own professors if they ran into any problems getting projects up and running.
Some students worked with Google App Engine and explored how containers worked, while others chose one of the tutorials for building an app in Google Compute Engine. All the students figured out how to explore their virtual machine (VM) or container environments using Linux commands, and explored their database backends with SQL commands.
Encouraging students to think like engineers
By immersing themselves in the cloud platform, students were encouraged to think conceptually about the cloud and to understand that, even in the cloud, they are still using actual hardware. They read articles, watched tutorials and experimented with what they could do inside and outside of containers. They took note of memory and CPU usage and learned about how virtual storage is provided and how their IP addresses are obtained.
Three students—Nissan, James and Michael—went beyond the minimum requirements of creating a sample application. “They imported their own repositories and built their own applications. It worked nicely, and they came away with a good impression of how Google operates as a working environment,” Barnett says.
Understanding why and how
When students are encouraged to ask their own questions, they discover far more about a topic. During some of their exercises, students noted how long an application took to respond based on its location—the U.K. or the U.S. This required them to think further about where the physical compute resources were located. One student implemented GCP’s MySQL database in his Cloud project, and explored it to understand where the system files were stored.
Barnett encouraged his class to learn about the cloud technologies that most interested them. Some students explored using Kubernetes to manage containers, while others experimented with load balancing in MongoDB. Students then shared their experiences with one another to better understand a range of environments.
"Students aren’t going to be working on hard metal servers. The cloud isn’t just the future; it’s the present."Peter Barnett, Adjunct Associate Computer Science Professor, City College of New York
Beyond the demo
Students in Professor Barnett’s Senior Project capstone course at CCNY are currently using GCP to implement the backend portion of serious software projects with significant scientific, social and entrepreneurial potential.
His five teams’ projects include: using machine learning to advance the optical character recognition of handwriting; assisting trainers, physical therapists and their clients in developing and maintaining correct form in exercise; enhancing patent search using content analytics combined with machine learning; interior mapping of subway stations and other public places to assist visually impaired people navigate the spaces; and generating quasi-random music with AI that changes in response to user feedback.
Most of these projects use AI in the form of content analytics and machine learning, and GCP provides a robust set of APIs such as ML-Engine and BigQuery to support them. The Google for Education team provided generous grants of time on GCP to each of Barnett’s teams to facilitate their development and testing, which is currently under way.
Providing a real-world experience
To be successful computer scientists, students need to learn both the theory and practical applications of the tools used in today’s workplace. Cloud services such as GCP give CCNY access to state of the art developer tools and large-scale cloud infrastructure without requiring a huge up-front investment. Students can learn how to work with many languages and cloud platforms, including Python, Ruby, Sinatra and GCP. These tools and languages would be out of reach for many schools, whose limited resources prevent them offering such a variety of technologies to explore. GCP provides an affordable way to offer access to modern computing environments in a way that can scale to serve the needs of all students and departments.
“The cloud environment is the modern manifestation of the operating system,” Barnett says. “Students aren’t going to be working on hard metal servers. The cloud isn’t just the future; it’s the present.”