Georgia Tech adjunct faculty Michael Littman

OMSCS Lecturer Explains 'Why Everyone Should Learn a Little Programming'

If you use computer systems daily – and most of us do – you have felt the frustration. Sometimes, despite our best efforts, our systems don't give us what we want.

But what if we got better at explaining what we want? Michael Littman, author of the new book Code to Joy: Why Everyone Should Learn a Little Programming, argues that if we tap into our inner educator, we can all get more out of the systems surrounding us.

"Programming computers seems highly technical and arcane, but it's actually very similar to how we teach other people to do things," Littman said. "You might not realize it, but you've been practicing these skills your whole life!"

Littman is a computing professor at Brown University, adjunct faculty with Georgia Tech's College of Computing, and a long-time lecturer in Georgia Tech's Online Master of Science in Computer Science (OMSCS) program. 

The idea for the book came to him when he was teaching a computer science course for non-majors. When he asked how they used computing in their lives, they responded that they didn't intend to take any more computing courses.

"I was shocked," Littman said. "These students are on their computers all day long but don't consider their new knowledge of computing relevant to their lives. At that moment, I realized we needed to find better ways to empower people to use their computers more effectively and thoughtfully."

One thing that makes communication with computers difficult, Littman explained, is that they don't take direction the way people do. When people explain how to do a task, we tend to articulate some general rules and then give a few examples to show how to apply them.

With computers, you have to choose: do you want to use rules, or do you want to use examples?

If you choose rules, you're choosing a solution based on coding. When you create code, you're giving computers steps to follow to solve problems. Computers interpret rules literally, which can lead to unforeseen errors or "bugs" in the code.

If you choose examples, you're choosing machine learning (ML), a method where you give the program data and let it deduce the rules. But the algorithm only knows about the task from the data that you give it. If the data is biased or incomplete, the algorithm will be biased or incomplete.

Knowing the difference between coding and ML-based solutions helps you understand how to interact with a system and anticipate possible setbacks.

"I think our relationship with computers has gotten dysfunctional," Littman said. "We — all of us — need to be more active in telling these machines what we want them to do. The good news is that AI and machine learning advances can help meet us part way, so we don't need to be professional coders to get the empowering benefits of programming."

He wrote his new book during a semester-long appointment with OMSCS on Georgia Tech's campus in 2022.

"It was exciting to me because I recorded classes with Charles Isbell around ten years ago but had never been involved with course delivery," Littman said."

"Interacting with the students was an amazing experience. I also contributed to the [Georgia Tech's] Constellations Center for Equity in Computing, meeting with the dean regularly to talk about making computing more accessible to more people. Both of these activities supported the themes in the book."

Photo credit: Nick Dentamaro/Brown University