Design Patterns and AI: Computer Science evolves at SOU
(Ashland, Ore.) — A new “Design Patterns” course in Southern Oregon University’s Computer Science program leans on artificial intelligence to perform coding tasks, allowing students to focus on the big picture and serve as architects rather than carpenters.
The course – an upper-division elective intended primarily for Computer Science majors – reflects an ongoing shift toward AI in software engineering by taking a deeper look at the structure of software, teaching students how to recognize recurring problems in programming and apply reusable solutions, or patterns.
“The main difference (from other coding courses) is the students aren’t doing much coding at all in this class,” said David Pouliot, an SOU associate professor of Computer Science and instructor for the course. “Instead they are designing the code, which is more like creating the blueprints and defining the functionality of the different pieces of software and how they interact.
“This approach lets different teams work independently, makes it easy to upgrade parts without breaking the whole system and keeps complex software manageable,” he said.
The Design Patterns course – offered for the first time this fall – acknowledges that tools such as ChatGPT and GitHub Copilot have become capable of generating short, functional pieces of computer code, and the role of computer scientists is moving from line-by-line implementation toward a higher-level of thinking.
AI can quickly generate snippets of code, but it still struggles with things that come more naturally to humans, such as design. Programmers still need the same core engineering skills to use AI effectively, as artificially generated code often contains bugs, logic errors or vulnerabilities that inexperienced developers may not recognize.
“Students analyze how programs are structured rather than the nitty-gritty details of the program,” Computer Science student Felicity Johnson said of the Design Patterns course. “You can think of it like how an architect creates blueprints for a building, but the builder actually makes the building itself.
“It teaches students how to structure software so that it’s flexible, efficient and easier to maintain.”
Students in Design Patterns learn how to think about structure, choosing between composition and inheritance, where to apply abstraction and how to design programs for scalability and flexibility. Those are decisions that require judgement, creativity and a good understanding of software architecture – traits that even the most advanced AI tools today don’t possess.
The course is intended to help students learn how to use AI as an assistant and increase their programming productivity. The field is moving in the direction of developers spending more time at the structural level, making design decisions and defining interfaces, while AI handles more of the low-level and repetitive work.
“First, they get experience designing large projects – something they don’t normally get until they have graduated and been in the industry for a while,” Pouliot said. “The other thing I hope is that this class will help prepare students for changing roles.
“It should help prepare students for any class where the students complete larger projects – primarily our capstone sequence where groups of students work on a real project over multiple quarters.”
-SOU-



