Real-world Software Engineering

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?


2 Responses to Real-world Software Engineering

  1. Adi Stav says:

    Adding features to open-source projects gives pretty much what you’re after (maybe with slightly varied methodologies, e.g., unit tests). I think quite a few programs already include students’ contribution to open-source projects.

  2. Moshe Zadka says:

    Not really.
    At best, the student learns that the thing the instructor asks (comments, e.g.) are also things that Open Source project ask. But they still won’t understand *why* until they have to maintain their own code 🙂

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: