基于科学计算思维与创新能力培养的教学探索
2023-11-08孙文杰李睿段继豪刘辰元振毅
孙文杰 李睿 段继豪 刘辰 元振毅
[摘 要]培养多元化、综合型人才是新工科建设的基本要求,其中科学计算思维与实践创新能力的培养是重要的举措之一。文章以机械设计制造及其自动化专业的必修课C语言程序设计为研究对象,认真全面地剖析了该课程现行教学模式中存在的问题与相应原因,基于“学生为主、教师为辅”的教学理念并综合新工科与本专业培养要求,提出了一系列切实可行的课程改革方法,以期达到提升课程教学质量、培养具有科学计算思维与实践创新能力人才的目标。
[关键词]C语言程序设计;科学计算思维;实践创新能力;课程改革
[中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2023)14-0054-04
伴随着第四次工业革命的到来,为了满足国家战略发展的新需要,着力提升国家核心竞争力,以培养卓越工程师为核心的“新工科”建设应运而生[1],与传统工科不同,新工科更加注重培养学生积极的批判性思维、敏锐的发展眼光以及有效的创新思维与能力[2]。其中程序设计能力是工科学生今后在科学研究与工程实践中开展科学计算、数据分析以及系统设计等相关工作的基本要求[3],与数学、物理等基础学科具有同样不可或缺的地位,它是落实新工科教育要求的重要体现。C语言作为一门通用的计算机语言,因其高效、灵活、功能丰富、表达能力强和较高移植性等突出优点而被广泛用于系统与应用软件的开发,是高等院校培养学生科学计算思维与实践创新能力的一门必修课程[4]。
但在目前的C语言程序设计课程教学中,教师往往照本宣科、不重视学生程序设计思维与实践创新能力的培养,部分学生课堂被动式听讲、学习兴趣缺乏、独立思考与自主学习意识淡薄,面对抽象枯燥的基本概念、烦琐易错的数据类型以及复杂灵活的语法结构容易产生畏难与抵触心理[5-6],这些问题严重影响了课程的教学效果以及专业人才培养的质量。开展C语言程序设计课程的教学探索与改革创新,不仅可以分析当前教学实践中存在的问题并找出有效的解决办法,而且能够为后续其他课程的教学实践与改革提供理论基础与实战经验,同时对于培养学生良好的学习习惯、科学的思维方式以及实践创新能力具有重要的现实意义。
一、传统教学模式存在的问题
机械设计制造及其自动化专业作为西安理工大学(以下简称我校)首批国家级一流本科建设专业,自开办以来始终以坚持培养高素质应用型工程技术人才为目标,其中培养学生正确使用信息技术工具对机械装备制造领域复杂工程问题进行分析、计算与设计是毕业要求的重要评价指标,因此C语言程序设计课程一直都是本专业一门重要的公共基础课程。为了落实课程思政教育与国家一流专业建设整体要求,C语言程序设计课程调整了原有的教学大纲与教学任务,开课学期由第二学期调整为第一学期,总学时调整为40学时(其中讲课学时28学时、上机实验12学时),选课人数300余人,授课老师均由本学院专业教师担任;课程考核采用笔试方式,课程成绩由平时成绩(10%)、实验成绩(30%)、期终考试(60%)综合评定产生。
在近几年的教学实践中发现,学生对于C语言程序设计课程的学习整体存在兴趣不浓、热情不高、通过率偏低等问题,而这些问题也直接影响了学生对于其他课程的学习,因此分析上述问题对于提高课程教学质量势在必行,同时也为制定有效可行的解决方案提供可靠依据。经过课程小组的研讨与分析,目前本课程主要存在以下三个方面的问题:
(一)基础知识薄弱、课程目标不清、学习动力不足
C语言程序设计作为大一新生入学后的第一门计算机类课程,很多学生觉得既熟悉又陌生,熟悉的是他们经常使用的文档编辑与娱乐社交都离不开计算机,但对于计算机内部的存储、编码以及内存地址等基本概念完全陌生,对于计算机程序设计更是知之甚少;本课程使用的编辑环境又多采用英文模式,英语水平一般的学生看到代码调试与运行时的专业术语更容易望而生畏。
此外,很多学生不清楚机械专业为何需要学习程序设计语言,程序设计对于后续的专业课程学习有何帮助,既然需要学习编程语言为何不选用Python、C++等流行语言,而学习相对古老和过时的C语言。这些问题导致学生在学习本课程时往往积极性不高、学习兴趣淡薄,甚至有个别学生因此产生厌学放弃的不良情绪,这不仅严重影响本课程的教学质量与效果,而且很容易让学生形成不良的学习习惯。
(二)自主学习欠佳、实践创新脱节、学习维度不高
部分学生对于C语言程序设计课程的学习依然是被动式的,除了课堂听讲与上机实验之外很少对课程内容进行温习与总结,课程作业与实验上机报告大多都互相抄袭、草草了事,课堂上只听不记,基本没有记笔记的习惯。
C语言程序设计是一门理论与实践并重的课程,学生除了掌握课程知识点外,还需通过动手操作来提高编程能力,但部分学生除了必备的上机实验外并没有其他的编程实践。学生上机实践时,往往都参照教材,对于与课程例题或课本习题相似的题目,依葫芦画瓢尚可顺利编译成功,但对于陌生的题目往往不知从何入手,通常只会写出几行头文件代码以及与之相关的变量定义,缺乏对问题的系统分析以及对所学知识的整合与变通。一些学生在程序调试过程中遇到编译错误时缺乏自我探索,习惯于依靠老师的辅导,并错误地认为只要死记硬背不需实践训练也能学好这门课程。
此外,本课程选定的实验上机题目大多来源于教材,对于学生的考查往往局限于某个特定的知识点,缺乏综合性与创新性,学生虽然可以通过模仿课堂习题完成上机任务,但无法有效培养综合编程能力,更难以培养解决实际科学问题的能力。这种扁平化、低维度的学习导致学生在课程结束后只达到了对C语言程序设计课程基本知识与原理的理解要求,无法达到灵活应用、创新发展的高层次要求。
(三)教学模式单一、考核方式传统、学习延续性差
传统的多媒体教学虽然可以保证授课内容的完备性和系统性,但枯燥无味的基础知识讲解,无法调动学生的積极性与主动性;教师与学生难以利用课堂与有限的上机环节进行有效互动,导致学生课堂参与度不高;受时间与空间条件限制,教师在课后无法有效开展答疑辅导,及时解决学生在课外学习中遇到的问题,这些问题都导致了教师无法全面、有效地掌握学生的实际学习情况。此外,授课内容完全依赖课程教材,缺乏与课外知识的联系和拓展,学生无法了解课程知识与工程实践之间的联系,教学形式与内容单一、死板。
目前课程的考核方式仍多采用传统的笔试方式,考查内容多以语法知识为主,题型设置陈旧,缺乏开发性与创新性,只注重考核学生的记忆能力、应试能力,无法有效考查学生的编程能力以及解决实际问题能力,这样就容易导致学生“高分低能”,教学效果不好,忽略了课程对学生综合编程实践与科学思维能力的培养[7]。此外,课程结束后没有及时安排其他相关课程,使学生存在“知识断层”的现象,没有办法做到学以致用,除了少部分报考计算机等级考试的学生外,其他学生直接将所需C语言编程抛之脑后,等后续课程再次使用时已基本忘却,课程的延续性差。
通过以上分析发现,当前C语言程序设计课程教学中存在的问题主要在于师生对于新工科建设背景下人才培养要求的认识不足,以及对高等教育中对“以学生为本”的教育理念理解不够,而这些问题的存在不仅严重影响了课程教学质量与效果,而且阻碍了对学生科学计算思维以及实践创新能力的培养,同时也对学生其他课程的学习产生了负面影响。因此,分析本课程目前所存在的教学问题,并制定一系列行之有效的改革实践方法来确保后续的高质量教学是刻不容缓的,更是新工科人才培养与国家一流专业建设的基本要求与任务。
二、课程改革与实施措施
教学实践环节是一个师生融合、师生共进、教学相长的过程,任何教学问题的出现都与教师和学生密不可分,因此基于上述关于课程教学问题的剖析与研究,结合我校机械设计制造及其自动化专业培养目标,以“学生为主、教师为辅”的教学理念制定了以下三个方面的课程改革实施办法:
(一)查漏补缺、抛砖引玉,构筑学习新动力
针对学生基础知识薄弱的问题,在课程初期结合实际教学情况,安排与课程相关的计算机基础知识讲座并提供课外学习资料,帮助学生了解基本的计算机相关知识;采用现场演示的方法,对于课程编程所需的DevC++或XCode等主流编译环境进行细致讲解,从软件的下载、安装、设置、使用等方面进行逐步演示与辅导,并针对一些常见的调试错误进行演示。
C语言虽然是一门相对古老的计算机编程语言,但其与硬件优良的兼容性使得C语言在一些系统软件与应用软件中常立于不败之地,其他高级语言如C++、C#等都是在C语言的基础上拓展开发而来的[8],日常生活中的安卓系统、Windows操作系統均离不开C语言的身影,因此选择C语言作为程序设计能力培养的编程语言并不是落后的选择,而是科学合理的。虽然机械设计制造及其自动化专业是培养机械装备制造领域的技术人才,但随着数字化、智能化、集成化机械装备与系统的发展,从智能制造、无人工厂再到数字孪生等方面无不与程序设计紧密相连;根据专业培养方案的要求,后续的单片机与嵌入式系统、计算机数控技术、机器人技术基础等课程都对学生的编程能力具有一定要求,因此机械专业开设C语言程序设计课程非常必要且意义重大。
通过上述措施一方面帮助学生建立课程必备的计算机基本知识体系,另一方面让学生正确认识本课程开设的必要性与重要性,结合专业培养方案使学生产生强烈的学习兴趣与动力,并激励学生刻苦钻研、迎难而上,学好程序设计以便今后为国家建设贡献力量。
(二)立体学习、实践创新,搭建学习新维度
随着信息技术的迅速发展,传统的课堂教学已无法满足当前的教育教学形势,C语言的课程教学内容多、课程学时少,通过课堂有限的时间讲授所有内容存在一定的难度,因此需要引导学生建立多元化、网格化、个性化的立体式学习思维。要求学生在课堂听讲时做好课程笔记,鼓励学生充分利用在线教育平台(例如网易公开课、大学慕课、C语言网)、图书馆数据库等网络资源来拓展课程内容,教师通过课程研讨会、面对面集体答疑、线上一对一辅导等交流方式帮助学生答疑解惑,通过微信群、QQ群等社交平台鼓励学生在课后探讨交流、分享经验,让学生在热烈与轻松的互动交流中学习并巩固知识,教师也可以据此直接全面地了解学生学习中的困难与问题。
加强实践创新教育,以实践教学促进理论教学,着力提升学生程序设计的综合能力。实验上机题目分级设置,通过验证型题目、设计型题目、综合型题目,循序渐进、由浅入深来激发学生的实践创新能力[9]。其中验证型题目用于考查学生对基础知识以及编译环境的熟悉程度;设计型题目则要求学生模仿课堂经典实例,建立科学计算的思维模式,培养学生分析问题并解决问题的能力;而综合型题目力图通过系统性、复杂性问题考查学生是否能对所学知识进行融会贯通、扩展与升华,培养学生科学计算思维以及实践创新能力。
除了课程规定的实验教学外,应该以项目为引导,以任务为驱动,开展形式多样的课后拓展练习,并将实践项目贯穿教学过程的始终,例如选择以ACM?ICPC国际大学生程序设计竞赛题目作为训练项目,结合轻量且功能强大的集成开发工具Lightly建立学习小组,鼓励学生相互交流、集思广益、协同合作完成指定项目;选用浙江大学开发的PAT计算机程序设计能力考试系统,要求学生在该平台上进行编程训练,并鼓励学生参加该平台统一组织的在线考试。
通过立体式学习、团队协作交流实践以及娱乐式创新练习,激发学生的创新思维,提高学生程序设计的综合实践能力,使学生处于形式多样、内容丰富、寓教于乐的多维度学习氛围中。
(三)多元促教、综合考评,建立课程新标准
改变以往“教师为主、学生为辅”的教学模式,充分尊重学生在教学活动中的主体位置,将教师的主导性教学转换为引导性教学。积极开展翻转教学法(例如引入雨课堂[10]),将学生的被动强迫式学习调整为主动探索性学习,鼓励学生积极参与课堂教学环节,推动教师与学生在教学中产生互动,让学生在教中学、教师在学中教,充分调动学生学习的积极性与主动性,增强学生的融入感与体验感,实现“师生促教、教学相长”的课堂效果。精简教学内容,建立课程知识图谱,将课程中零散繁多的知识点融入经典实例的讲解中。程序设计课程的教学不仅是技术与知识的传授,更是思维模式的培养与塑造[11],教师应在传授学生课程基本知识与原理的同时引导学生形成一种正确的程序设计思想,使学生真正实现对知识的融会贯通,从而达到学以致用的效果。
开展以问题为导向的启发式教学,通过制造悬念或形成认知上的“冲突”,启发学生的学习兴趣,让学生积极参与教学内容的讲述过程中,从而提高学生认识问题和解决问题的能力。例如以 “数据在函数间的传递”为引入点,激发学生学习形数与实数二者区别的兴趣。针对学生理解较为困难的知识点,可采用情景案例教学,例如在讲授“指针”概念的时候,可以使用“门牌号”“教室”等直观情景概念帮助学生理解“指针”的本质是地址,并以“使用指针交换两个数”为例来让学生体会“指针”的内涵与使用。
改变现有的课程考核方式,弱化期末笔试环节,加强过程化考核力度,提高课堂互动与實验上机在总成绩中的比重,严格执行课外实践项目、课程笔记在课程总成绩中的量化指标,调整现行笔试环节中的题型与内容,增加具有综合性、挑战性、创新性的开放新题目。上机实验考核不再以实验报告为主,而是充分考虑学生在编程过程中算法设计能力、调试编译能力的体现,课程作业采用分组协作的方式,使每位同学都参与不同题目的训练,并制定严格的作业抄袭处罚制度,确保学生通过课程作业、课堂笔记、实验上机、课后实践四个环节真正达到课程教学的目标要求。
以多元化的教学模式以及“学生为主导、教师为辅助”的教学理念,通过合理有效的综合考评体系,建立评价课程教学质量与效果的新标准,从而为学生提供一份科学、合理、有效的学习指南。
三、结语
本文针对机械设计制造及其自动化专业必修课C语言程序设计课程现状,认真剖析并反思了当前教学实践中遇到的问题及对应的原因,并基于“以学生为主体”的教学理念,结合新工科背景下的人才培养要求,针对教学过程中的不足制定了详尽可行的探索性改革方法,以此来提高本课程的教学质量与效果,实现培养学生科学计算思维与实践创新能力的课程目标,同时为其他课程的教学实践改革提供新思路与新方法。
[ 参 考 文 献 ]
[1] 钟登华.新工科建设的内涵与行动[J].高等工程教育研究,2017(3):1-6.
[2] 林健.面向未来的中国新工科建设[J].清华大学教育研究,2017,38(2):26-35.
[3] 宋友.面向大类工科专业的程序设计课程教学改革[J].中国大学教学,2018(11):47-50.
[4] 黄群.C语言程序设计课程教学设计探讨[J].计算机教育,2010(5):78-81.
[5] 王云,郭华丽,李伯飞.情境教学模式在“C语言程序设计”中的应用研究[J].中国教育信息化,2012(5):64-66.
[6] 张立敏,吴涛,吴东.地方高校程序设计能力现状分析与对策研究:以岭南师范学院为例[J].中国教育信息化,2018(8):76-79.
[7] 蒋正锋.应用型高校C语言程序设计课程教学改革研究[J].教育教学论坛,2020(41):167-168.
[8] 鲁红英,肖思和,孙淑霞.“C/C++语言程序设计”课程教学改革与实践[J].计算机教育,2013(7):95-98.
[9] 刘光蓉.以计算思维能力培养为导向的C程序设计实验教学[J].实验技术与管理,2013,30(1):154-156.
[10] 王帅国.雨课堂:移动互联网与大数据背景下的智慧教学工具[J].现代教育技术,2017,27(5):26-32.
[11] 沈军.程序设计语言类课程的教学思路研究[J].高等工程教育研究,2001(1):79-81.
[责任编辑:雷 艳]