Seeking advice for teaching

33 views
Skip to first unread message

Marko Ristin-Kaufmann

unread,
Mar 18, 2025, 7:22:33 AMMar 18
to software-design-book
Dear John and the wider community,

I have been using large portions of your book as teaching material for a Software Design course in the final year of the Computer Science Bachelor’s program at Nazarbayev University (Astana, Kazakhstan). While the material is straightforward to present in a lecture format, I am finding it quite challenging to teach effectively.

My students have demanding schedules, making it difficult to engage them in coding larger projects. Instead, I have been using focused exercises — such as designing class diagrams and writing pseudo-code — that we then discuss as a group. My goal is to let them practice specific concepts in isolation, much like katas in martial arts.

However, I feel that the students are not learning as much as I had hoped, and I am struggling to design meaningful exercises for certain topics, e.g., for chapters "Information Hiding (and Leakage)" and "General Purpose Modules are Deeper." Additionally, any homework that can be easily solved with ChatGPT loses its intended purpose, as students tend to rely on it, beating the purpose of the practice.

Do you have any advice on structuring the course more effectively? Perhaps some of you have exercises or strategies that have worked well in similar settings?

Any insights or suggestions would be greatly appreciated!

Best regards,
Marko

John Ousterhout

unread,
Mar 19, 2025, 6:33:59 PMMar 19
to Marko Ristin-Kaufmann, software-design-book
Hi Marko,

I think it's difficult to teach the material of APOSD unless students are actually building systems, so they can experience the impact of their design choices. In my class, the time when students start to "get it" is when they have turned in their first projects (which are nontrivial) and they get code reviews from me: I point out places where their code is too complicated, show how the complexity arises because they have violated one of the principles from APOSD, and then show how the code can be made simpler by following the principles. Without all of the details of code they have written, and also the opportunity to rewrite, it's hard to appreciate the principles. For example, pseudo-code might not seem too complicated, but when you have to write code that actually compiles and runs, all of the subtle dependencies and complexities appear.

It would be great if there was a way to teach software design without a significant effort in actually writing code, but I haven't found it yet. If anyone should figure out a way, I'd love to hear about it!

-John-

--
You received this message because you are subscribed to the Google Groups "software-design-book" group.
To unsubscribe from this group and stop receiving emails from it, send an email to software-design-...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/software-design-book/CAGu4bVBvSb1Bj-5_YO3HerSAruCoZfC5qKFZ3ncNXC9zTBm3JA%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages