Alice: a 3-D tool for introductory programming concepts
CCSC '00 Proceedings of the fifth annual CCSC northeastern conference on The journal of computing in small colleges
Parallel Computers Two: Architecture, Programming and Algorithms
Parallel Computers Two: Architecture, Programming and Algorithms
Are expectations for parallelism too high?: a survey of potential parallel users
Proceedings of the 1994 ACM/IEEE conference on Supercomputing
X10: an object-oriented approach to non-uniform cluster computing
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Mindstorms: children, computers, and powerful ideas
Mindstorms: children, computers, and powerful ideas
A view of the parallel computing landscape
Communications of the ACM - A View of Parallel Computing
Proceedings of the 41st ACM technical symposium on Computer science education
The Scratch Programming Language and Environment
ACM Transactions on Computing Education (TOCE)
A Grid Portal for an Undergraduate Parallel Programming Course
IEEE Transactions on Education
Proceeding of the 44th ACM technical symposium on Computer science education
Hi-index | 0.00 |
Traditional introductory programming classes teach sequential programming using a single-threaded programming model. It is typical to wait until a student has developed proficiency in sequential programming before teaching parallel programming. As computer hardware becomes increasingly parallel, there is a greater need for software engineers who are proficient in designing parallel programs, and not just by "parallelizing" sequential designs. Teaching parallelism first is an important step towards educating tomorrow's programmers. We present an overview of a five-day introductory parallel programming course. We taught the course to nine and ten year-olds with no prior programming experience. Our course utilized a fundamentally parallel language we designed for the course, one with a near-natural language syntax that exposed the parallel processors throughout the code. This language, coupled with an interactive online programming environment, allowed us to teach a wide range of parallel programming concepts in a very limited timeframe. We also present examples of student-written code that demonstrates their understanding of some basic parallel programming concepts, and we describe the overall course goal and specific lesson plans geared towards teaching students how to "think parallel."