We in academia and industry are at least a generation behind in preparing the next generation of computer scientists and engineers for parallel and many core computing. So said, Dan Garcia, Lecturer SOE in the Computer Science division of the EECS department at the University of California, Berkeley, to Tom Murphy and I on our first Teach Parallel broadcast.
Professor Garcia averred that the move to multi-core computing caught the academic community a bit unprepared; many of whom are still teaching sequential programming to students already using at least dual core systems. Dan added that we are entering an era ripe with new opportunities - consider the promise of cloud computing where undergraduates are already able to write a few lines of code using the map reduce paradigm and run apps across data centers based on tens, hundreds or even thousands of compute cores.
Listening to Dan, it is clear that we must fundamentally reevaluate what and how we teach: data structures, algorithms, testing and more all need to be rethought in terms of parallelism. UC Berkley, Dan saaid, began to look at their courses from the point of view of a coder in order to determine where to make these changes. This benefits both those students who will be leaving after four years for jobs in industry, as well those pursuing higher degrees.
At the very least, students should take one full quarter or semester of parallelism as undergraduates. Even better, Dan added, the undergraduate curriculum should be infused with parallelism inclusively.
I am also a proponent of looking at the entire curriculum with an eye to making parallelism the norm. This is easier said than done of course. To begin with, many faculty are still ramping up on parallelism and concurrency themselves. Further, many colleges simply do not have have the resources to devote to the issue. Dan added that this is where industry can help out by providing resources and modules to jump start this process.
Speaking personally (usual disclaimers about this being my opinion and not necessarily the view of my employer), I would add that we in industry are not yet doing enough. CPU manufacturers, as well as software and OS vendors, need to support the new compute platform by enabling academia to teach the next gen computer scientists and engineers. This is not to say that there are not excellent industry efforts, there are. But some problems are big enough that they take cooperation across the board. I believe that this is one such instance. There is plenty even for business rivals to agree on at an enabling level that will allow us to compete even more effectively at an implementation level.
Please listen to Dan's podcast in it's entirety and leave you thoughts below. Do not forget to tune into our future events. We'll see you next time online or avatar-to-avatar in Science Sim.