Reflection and abstraction in learning software engineering's human aspects

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.

[1]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[2]  James E. Tomayko,et al.  Carnegie Mellon's software development studio: a five year retrospective , 1996, Proceedings of 9th Conference on Software Engineering Education.

[3]  C. Hoare,et al.  Mathematics of Programming , 1993 .

[4]  Orit Hazzan,et al.  The reflective practitioner perspective in software engineering education , 2002, J. Syst. Softw..

[5]  James E. Tomayko,et al.  Teaching software development in a studio environment , 1991, SIGCSE.

[6]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[7]  D. Schoen The Reflective Practitioner , 1983 .

[8]  Abstraction - is it teachable? 'the devil is in the detail' , 2003, CSEE&T.

[9]  P. Senge THE FIFTH DISCIPLINE , 1997 .

[10]  James E. Tomayko,et al.  The Reflective Practitioner Perspective in eXtreme Programming , 2003, XP/Agile Universe.

[11]  Anneliese Amschler Andrews,et al.  Program understanding behavior during corrective maintenance of large-scale software , 1999, Int. J. Hum. Comput. Stud..

[12]  Victoria Hoban,et al.  The Reflective Practitioner , 2013 .

[13]  D. Schon Educating the Reflective Practitioner. Toward a New Design for Teaching and Learning in the Professions. The Jossey-Bass Higher Education Series. , 1987 .

[14]  Orit Hazzan,et al.  Human Aspects of Software Engineering (Electrical and Computer Engineering Series) , 2004 .

[15]  P. Senge,et al.  The Fifth Discipline Fieldbook , 1994 .

[16]  Donald A. Schön Educating the Reflective Practitioner: Toward a New Design for Teaching and Learning in the Professions , 1987 .