软件工程教学中创造力培养的实践与思考OA
Practice and Reflection on Cultivating Creativity in Software Engineering Education
在软件工程教育中,锻造学生的持续学习力、知识构建力和创造性思维对项目成功极为关键,而现有教学方法在培育这些能力上尚显不足.本文提出了重构课程知识体系和创新的教学方法,设计并实现了辅助教学系统,帮助提升学生和从业人员的核心能力.首先回顾软件工程课程的现状、知识体系,教学模式理论以及面向创造力的教学方法.然后提出了以软件工程核心问题和任务为基础的教学内容组织方式,重构了一个简洁和聚焦问题的课程知识体系.在教学模式方面,强化创造力的培养,包括教学过程建模、教学安排,并构建了基于创造力发展连续性的动态评估模型,以衡量学生的创造力表现,在实际教学中取得了积极反馈,近三年超过70%的学生在满意度评价中给出了8分及以上的高分.最后设计并实现了一个辅助课堂教学的原型系统.该系统集成了新的课程知识体系和创新的教学方法,全面支持软件工程的教学流程,可实时高效地提升课堂教学质量,并促进学生创造力的发展.本文的创新教学实践和思考给软件工程教育领域提供了新的视角和方法,将有助于培养更具创造力的软件工程人才.
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.
姚敏;罗铁坚
中国科学院大学 计算机科学与技术学院,北京 101408
计算机与自动化
软件工程课程创造力培养知识体系重构动态评估模型辅助教学系统
software engineering coursecreativity cultivationknowledge system restructuringdynamic assessment modelassistant teaching system
《工程研究——跨学科视野中的工程》 2024 (005)
544-563 / 20
评论