Teaching Software Architecture to Undergraduate Students: An Experience Report – Stephen Chenoweth

being a software architect is cool, it is the number 3 best job in the world, according to CNN. But, what is the most important skill one should have, asked Stephen. Mumbling all around in the room, and the answers, of course are very diverse. Abstraction, communication etc. Can you even teach those skills or are people born with them? This leads to interesting questions. Should we as software engineers only teach the technical skills or should we do the soft stuff also?

Stephen tried many approaches in the past years, and also investigated what others did (more details in the paper)

This is the evolution of Stephen’s course:


Project work has gotten more and more important for grading and soft skills like process and documentation have gotten more attention too.

Interestingly enough, the architectural pattern that are thread in the course differ based on the topic of the project that was used.


Better labs really made a difference in better learning, was one of Stephen’s main findings. Students are used to the teacher explaining what to use, and they really learn if you answer: I do not know, why don’t you try it out?


What I finally found really interesting is that Stephen is realizing you cannot teach the students everything in the first weeks, it needs time, so they are planning to do follow up, online lectures for when the students are about to graduate. I really like the idea of a course not being 10 or 15 weeks, but a learning effort that can take a longer time.