Author_Institution :
EECS Dept., Univ. of California, Berkeley, Berkeley, CA, USA
Abstract :
We describe our experiences in bringing a traditional sophomore level “Machine Structures” course into the 21st Century, by revising it to focus instead of instruction sets and machine language on “programming for performance.” The course concentrates on just what even a novice programmer needs to know about the underlying hardware to write fast code. And in today´s world, that means parallel programming at a variety of levels. The course teaches, through lectures, labs, and programming projects, the essentials of parallel requests at the multi-server level, map-reduce data parallel programming at the multiprocessor level, parallel threads at the multi-core level, and parallel instructions (pipelining) and data (SIMD) at the processor core level. Student teams develop a high performance implementation of a non-trivial parallel application like large-scale matrix multiply or image edge detection, and compete to see who can achieve the highest performance. This kind of course has influenced the recent ACM 2013 Computer Science Curriculum recommendations. We will review the “great ideas of computer architecture” embodied by this course, and the implications it has for teaching parallel and distributed systems to undergraduate computer science students.
Keywords :
computer science education; educational courses; further education; multiprocessing systems; parallel programming; teaching; ACM 2013 Computer Science Curriculum; MapReduce data parallel programming; SIMD data; code writing; computer architecture; distributed system teaching; high-performance implementation; image edge detection; large-scale matrix multiply; machine structures course; multicore level; multiprocessor level; multiserver level; nontrivial parallel application; parallel instructions; parallel programming; parallel requests; parallel system teaching; parallel threads; pipelining; processor core level; student teams; undergraduate computer science students; Awards activities; Educational institutions; Instruction sets; Parallel programming;