On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
A rational design process: How and why to fake it
IEEE Transactions on Software Engineering
Foundations for the study of software architecture
ACM SIGSOFT Software Engineering Notes
Multi-paradigm design for C++
Technical opinion: essential business object design
Communications of the ACM
Proceedings of the Conference on The Future of Software Engineering
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Agile Software Development: Principles, Patterns, and Practices
Agile Software Development: Principles, Patterns, and Practices
The 4+1 View Model of Architecture
IEEE Software
Teaching Software Design in the Freshman Year
Proceedings of the SEI Conference on Software Engineering Education
Architecture, design, implementation
Proceedings of the 25th International Conference on Software Engineering
IEEE Software
Queue - DSPs
Calculator problem and the design recipe
ACM SIGPLAN Notices
Teaching patterns and software design
ACE '05 Proceedings of the 7th Australasian conference on Computing education - Volume 42
Can graduating students design software systems?
Proceedings of the 37th SIGCSE technical symposium on Computer science education
An instructional scaffolding approach to teaching software design
Journal of Computing Sciences in Colleges
Software Conflict 2.0: The Art And Science of Software Engineering
Software Conflict 2.0: The Art And Science of Software Engineering
Building objects out of Plato: applying philosophy, symbolism, and analogy to software design
Communications of the ACM
On the Design and Development of Program Families
IEEE Transactions on Software Engineering
Improving the teaching of object-oriented design knowledge
ACM SIGCSE Bulletin
Evolving an integrated curriculum for object-oriented analysis and design
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Thinking about computational thinking
Proceedings of the 40th ACM technical symposium on Computer science education
Software Architecture: Foundations, Theory, and Practice
Software Architecture: Foundations, Theory, and Practice
Modeling Software Behavior: A Craftsman's Approach
Modeling Software Behavior: A Craftsman's Approach
Guest Editors' Introduction: Multiparadigm Programming
IEEE Software
Can graduating students design: revisited
Proceedings of the 42nd ACM technical symposium on Computer science education
Promoting creativity in the computer science design studio
Proceedings of the 42nd ACM technical symposium on Computer science education
Beauty and computer programming
ACM Inroads
A method to evaluate differences between student UML class diagrams
Journal of Computing Sciences in Colleges
Hi-index | 0.00 |
Design plays a critical role in the software's quality and long-term success. Yet, software design, as a systematic process, is not sufficiently understood, and its practice in the real world is highly varied. As a result, teaching software design remains a challenge in terms of lacking widely recognized and accepted pedagogy and even learning materials. These factors have played a role in persistently poor student learning achievement. The article makes an attempt to discuss what software design is and explore what teaching of software design may mean and entail. It also reviews published pedagogical studies and reports, composes heuristic suggestions, and searches directions of future research.