Here is an idea for a “real-world software engineering” class, that I would be really happy if it was offered by universities.
Choose a type of software, for example, a wiki. Choose the technology, and the language (let’s say — Python, Django). Write this wiki, before the class begins. The students have to work, in pairs, on fixing a bug in the wiki. This is exercise 1. The succeeding exercise each involve changing the requirements, and asking for a new version — basically, a new version every week or two. The wiki starts out without any unit tests, but every area the students toucuh has to have unit tests added to it to see the change is ok and didn’t hurt directly related functionality.
The class itself, other than the exercises, will cover topics like using unit tests, source control, bug management systems and so forth. It will be expected the students will actually use these techniques during the exercises — but for the first time in their life, they’ll use it on real code, for good reasons, and they’ll need to use them correctly to do the right thing. I expect the exercises to be most of the grade, with a test to go over correct understanding of the concepts.
I feel like this class would be the best preparation for students in a software-engineering/CS degree for the real life software industry, as I know it. Any comments? Anyone know of a university giving such classes?