Complex information structures are found in many disciplines including physics, genetics, biology and all branches of the information sciences. The current increasing, widespread use of information technology in all academic activities' emphasizes the need to understand how people construct and use such structures. The practices and activities found within the community of programmers provides a rich study area. The contents of this book are devoted to fundamental research that directly informs: the teaching community about some of the recent issues and problems that should help readers to increase their awareness when designing systems to support teaching, learning and using information technology; the psychology of the programming community about work in the area of learning to build, and debug programs; and the software engineering community in terms of the issues that implementors need to take into account when designing and building tools and environments for computer-based systems.