Distributed systems in the undergraduate curriculum
ACM SIGCSE Bulletin
Teaching an engineering approach for network computing
SIGCSE '97 Proceedings of the twenty-eighth SIGCSE technical symposium on Computer science education
An integrated course on parallel and distributed processing
SIGCSE '98 Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education
Journal of the ACM (JACM)
Communications of the ACM
Linear algebra operators for GPU implementation of numerical algorithms
ACM SIGGRAPH 2003 Papers
GPU Cluster for High Performance Computing
Proceedings of the 2004 ACM/IEEE conference on Supercomputing
Visual Simulation of Heat Shimmering and Mirage
IEEE Transactions on Visualization and Computer Graphics
An easy to use distributed computing framework
Proceedings of the 38th SIGCSE technical symposium on Computer science education
Undergraduate data communications and networking projects using opnet and wireshark software
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Scalable Parallel Programming with CUDA
Queue - GPU Computing
Bringing big systems to small schools: distributed systems for undergraduates
Proceedings of the 40th ACM technical symposium on Computer science education
Designing efficient sorting algorithms for manycore GPUs
IPDPS '09 Proceedings of the 2009 IEEE International Symposium on Parallel&Distributed Processing
The right balance: restructuring the parallel and scientific computing course
Journal of Computing Sciences in Colleges
Hi-index | 0.02 |
One of the dominant trends in microprocessor architecture in recent years is continually increasing chip-level parallelism. However, many undergraduate curriculums, especially at small schools, do not offer courses that focus on the design and analysis of multi-threaded algorithms for multi-core processors. The courses that are offered address the theoretical aspects of parallel system design, but often fail to provide students with the opportunity to develop and evaluate distributed applications in real-world environments. As a result, undergraduate students are not as prepared as they should be for graduate study or careers in industry. We fill these gaps by creating multi-threaded programming (MTP) materials which target multi-core processors for the junior-level in computer science. The MTP materials are used in the second half of the Design and Analysis of Algorithms course replacing the theoretical aspects of parallel system design using the PRAM model. In order to overcome the difficulty of teaching and learning multi-core programming, problem-based learning (PBL) is used to ease students' transition from the single-threaded programming model to MTP. The course is well-suited for both large and small schools, and will greatly contribute to CS education and preparation of CS students for graduate study or careers in industry.