Encumbered by history? Do something wonderful for programming education!

In a recent faculty workshop held at Izmir, Turkey, an interesting topic caused debate amongst the attendees during discussion . And I believe it should not be concerned only by Turkish faculty. That is, where is the proper point to start teaching concurrent/parallel programming in institutes. Supporters on one side would start teaching students concurrent/parallel programming as soon as the programming language courses begin, so that the mindset of parallel thinking and design thoughts can be built in the first place. Professors on the other side insist concurrent/parallel programming shouldn't be introduced until students have built solid coding and debugging skills, because otherwise they would get confused by the additional "need to care" stuff like race condition and synchronization etc.

I think there is no absolutely right or wrong conclusion to the topic. It is mainly a matter of habit. People preferring the "serail then parallel" style follow conventions, as the computing technology itself experienced the history of "serial then parallel". And that is apparently a reasonable approach for those who had been experienced programmers. However, I would encourage doing something revolutionary and wonderful for students who are entering the world of programming. Why don't we introduce the whole world in the first place? Recall how children get to know this world - it is all about how the parents expose the world to the kids. They would accept what they first see.

On the other hand, designing a parallelized application is not that hard. If tutors can summarize the methodology into some practical steps like "decompose the problem into parallel tasks", "identify the dependency and share/private resource", "implement with a right model" and illustrate with some visualized examples, students should be able to get it fast.
For more complete information about compiler optimizations, see our Optimization Notice.