ENGINEERING NEWS

Code Not Included: The Philosophy of Computer Science

CS 101 introduces majors and non-majors to core computer science ideas

Jason Hartline sees the world through the lens of computer science. To him, DNA is code that runs through tiny cellular computers. And economic systems are programs created by people’s behaviors and preferences.

Jason Hartline“I view the universe as one enormous computation,” said Hartline, associate professor of electrical engineering and computer science at Northwestern’s McCormick School of Engineering. “Computer science can expand to include anything. Computer science can help us better understand the world around us.”

This philosophy is the soul of Hartline’s course CS 101: Computer Science for Everyone. Offered every fall, the class introduces both majors and non-majors to the core ideas that drive the field as well as ways in which computer science interacts with everything else in the world.

Each week features different guest professors from the department who present the computer science topics in which they conduct research. Fabian Bustamante, for example, lectures about systems and networks. Larry Birnbaum presents on artificial intelligence and machine learning, and Brenna Argall talks about robotics. While Bustamante, Birnbaum, and Argall presented this quarter, the guest lecturers change every year.

“You learn about topics on a broad scale,” said Alec Reinke, a sophomore in mechanical engineering who is currently in the class. “I was surprised to learn how many different fields of computer science there are.”

“I’ve developed a much broader understanding than I expected,” added Lena Goren, a sophomore majoring in cognitive science. “The variety of material is huge.”

This broad approach to computer science is by design. Peter Dinda, professor of electrical engineering and computer science, created the course seven years ago, and Hartline redesigned it four years ago. The course fights the misperception that computer science is solely about programming. Historically, most introductory classes for computer science have focused on programming. While it’s an important skill, programming is only a portion of computer science. Hartline likens it to a high school biology course. Each week, biology students typically learn a new topic — from DNA to cells to plants.

“Biology classes aren’t just centered around one skill like dissecting a frog,” Hartline said. “Students don’t go to class every day to learn more specialized methods to get better and better at dissecting. Computer science also has many advanced topics, such as cryptography and machine learning. These are very different from programming.”

CS 101 is recommended for everyone. It has no prerequisites or programming requirements, making it attractive to non-majors, who make up 50 percent of the class. There are also no textbooks, as Hartline prefers to keep class discussions current and sometimes ripped from the headlines. When Facebook was outed for using an algorithm to customize users’ news feeds in order to control their moods, for example, Hartline brought the discussion to class. He also uses TED Talks and articles from popular media. 

Some non-majors take the course to explore the world of computer science, dipping a toe into a vast field to decide if it’s something they want to pursue. Others are simply interested in learning more about topics, such as algorithms, that are becoming a more prominent part of everyday life.

“More and more, computer science is becoming something that everyone should know about to be a functioning person in society,” Hartline said. “You should understand that you are regularly interacting with learning algorithms. You should know what that means.”

Hartline has long noticed ways that computer science touches unexpected areas of life and looks for ways it can be used as a tool to understand complex environments. His own research introduces design and analysis methodologies from computer science to understand and improve outcomes of economic systems. In Hartline’s world, economic systems work like computations, and economic factors, such as a country’s gross domestic product, are the computation’s outcome.

“People often associate computer science with programming because it’s been viewed as a ‘build-it field,’” he said. “That ‘build-it’ nature is changing. We’re finding that methods and ideas in computer science are very versatile. If you know how to use these tools to think about the world, then you will better understand the world.”