Physical Programming #104: Parallel Programming

I was attending a training session on parallel programming given by Dr Yan Solihin (from NCSU) today, when it occurred to me that one very important reason to learn physical programming is to do parallel programming. Parallel programming could be considered a sub-set of physical programming.

While physical programming encourages one to consider all physical aspects of programming, parallel programming makes one consider the physical constraints that relate to the execution of instructions across multiple cores and machines. Therefore, this will take into account the memory hierarchy as well as communication limits.

Therefore, this might be a good example to use as a sub-chapter or two of physical programming. It is very important to show how and why parallelism is important and we should stop being lazy programmers.

Waterfall Model Failure

I recently saw the video on “Real Software Engineering” and one of the things that struck me about the video is that it pointed out that the classic ‘waterfall model‘ of software development that we are all taught in schools, does not work. Not only does it not work, in fact, the original author and person attributed for inventing the model actually said that, “I believe in this concept, but the implementation described (above) is risky and invites failure.”

Hahaha!