Feature
Putting the Pieces Together:
ITP’s new class teaches students how to solve problems as programmers
Like many of her students, Kendra Walther signed up for her first computer programming class during her freshman year of college and discovered that she enjoyed solving problems with code and creating new programs.
Now a senior lecturer of information technology at the USC Viterbi School of Engineering, Walther brings her passion for programming and education to the Information Technology Program.
This semester, she taught a new class, ITP-265 “Object-Oriented Programming.” This class is a new requirement for students pursuing minors in computer programming, mobile app development, and video game programming. Students learn how to write code in ITP’s introductory programming classes. But in ITP-265, they go beyond just writing code to learn how to start putting parts together to make complete programs.
Object-oriented programming is a model used by programmers to break down code into pieces called objects. Each object can have its own data and functions, which are actions that the object can take. And programmers can group objects into classes that share common data and functions.
Breaking programs down into these parts helps programmers stay organized, add new features, fix errors, and work with others. It is important for each student to “think like a programmer and problem solve in that way,” Walther said. “The language and syntax matter less. But students don’t see that at first, so [the class] is getting them to understand how things really work.”
To put these concepts into practice, students wrote programs like “Monster Game,” where they organized monster objects into classes. For example, monster objects in the sea monster class would inherit certain shared characteristics based on their aquatic habitat.
Students also learned how to set up shopping carts for online retailers and track customer orders at coffee shops. “We were responsible for coding the checkout system for an Amazon simulated store,” said Angel Duan, a sophomore majoring in business administration and minoring in computer programming. “We were able to see just how useful our coding could be… It showed how applicable learning Java is.”
Walther said that the problem-solving skills students learned in her class will allow them to solve multifaceted real-world problems. It is about “thinking about a problem and separating it so that multiple people can work on it, or so you really understand each piece has its own function to do.”
Students in the class saw how they could apply these problem-solving skills outside of programming.
“It’s been super interesting for me to witness my own development and growth in programming and how it has impacted my outlook on other, non-programming aspects of my life,” said Walter Petrouchin, a sophomore majoring in accounting and minoring in computer programming. “As I’m cooking a meal in the kitchen, for example, I’ll think about how I’d program my cooking.”
Duan agreed that the problem-solving skills were valuable outside of programming. “Learning how to program has taught me to look at both the bigger and smaller picture when solving non-programming problems, as when you code, sometimes the smallest error is why your entire code does not compile,” she said.
Besides teaching them to code, Walther encouraged her students to practice compassion for themselves and others. She values creating a supportive environment for students learning computer programming. She said that many students felt that they were less prepared than their classmates were at the start of the semester — and she wanted to show them that they can all learn how to code. “I want people to feel like they accomplished it and met the goals at the level where they can, but still go farther because that’s the beauty of anything in computer programming.”
Next steps
After completing ITP-265, students can take classes like ITP-303 “Full-Stack Web Development,” ITP-342 “iOS App Development,” and ITP-365 “Managing Data in C++.”