新工科背景下问题驱动法在计算机程序设计教学中的应用研究
2024-10-09李波
摘 要:在新工科背景下,针对传统计算机程序设计教学方法存在的问题,例如缺乏应用场景、缺乏实践性、缺乏互动与实时反馈等,该文旨在探讨在教学中应用问题驱动教学方法以解决这些问题,包括引入实际问题情境和培养问题解决能力等。通过问题驱动教学方法,学生能够更好地理解所学的知识和技能,并能够运用所学的编程知识解决复杂的实际问题,从而促进其综合能力的发展,为未来的职业发展奠定坚实的基础。
关键词:新工科;计算机程序设计;问题驱动法;问题解决能力;创新性思维;团队合作能力
中图分类号:G642 文献标志码:A 文章编号:2096-000X(2024)29-0120-04
Abstract: In the context of the New Engineering paradigm, this paper aims to address the issues associated with traditional computer programming teaching methods, such as the lack of application scenarios, practicality, interactivity, and real-time feedback. The objective is to explore the application of problem-driven teaching methods in order to resolve these problems. This includes the incorporation of real-world problem contexts and the cultivation of problem-solving abilities within the teaching process. Through problem-driven teaching methods, students can gain a better understanding of the knowledge and skills they are learning, and can effectively apply their programming knowledge to solve complex real-world problems. This approach fosters the development of their overall abilities and establishes a solid foundation for their future career advancement.
Keywords: new engineering; computer program design; problem-driven teaching approach; problem-solving abilities; innovative thinking; teamwork skills
基金项目:广东省2024年度教育科学规划课题(高等教育专项)“基于粤港澳大湾区跨海桥梁驱车监测技术的《高等结构动力学》课程教学改革与实践”(2024GXJK396 )
作者简介:李波(1984-),男,汉族,陕西安康人,博士,助理教授。研究方向为土木工程智能计算,人工智能与大数据分析。
为适应当前社会的需求和挑战,教育部推出新工科计划,旨在培养具备创新能力、实践经验和综合素质的复合型人才。在这一背景下,计算机程序设计作为非计算机专业学生的一门基础课,在培养学生利用计算机解决实际工程问题的能力方面起着重要作用。
新工科计划的目标是培养具有创新性、强实践能力和社会责任感的人才[1-2]。针对非计算机类的程序设计课程教学,提出了一些新的要求。首先是问题解决能力[3],在新工科背景下,培养具备综合技术能力和创新思维的工程技术人才是至关重要的,而问题解决能力是其中的核心能力之一。因此,在程序设计教学中强调解决问题的方法和思路,培养学生利用编程解决问题的能力。其次是团队合作能力[4],在新工科背景下,团队合作对于解决复杂问题、推动创新和实现综合性项目至关重要。因此,在教学中鼓励学生进行团队合作,以促进交流和共同学习。第三个是创新性思维[2],在新工科背景下,强调培养具备创新能力的工程技术人才,使其能够应对快速变化的社会和技术挑战。因此,在教学过程中,要帮助学生跳出传统思维框架,基于程序设计挖掘新的解决方案,为面对复杂问题提供创新的视角和方法。
一 存在的问题
传统的程序设计教学以老师为中心,学生总是被动地接受老师传授的知识点,且教学过于注重理论知识的灌输,缺乏与实际问题的结合。因此导致学生觉得程序设计课程枯燥无味,学习积极性差,没有学习动力[5]。
基于新工科视角,当前非计算机专业的程序设计教学存在如下明显的问题。首先,缺乏实际应用场景。传统的计算机程序设计教学通常将重点放在编程语言的语法和基本概念上,而忽略了实际应用场景的引入。这导致学生所学的知识与实际应用脱节,难以看到学习编程的意义和价值,因此,缺乏学习的积极性。其次,缺乏实践性。传统的计算机程序设计教学注重理论知识的传授,但缺乏实践性的内容。学生消极地接收课堂上的知识点,缺乏实际动手编写和调试程序机会,使得学生难以真正理解编程的实际应用,教学中亦无法真正培养学生解决实际问题的能力。再次,缺乏互动与实时反馈。在传统的计算机程序设计教学中,学生与教师之间的互动和实时反馈较少。学生感到孤立和被动,在遇到问题或困惑时难以及时得到解答和指导。缺乏互动和实时反馈机制使得学习变得单调乏味,学生的积极性和参与度下降。最后,课程考核手段单一。教师按照课程进度每周指定课后练习题进行验证性实验,以巩固当周讲授的内容。课程的最后评分按照平时作业和期末考试成绩综合评定。然而,这种单一的考核手段不能合理地反映学生的能力,对于那些热爱学习和思考的学生没有起到激励作用。
为了解决这些问题,教学方法需要适应现代学习需求,特别是新工科人才培养目标。因此,本文将探讨引入问题驱动教学模式。在教学过程中,通过引入实际问题情境和提供开放性问题,促进学生之间的互动和合作,改变传统单一的考核手段,从而提高学生利用程序设计解决实际问题的能力,并激发学生的学习积极性。
二 问题驱动教学方法的理论基础
问题驱动教学方法(Problem-Based Learning,PBL)[6]做为一种以学生为中心的教学策略,强调学生通过探索和解决现实世界问题来积极学习。在PBL中,学生通过合作解决复杂、开放且与其专业领域相关的问题,自主学习,以培养批判性思维、问题解决能力和有效团队合作能力[7]。
问题驱动教学方法与传统的教学方法有所不同。传统教学方法侧重于教师的讲解和知识传授,而问题驱动教学方法更加注重学生的主动参与和探索。它鼓励学生提出问题,并通过自主学习和探索来解决问题。教师的角色是引导和支持学生,提供必要的指导和资源。
问题驱动教学方法有助于培养学生的批判性思维、问题解决能力和团队合作能力。它可以帮助学生发展自主学习的技能,培养其主动寻求知识和信息的能力,并将所学知识应用于实际问题。通过问题驱动教学方法,学生可以更深入地理解所学知识,并将其应用于真实世界情境。这种方法不仅增强了学生的学习动机和兴趣,激发了其好奇心和创造力,还提高了学习成果和能力。
新工科背景下,强调培养学生的创新思维和解决复杂问题的能力。问题驱动教学方法能够促进学生在应对现实世界挑战时的创新思维、问题解决能力、自主学习和适应能力的发展,与新工科教育目标相得益彰。
三 问题驱动教学方法在程序设计教学中的应用
在计算机程序设计教学中采用问题驱动的教学方法,本文从以下五个方面提出具体措施:引入实际问题情境、培养学生解决问题的能力、培养学生团队合作能力、提供开放性问题的教学环境及改变课程考核方法。
(一) 引入实际问题情境
传统的计算机程序设计教学通常注重抽象的概念、理论知识和语法规则,而忽略了这些知识与实际问题场景的联系。然而,引入实际问题情境可以为学生提供学习编程的上下文和动机。当学生能够看到编程在解决实际问题中的应用和意义,以及实际问题情境可以将抽象的概念和理论与具体的场景相连接时,他们往往更容易理解和投入学习。这样的实际问题情境能够激发学生的兴趣,增加他们的学习动力。以下是一个具体的实例,用于讲解选择结构的概念和应用。
假设要编写一个程序来控制一台智能车辆,在不同的路况情况下选择最佳的驾驶模式。这个程序需要考虑车速、车辆重量等因素,并从预设的六种驾驶模式中选择最适合的模式。让我们看一下具体的条件和对应的最佳模式选择:①在道路干燥条件下,当车速大于100 km/h且车辆重量不超过2 000 t时,最佳模式为“运动模式”。当车速大于100 km/h且车辆重量超过2 000 t时,最佳模式为“越野模式”。否则,最佳模式为“正常模式”。②在道路湿滑条件下,如果车速大于80 km/h,最佳模式为“安全模式”。否则,最佳模式为“正常模式”。③在道路结冰条件下,如果车速大于60 km/h,最佳模式为“雪地模式”。否则,最佳模式为“正常模式”。④在道路有交通堵塞条件下,最佳模式为“城市模式”。
通过这个实例,我们引出了在程序设计课程中学习选择结构的必要性和重要性。通过引入实际问题情境,将选择结构的概念和理论与具体的场景相连接。学生可以更好地理解和应用概念、理论和语法规则,并意识到他们所学习的抽象的选择结构概念和理论可以应用于实际问题情境中,用于解决实际问题。这样的教学方法能够激发学生的兴趣,增加其学习动力。
(二) 培养解决问题的能力
在传统的计算机程序设计教学中,由于缺乏与实际问题相关的情境,学生难以将所学知识应用到实际情景中。这导致学生失去面对复杂实际问题的机会,从而错失培养综合分析和解决问题能力的机会。相比之下,问题驱动教学方法通过提出真实且有挑战性的问题,激发学生的学习兴趣和动力。在解决问题的过程中,学生需要运用各个学科的知识和技能,进行跨学科的综合思考和操作。他们积极主动地搜集和整理相关知识,深入思考和分析,并将它们与所学的编程知识和技能有机地结合起来,以解决问题。
一个具体的实例是在学生的上机实践中,要求他们综合运用程序设计课程所讲解的理论和方法,完成一个简单的桥梁荷载计算机程序。该程序旨在帮助土木工程师进行桥梁结构的荷载计算。学生需要考虑桥梁的几何形状、材料特性、荷载情况等因素,并设计算法来计算桥梁的受力和应力。此外,还需要实现用户界面,以便用户能够输入桥梁的参数、荷载信息,并查看计算结果。
通过这个上机题目,学生能够培养利用计算机程序解决实际问题的能力。首先,锻炼了学生对实际问题的分析和建模能力。学生需要理解桥梁荷载计算的基本原理和方法,并将其抽象为计算机程序的形式。他们还需要考虑桥梁的几何形状、材料特性、荷载情况等因素,并将其转化为算法和数据结构的形式,以确保程序能够进行准确的荷载计算。其次,训练了学生的算法设计和实现能力。学生需要设计适当的算法来解决桥梁荷载计算中的力学和结构问题。他们需要实现这些算法,并考虑算法的效率和准确性,以确保计算机程序能够提供可靠的计算结果。再次,还锻炼了学生的用户界面设计和交互能力。学生需要设计用户友好的界面,使用户能够方便地输入桥梁的参数、荷载信息,并查看计算结果。他们需要考虑用户体验和界面设计的原则,以提供良好的使用体验和操作效率。最后,培养了学生的错误排查和调试能力。在开发过程中,学生可能会遇到各种问题和错误。他们需要具备良好的问题排查和调试能力,能够分析和修复程序中的错误,以确保程序能够正确运行并产生准确的结果。
(三) 促进团队合作
传统计算机程序设计教学方法通常侧重于个人技能的培养,学生在个体工作环境下独立完成编程任务。这种方法注重学生对编程语言和算法的掌握,但对于团队合作意识的培养相对较少。学生倾向于将注意力集中在个人技能的发展上,而忽视了与他人协作和沟通的重要性。在这种环境下,学生可能会缺乏团队合作技能,如分工合作、协商决策和解决冲突等,这些在实际工作中是非常重要的。
相比之下,问题驱动教学方法更加注重团队合作意识的培养。通过将学生组织成小组,共同面对实际问题和项目挑战,学生必须在团队中进行有效的合作。这种方法强调学生之间的互相学习和知识共享,鼓励他们共同解决问题,并将个人技能融入到团队的整体目标中。问题驱动教学方法通过创造实际情境和项目情境,使学生在实践中体验到团队合作的重要性,并培养学生在团队合作中的沟通、协调和领导能力。
此外,问题驱动教学方法还注重学生对实际问题的分析和解决能力的培养。团队合作要求学生能够共同分析和理解问题的本质,并提出创新的解决方案。在这个过程中,学生必须相互协作、交流和讨论,共同制定解决问题的策略。通过团队合作,学生不仅能够提高自己的解决问题能力,还能从团队成员中获取不同的观点和思维方式,进一步扩展他们的思维广度和深度。
因此,问题驱动教学方法在培养学生团队合作意识方面具有明显的优势。通过团队合作项目、知识共享、沟通协调和解决问题能力的培养,问题驱动教学方法能够更好地培养学生在团队合作中的技能和意识,使其更好地适应未来的工作环境和职业要求。
(四) 提供开放性问题
传统的计算机程序设计教学方法通常采用确定性和结构化的问题设置。这些问题通常具有明确的目标和具体的步骤,学生需要按照规定的要求和流程完成任务。这种方法在初学阶段具有必要性,可以帮助学生建立基本的编程技能和理解编程概念。然而,这种方法存在一个限制,即学生只需要按照预定的模式进行编程,缺乏面对真实世界问题的灵活性和创造力。
问题驱动教学方法强调开放性问题的提供。这些问题通常不是只有单一的答案或固定的解决方案,而是需要学生进行深入思考、创造性思维和探索性学习的问题。这样的问题设置鼓励学生从多个角度思考和解决问题,培养其创新能力和批判性思维。学生需要运用所学的知识和技能,结合自己的经验和想象力,提出独立的解决方案。问题驱动教学方法的开放性问题设置还可以激发学生的兴趣和主动性。学生在面对具有挑战性和实际意义的问题时,更有动力主动探索和学习。这种问题设置可以培养学生的自主学习能力和问题解决能力,让其成为主动的知识构建者和学习者。
一个具体的实例是,在学生进行上机实践时,要求他们综合运用程序控制结构及相关理论,完成以下一个程序:在土木工程中,地基沉降是一个重要的问题。为了预测和模拟地基沉降,请编写一个简化的地基沉降模拟程序来模拟地基的沉降过程。该程序需要考虑地基的材料特性、负荷情况、时间和步长。基于该程序,用户根据输入的地基信息和负荷信息,模拟地基的沉降过程。
这个上机题目具有开放性,可以训练学生的创新性思维。学生通过选择结构和循环结构编程,可以实现一个简化的地基沉降模拟程序。在编写该程序时,学生可以选择不同的地基材料、负荷情况和时间范围,这为学生提供了多个可选项和自由度,鼓励他们在设计程序时进行创新思考。他们可以根据具体情况选择合适的材料参数和负荷情况,以及调整时间范围,从而探索不同的沉降模拟结果。此外,学生还可以尝试不同的参数设置,例如不同的时间步长、不同的算法等,以观察对模拟结果的影响。通过调整参数并观察结果的变化,学生能够培养优化和调试程序的能力。同时,学生还可以进一步拓展程序的功能,例如考虑其他因素对地基沉降的影响,如水分变化、地基形状等。通过提出和实现这些拓展功能,学生可以培养创新性思维和解决问题的能力。
(五) 改变课程考核方法
新工科人才培养目标强调学生的创新思维、实践能力和团队协作意识的培养,因此,课程考核方法应注重这些方面的考察。
首先,教学评价方法应注重学生的平时表现和学习过程。在传统计算机程序设计教学方法中,学生期末考试成绩通常占比在70%以上,如此则导致学生只侧重于理论知识的掌握,忽略综合能力和实践能力的训练,容易形成考前突击的不良习惯。而计算机程序设计作为一门实践性很强的课程,传统的重理论轻实践的培养方式无法达到新工科人才培养目标。而在问题驱动教学中,考核方法应该通过平时作业、课堂表现、小组讨论等方式来观察和记录学生的学习过程和参与度。这样可以更准确地评估学生的自主学习能力、问题解决能力及团队合作能力等。教师可以通过定期的反馈和指导,激发学生的学习动力,帮助他们不断改进和提升。
其次,教学评价方法应注重学生的创新能力的培养。传统的计算机程序设计教学评价方法通常以正确性和效率为主要标准,忽略了学生的创新能力。在问题驱动教学中,评价方法应注重学生的创新思维和解决问题的独立性。可以通过设计开放性的项目任务,鼓励学生提出创新的解决方案,评估其创新能力和独立思考能力。评价方法可以包括创新成果展示、创新报告、创新评审等形式,以评估学生在问题驱动学习中的创新能力。
最后,教学评价方法应注重学生的实践能力的培养。传统的计算机程序设计课程考核方法主要注重理论知识的掌握,忽略了学生实践能力的考核。在问题驱动教学中,考核方法关注学生在实际问题情境中的应用能力。可以通过真实项目的实践、实际案例的分析和解决、实验结果的评估等方式,评估学生在实践中的表现和能力发展。评价方法可以包括实践报告、实验结果分析、项目成果评估等形式,以评估学生在问题驱动学习中的实践能力。
四 结束语
新工科背景下,传统非计算机类的程序设计课程教学方法在培养学生综合能力和创新能力方面存在不足。为了解决这一问题,本文探讨引入问题驱动教学方法。问题驱动教学方法能够激发学生的学习兴趣和动力,提高其学习积极性。通过引入实际问题情境和培养解决问题的能力,学生能够更好地理解和应用所学的知识和技能,并能够在实际问题中运用所学的编程知识解决复杂的问题。因此,问题驱动教学方法在程序设计课程教学中具有重要的应用价值,可以促进学生的综合能力发展,培养创新思维和团队合作能力,为他们未来的职业发展打下坚实基础。
参考文献:
[1] 李培根.工科何以而新[J].高等工程教育研究,2017(4):1-4,15.
[2] 孙峻.“新工科”土木工程人才创新能力培养[J].高等建筑教育,2018,27(2):5-9.
[3] 徐晓飞,丁效华.面向可持续竞争力的新工科人才培养模式改革探索[J].中国大学教学,2017(6):6-10.
[4] 张璧,吴凤霞.基于“综合设计”课程的新工科教育探索[J].高等工程教育研究,2020(2):41-48,60.
[5] 郭卫斌,罗勇军,杨建国.课内外融合的计算机程序设计实践教学模式[J].计算机教育,2020(6):39-42.
[6] YEW E H, GOH K. Problem-based learning: An overview of its process and impact on learning[J]. Health professions education. 2016,2(2):75-79.
[7] CHIS A E, MOLDOVAN A, MURPHY L, et al. Investigating flipped classroom and problem-based learning in a programming module for computing conversion course[J].Journal of Educational Technology & Society,2018,21(4):232-247.