Software can be seen as an abstract system or product based on computers that enhances human cognitive skills. It is reusable and capable of implementing various functions across different hardware platforms and operating systems. Software is highly evolutionary; as technology advances and demands change, software continuously updates and iterates to meet new requirements. Today, software is ubiquitous, playing a crucial role in everything from everyday devices like smartphones and computers to complex industrial control systems. Software not only profoundly impacts scientific research, production operations, and educational activities but also significantly alters societal organization and people's lifestyles.
However, software development is a complex process that faces many challenges, including uncertainty in requirements, technical complexity, team collaboration, and project management. Developing valuable software requires not only mastering software development techniques but also focusing on software quality to ensure reliability, maintainability, and security. Software engineering education also faces numerous challenges, such as integrating theoretical knowledge with practical development and fostering students' creativity and problem-solving abilities, all of which are worthy of in-depth exploration.
Turing Award winner David Patterson, in his textbook Engineering software as a service: An agile approach using cloud computing, he mentioned the reasons why needed another book on software development despite the abundance of existing literature. He pointed out that as software becomes more deeply and widely applied to solve domain-specific problems, and as software technology rapidly iterates and upgrades, previous knowledge organization in software engineering has become too fragmented, often focusing on trendy technologies or project management, while lacking detailed and systematic code implementations. This has led software practitioners to encounter cognitive blind spots during software development and maintenance, leaving them at a loss when faced with new problems, thereby increasing development costs, causing project delays, and leading to poor software quality.
The authors have conducted related research, collecting and analyzing 10 versions of computer science curriculum guidelines published by the Association for Computing Machinery (ACM) and the Institute of Electrical and Electronics Engineers (IEEE) from 1968 to 2014. We found that the number of discipline concepts increased from 591 to 5824, the knowledge areas expanded from 9 to 19, and the knowledge units grew from 10 to 18. The study concludes that new concepts emerge in the discipline while outdated ones are eliminated. Given the limited time for learning, it is unrealistic to expect students to master all content comprehensively. These studies lay the theoretical foundation for the restructuring of the knowledge system and the design of teaching models presented in this paper.
When using computers to solve problems, three core questions must first be answered: Which domain problems can be transformed into computer-based solutions? How can we design and implement simple and efficient systems to address these problems? And how can we find appropriate algorithms, detect, and improve errors during execution? Therefore, software engineers need not only a solid technical foundation but also broad cross-disciplinary knowledge and a sense of social responsibility to develop software that truly benefits society.
The computer software discipline has inherited the essence of mathematical theory, experimental science, and engineering methods, while also developing unique reasoning rules, testing standards, and problem-solving methodologies. Many software practitioners and scholars have recognized that, due to differences in software operating environments and the variety of programming languages that may be used, the problems encountered in practice often differ from those described in textbooks. As a result, the process of creating software is, in essence, a process of "examining existing knowledge and creating new knowledge".
Software engineering is a discipline that is highly practical in nature, and the process of software development is one that faces numerous complex challenges. In software engineering education, cultivating students' abilities in continuous learning, knowledge construction, and creative thinking is crucial to the success of projects. However, current teaching methods remain insufficient in fostering these abilities. Additionally, the vast and complex body of knowledge in the field significantly impacts students' learning efficiency. This paper begins by investigating and analyzing existing textbooks on software development and software engineering. The research finds that while there is an abundance of books on software development, the rapid advancement of software technology has rendered the previous knowledge organization—often oriented toward time, process, or tools—too fragmented, with differing focuses, and lacking systematic case code analysis.
This paper deeply analyzes the logic and research paradigms of mathematics, science, and engineering disciplines, and on this foundation, it inherits and develops the classic thinking methods, theoretical approaches, and tool systems of these disciplines, summarizing the research paradigms of computing disciplines. The results show that computing disciplines have inherited the achievements of mathematical theory, experimental science, and engineering methods, while also developing unique reasoning rules, testing standards, and problem-solving methodologies. Whether in traditional disciplines such as mathematics, science, and engineering, or in emerging fields such as computing, information, and intelligence, development requires learners and researchers to possess critical thinking, creative thinking, divergent thinking, questioning ability, and creativity.
This paper reconstructs a theoretical framework of software domain knowledge based on the core issues and tasks of software engineering, focusing on three fundamental software problems, two technical approaches, and nine core tasks. This framework comprehensively covers all aspects that need to be considered in the software design process, including analyzing real-world problems before design, designing models, architectures, code, and interfaces during the software design process, as well as testing, deployment, and maintenance after the design is completed. By guiding learners to focus on essential business issues and application scenarios, delving into data models and specific code, and using a gradual iterative teaching method and project practice, this framework helps learners independently construct a knowledge system in the software domain. Additionally, the paper introduces three laws of software to establish a unified theoretical framework for understanding and testing software, enabling learners to distinguish the commonalities and differences in intelligent software, foundational software, and application software, and to propose innovative solutions. Finally, this paper reviews existing teaching mode theories and creativity-oriented teaching methods, finding that there is a relative lack of theoretical and practical research on creativity cultivation in the field of software engineering.
This paper proposes a comprehensive teaching model that is problem-oriented, combining classroom lectures, discussions, exercises, practice, literature reading, and course projects to strengthen the cultivation of students' creativity. Through dynamic iterations of various teaching methods, students are encouraged to innovate across multiple areas, transitioning from disruption innovation to incremental innovation, while developing their ability to independently assess existing knowledge and generate new ideas. At the same time, this paper also constructs a dynamic evaluation model based on the continuity of creativity development to measure students' creative performance, which has received positive feedback in actual teaching. This dynamic, iterative approach has been implemented in the advanced software engineering course at the University of Chinese Academy of Sciences from 2013 to 2024, receiving high student satisfaction in recent years. This paper also presents the specific implementation process of the proposed teaching model, including the arrangement of various aspects and the use of the dynamic evaluation model.
Finally, through analyzing the advantages and disadvantages of typical auxiliary teaching systems, this paper designs and implements a prototype system to support classroom teaching. This system integrates a problem- and core-task-oriented software engineering knowledge system, fully supporting a problem-oriented comprehensive teaching model in software engineering, capable of improving classroom teaching quality in real-time and efficiently, while also promoting the development of students' creativity. The prototype system acquires the necessary knowledge from public and internal knowledge bases and continuously accumulates and refines user data to enrich the internal knowledge base. The innovative teaching practices and reflections presented in this paper provide new perspectives and methods for the field of software engineering education, contributing to the cultivation of more creative software engineering talent.
该指南指出软件工程共包含15个知识领域(knowledge areas,KAs),如表1所示,包括软件的设计、构建、测试、维护、管理、模型与方法、质量、经济、基础和专业实践等。其中,前五个知识领域涵盖核心开发生命周期阶段:需求、设计、构建、测试和维护,与软件能力成熟度模型(capability maturity model for software,CMM)的第二等级类似,不包括特定于业务的知识;后五个知识领域专注于流程改进和管理,涵盖软件配置管理、工程流程和软件质量等领域,类似于CMM的第三、四等级。
1.3 教学模式理论
教学模式在教学过程中扮演着至关重要的角色,对培养学生创造力起着重要作用,不同的教学模式因其教学方法、知识内容等而各具特色和优势。1806年,约翰·弗里德里希·赫尔巴特(Johann Friedrich Herbart)提出包含明了、联想、系统、方法的教学四阶段理论[13];20世纪初,玛丽亚·蒙特梭利(Maria Montessori)提出蒙特梭利教育法(Montessori Education)[14],注重自主学习和实践活动;1949年,拉尔夫·泰勒(Ralph W. Tyler)提出包含“确定教育目标”“选择教育经验”“组织教育经验”“评价教育计划”的教学四阶段[15];2001年,本杰明·布鲁姆(Benjamin Bloom)提出包含记忆、理解、应用、分析、评估、创造六阶段[16]的学习层次。
ZhangL B, ZhangF, LuoT J. Knowledge structure evolution and evaluation method in computer science[J]. Journal of University of Chinese Academy of Sciences, 2016, 33(6): 844-850.
ZhangL B, SunY H, LuoT J. Calculate semantic similarity based on large scale knowledge repository[J]. Journal of Computer Research and Development, 2017, 54(11): 2576-2585.
YangL, ZhangL B, LuoT J, et al. Knowledge schematization method based on link and semantic relationship[J]. Journal of Computer Research and Development, 2017, 54(8): 1655-1664.
[10]
LiuD, ZhangL B, LuoT J, et al. Learning path generation method based on migration between concepts[M]//Knowledge Science, Engineering and Management. Cham: Springer International Publishing, 2017: 495-506.
LuoZ K, ZhangL B. Learning path planning methods[J]. Journal of University of Chinese Academy of Sciences, 2024, 41(1): 11-27.
[15]
DavidA P, ArmandoF. Engineering Software as a Service: An Agile Approach Using Cloud Computing[M]. Virginia (US): Strawberry Canyon LLC, 2013.
[16]
PopperK R. The Logic of Scientific Discovery[M]. London; New York: Routledge, 2002.
[17]
JeffriesR. The Nature of Software Development: Keep It Simple, Make It Valuable, Build It Piece by Piece[M]. Frisco, Texas: Pragmatic Programmers, 2015
[18]
BourqueP, FairleyR E. Guide to the Software Engineering Body of Knowledge (SWEBOK(R)): Version 3.0[M]. 3rd edition. Washington, DC, USA: IEEE Computer Society Press, 2014.
LiY. The publication and enlightenment of Montessori's Early Education Law: Also on montessori's children-oriented concept[J]. View on Publishing, 2019(6): 94-96.
[23]
拉尔夫·泰勒. 课程与教学的基本原理[M]. 北京: 中国轻工业出版社, 2016.
[24]
TylerR W. Basic Principles of Curriculum and Instruction[M]. Chicago: University of Chicago Press, 2013.
LuK Q, WangW, ChenZ F, et al. Consistency evaluation of curriculum design based on bloom's taxonomy of educational objectives[J]. Education Teaching Forum, 2020(52): 234-235.
ZhengG, HanW, LiZ Y. Innovation of curriculum teaching system oriented by comprehensive teaching objectives: Based on the exploration of BOPPPS method[J]. Journal of Higher Education, 2024, 10(15): 63-66, 71.
LiuC. Exploration on flip classroom teaching mode of JavaScript language programming course[J]. Journal of Suihua University, 2024, 44(5): 137-139.
[33]
John-SteinerV. Creative Collaboration[M]. Oxford: Oxford University Press, 2006.
[34]
SchultzE, GarciaL S, FernandesL A, et al. Cultivating creative coexistence(s): Towards a critical education for creativity praxis to construct fairer human coexistences[C]//Proceedings of the 16th Participatory Design Conference 2020 - Participation(s) Otherwise-Volume 1. Manizales Colombia. ACM, 2020: 33-43.
[35]
CarrollE A, LatulipeC, FungR, et al. Creativity factor evaluation: towards a standardized survey metric for creativity support[C]//Proceedings of the seventh ACM conference on Creativity and cognition. Berkeley California USA. ACM, 2009: 127-136.
[36]
CsikszentmihalyiM. Society, culture, and person: A systems view of creativity[M]// The Systems Model of Creativity. Dordrecht: Springer, 2014: 47-61.
[37]
de RooijA, JonesS. Mood and creativity: An appraisal tendency perspective[C]//Proceedings of the 9th ACM Conference on Creativity & Cognition. Sydney Australia. ACM, 2013: 362-365.
[38]
MichaelJ. Creativity in education: The role of classroom environment and teacher expertise[J]. Educational Psychology Review, 2021(33): 123-145.
[39]
BarrettM S, CreechA, ZhukovK. Creative collaboration and collaborative creativity: A systematic literature review[J]. Frontiers in Psychology, 2021, 12: 713445.
QinQ H. A qualitative study on the effect of school-enterprise cooperation education on the cultivation of innovative talents' creativity[J]. Journal of Baise University, 2019, 32(6): 125-134.
YangM, ZhaoW. Creativity cultivation in Britain under the constraints of national curriculum: A review of "creative partnership program"[J]. Journal of Teacher Education, 2018, 5(5): 90-98.
[44]
LassigC J. Promoting creativity in education: from policy to practice: An Australian perspective[C]//Proceedings of the Seventh ACM Conference on Creativity and Cognition. Berkeley California USA. ACM, 2009: 229-238.
ZhangL Z, HuangX Y. Research on innovative education mode in engineering colleges based on creativity structure theory[J]. Education and Vocation, 2014(36): 170-172.
SunX D, LiuN. Innovation and creativity cultivation: A preliminary study of European children's architectural education[J]. Art Research, 2021(2): 130-136.
[49]
SamaniJ, PanS C. Interleaved practice enhances memory and problem-solving ability in undergraduate physics[J]. NPJ Science of Learning, 2021, 6: 32.
[50]
DenervaudS, ChristensenA P, KenettY N, et al. Education shapes the structure of semantic memory and impacts creative thinking[J]. NPJ Science of Learning, 2021, 6: 35.