Using Software Engineering Design Principles as Tools for Freshman Students Learning

In this innovative practice work-in-progress paper, the software engineering design principles that are used for Programming Fundamentals, and Object-Oriented Programming courses, within a -recently renewed curriculum- software engineering program, are reviewed and discussed as tools to introduce first-year students into the engineering design skills learning pathway of the Engineering Accreditation Commission of the Accreditation Board for Engineering and Technology, ABET. Special attention is paid to highly abstract concepts such as high cohesion, low coupling, Keep it Short and Simple, Don’t Repeat Yourself, Single Responsibility Principle, among other object-oriented design principles. The aim of such exercise is two-fold: (i) to address how design principles can be used to guide students’ learning process, and (ii) to support pedagogical decision making for the software engineering program. The outtake of the whole research planned by the authors is as follows. On the one hand, design principles are discussed and analyzed, from the first-year programming courses perspective, aiming a pedagogical path planning for student outcomes attainment within a Project-Based-Learning approach. On the other hand, the discussion on how the program takes advantage of assessment and evaluation processes, can be useful for programs and faculty concerned with fulfilling the continuous improvement criterion, as defined by ABET. The presented work-in-progress focuses on reflection about design principles and establishing a link among them, with the engineering design process. In this way, this paper separates from similar works that may focus on design principles by itself, without the mentioned intentionality. Reported qualitative results are focused on conducted experiences so far within our software engineering program.

[1]  Raul Sidnei Wazlawick,et al.  Identification of Pre-University Factors that Affect the Initial Motivation of Students in Computing Programs: A multi-institutional case study , 2018, 2018 IEEE Frontiers in Education Conference (FIE).

[2]  Ruzanna Chitchyan,et al.  Sustainability Design and Software: The Karlskrona Manifesto , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[3]  Jan Bosch,et al.  Specifying frameworks and design patterns as architectural fragments , 1998, Proceedings Technology of Object-Oriented Languages. TOOLS 27 (Cat. No.98EX224).

[4]  David Thomas,et al.  The Pragmatic Programmer: From Journeyman to Master , 1999 .

[5]  S. Hosseini,et al.  Strengthening critical thinking in engineering students , 2019, International Journal on Interactive Design and Manufacturing (IJIDeM).

[6]  Sidney K. D'Mello,et al.  What Emotions Do Novices Experience during Their First Computer Programming Learning Session? , 2013, AIED.

[7]  Wang Haoyu,et al.  Basic Design Principles in Software Engineering , 2012, 2012 Fourth International Conference on Computational and Information Sciences.

[8]  Robert H. Ennis Critical Thinking and Subject Specificity: Clarification and Needed Research , 1989 .

[9]  Bernhard Standl,et al.  First-year computer science students perception of lectures in relation to type of high-school education , 2018, 2018 IEEE Global Engineering Education Conference (EDUCON).

[10]  K. Howells The future of education and skills: education 2030: the future we want , 2018 .

[11]  L. A. Hausman How we Think , 1921 .

[12]  Ricardo Colomo Palacios,et al.  Emotions in Software Practice: Presentation vs. Coding , 2019, 2019 IEEE/ACM 4th International Workshop on Emotion Awareness in Software Engineering (SEmotion).

[13]  J. Bruner Actual minds, possible worlds , 1985 .

[14]  Taghi M. Khoshgoftaar,et al.  Measuring coupling and cohesion: an information-theory approach , 1999, Proceedings Sixth International Software Metrics Symposium (Cat. No.PR00403).