Reengineering the undergraduate core computer science curricula for the new era of parallelism

Limitations in power and speed, coupled with the unprecedented levels of integrations in today's semiconductor industry have resulted in massive hardware parallelism in modern computer chips leading to multicore/manycore general purpose processors and graphical processing units (GPUs) with hundreds of simple cores. As a result, all computing is becoming parallel (high performance) computing. On the other hand, future work force (our students) are not well prepared for this new era in processing technology, where parallel programming will be necessary and parallel processing will be the norm rather than just a niche area. In addition, our students are often prepared in an abstract manner with little or no connection to real life applications. This paper seeks to revolutionize our computer science curricula through a comprehensive reengineering of core computer science subjects in order to address the aforementioned pressing issues.