Prove that a computer can do anything. Or prove that it can’t.

What computers fundamentally can and can’t do is the purview of theoretical computer science. In the School of Computing and Augmented Intelligence, part of the Ira A. Fulton Schools of Engineering at Arizona State University, future engineers study important computing theories, striving to understand the true capabilities of machines.

A Fulton Schools team is hard at work looking for new ways to make the study of theoretical computer science accessible and engaging for all types of learners.

Joshua Daymude, a Fulton Schools assistant professor of computer science and engineering, says that the goal of his theoretical computer science class is to help students recognize common paradigms and develop an intuition about whether computational problems are solvable.

Daymude says one of the fundamental lessons he teaches in his CSE 355 Introduction to Theoretical Computer Science class is a sense of the limits of technology.

“The class argues that there are infinitely more things computers cannot do than what they can do,” he says. “And these things that they can’t do aren’t just mathematical curiosities but are actually important considerations in software design.”

Because it provides essential, fundamental knowledge, CSE 355 is typically taken near the midway point in a student’s computer science curriculum and is required for most computer engineers.

In Daymude’s class, students ponder questions like: Can different programming languages have fundamentally different capabilities? What makes one problem harder than another? They answer these questions by developing logical and mathematical proofs, and the assistant professor notes that some learners can have trouble adjusting to the class format.

“All of a sudden there’s no code,” Daymude says. “It feels much more like a pure math or even philosophy class than it does computer science. So, it throws a lot of students for a loop.”

Read the full story on Full Circle.