Skip to Main Content
Intertwining reflective and abstract modes of thinking into the education of software engineers, especially in a course that focuses on software engineering's human aspects, can increase students' awareness of the discipline's richness and complexity while enhancing their professional performance in the field. The complexity of software development environments includes the profession's cognitive and social aspects. A course designed to increase students' awareness of these complexities introduces them to reflective mental processes and to tasks that invite them to apply abstract thinking. For the past three years, we have taught a Human Aspects of Software Engineering course at both the Technion-Israel Institute of Technology and the School of Computer Science at Carnegie Mellon University. This course aims to increase software engineering students' awareness of the richness and complexity of various human aspects of software engineering and of the problems, dilemmas, question, and conflicts these professionals could encounter during the software development process.