摘要:“C语言程序设计”是高校工科类学生与计算机世界接触的一门基础课程,是其他高级编程语言的奠基石。为更好地培育新工科所需的集创新、实践及合作于一体的高素质复合型人才,本文针对“C语言程序设计”课程存在的问题进行分析探讨,探索本课程教学改革的可能性,旨在培育学生积极主动的学习精神,帮助学生建立新思维,提升学生探索性学习能力。
关键词:新工科;“C语言程序设计”课程;教学改革
一、引言
在信息技术飞速发展的时代,以新兴技术为驱动的新兴产业和经济模式大量涌现,社会对于复合型人才的需求逐渐增长,对应用型本科工科教育的人才输出提出了更高的要求,而高校教学模式的改革也成为人才培养和知识深度探索的有力途径。2016年,《教育部高等教育司关于开展新工科研究与实践的通知》提出以“工程教育新理念”“学科专业新结构”“人才培养新模式”“教育教学新质量”为主要内容的指导思想,为推进新工科建设,深化工程教育改革提供理论指导[1]。2019年,文献[2]提出了新工科背景下人才培养的“新模式”,从素质培养、重视训练、密切联系实际产业和提高实践能力等方面切入,为教育改革提供了新思路。20世纪80年代,从美国兴起的“以学生为中心”的本科教学改革运动成为本科教育改革的范本[3]。其中,工程教育CDIO教育理念以构思、设计、实现和运作模式融入本科教育教学,结合“以学生为中心”,以“学生产出”为导向,对创新课程设计有着重要指导意义。CDIO教育理念教育实践,是通过课程教学与课程实训相结合,让学生积极主动融入实践,和课程建立有机联系,真正将课程知识应用于工程场景。本文以CDIO教育理念为指导思想,以培育卓越人才为目标,针对“C语言程序设计”课程理论和实际相结合特性,分析现有“C语言程序设计”课程存在的问题,探讨应用型课程改革思路。
二、“C语言程序设计”课程现状
“C语言程序设计”是学院为计算机、机械、电子信息、电气类工科专业学生开设的公共基础课,也是一门重要的必修课。该课程旨在培养学生程序设计、开发与测试能力,应用计算机思维方法分析和解决问题的能力,以及团队合作精神,为学习后续课程和进一步获得程序设计相关知识奠定坚实的基础。
(一)教学内容安排
本课程共96个学时,由理论学时和实验学时组成。目前,理论学时占比和实验学时相当。目前的教学内容主要分初级阶段、中级阶段和高级阶段。初级阶段主要介绍编程概念,C语言基础语法,数组和字符串与模块化、过程化编程等基础知识。中级阶段涵盖指针的基本概念和内存管理,其中,内存管理包括动态内存的分配和释放。同时,中级阶段包含结构体的基本概念和文件的读写、关闭,文本文件和二进制文件的区别。高级阶段涉及多线程和并发编程,同时会涉及一些基础的数据结构和算法,最后将其融入开放式项目实践中。本课程是一门理论和实践相结合的综合性课程,需要在各阶段教学中合理平衡理论教学与实践教学的比重。考虑到学生个体学习差异以及基础知识储备差异的情况,如果理论教学过多,基础知识较差的学生很难消化相关重难点,而学习能力较强的学生就颇为轻松,但是缺少挑战的机会,限制了对学生创新能力的培养。若按照平等切分的方式教学初级到高级阶段知识,在学生能力和基础存在个体差异的情况下,学生差距会进一步拉大,不利于学生的整体进步。因此,初级到高级阶段的教学内容应该各有侧重点,根据学生过程化学习原则衡量制定。
按照教学大纲进度,前半个学期在理论教室上课,后半个学期在机房实验教室上课,理论和实践脱节较长时间,教学效果不佳。学生不能完全熟练掌握在常规编程软件DEV-C++、Visual Studio中进行程序编写和编译的操作,且通常程序预期输出结果往往和实际输出结果有所偏颇,学生在理论内容上的困惑不能得到及时解决,课堂效率降低。
(二)注重课堂讲授法
课堂讲授法是一种单方面的教学方法,授课教师通过简明、生动的口头语言向学生传授知识、发展学生智力。它是通过叙述、描绘、解释及推论等形式来传递信息、传授知识、阐明概念、论证定律和公式,引导学生分析和认识问题。但由于“C语言程序设计”是一门实操性很强的课程,同时,加上C语言知识点繁杂且抽象,过度采用讲授法,不一定能帮助学生更好地理解程序的功能和逻辑。如若知识点晦涩难懂,课堂讲授法的教学效果会大打折扣,容易导致学生被动学习,出现“一刀切”的现象。课堂讲授法模式下,教师和学生之间的互动性不强,教师也会习惯性过度依赖教材,照本宣科。久而久之,教师和学生缺乏课程有机联系,课后交流也会相对减少,教师容易忽略学生的多样性,学生容易感觉被边缘化。学生主动学习的积极性不高,独立思考的能力得不到提升,同时看待问题的角度也很局限,不利于新工科人才的培养。
(三)考核与成绩评定方式结构失衡
目前,“C语言程序设计”课程的考核与成绩评定比例为,课堂占比8%,平时作业和在线测试占比12%,上机实验占比20%,期末纸质化考试占比60%。考核与成绩评定方式中,期末纸质化考试权重很高。期末试卷注重基础知识考核,会将学生的学习导向基础知识的硬性记忆,考后就忘,不能将所学知识真正应用到实际场景中,解决实际问题。同时,这种失衡的考评方式不能全面精准反映学生的综合能力,忽略了对学生创新能力的培养,不利于学生实践能力提升。
三、“C语言程序设计”教学改革
“C语言程序设计”课程属于应用型课程范畴,注重基础知识的夯实,强调让学生运用计算机思维去分析和解决问题。“C语言程序设计”的教学目标是,针对实际的问题,学生能熟练运用逻辑思维和数学等工具分析,采用自上而下的结构化程序分析方法,给出逻辑正确的、低复杂度的、可读性强的C语言程序,与此同时,帮助学生形成做事有章法、百折不挠的工匠精神。传统C语言教学注重语法基础教学,实验教学缺乏量化指标,同时考核方式单一等问题[4]。下面,笔者就“C语言程序设计”课程教学目标、教学方式、教学评价提出改革意见。
(一)教学目标改革
在学生具备扎实理论知识基础的条件下,应用实践型课程教学可以培养学生的自主实践能力,让学生养成从实践中发现问题、自主解决问题的习惯,从而螺旋式上升夯实C语言基础,为后续学习高阶编程语言进行铺垫。教师应该以学生为中心,把课内理论教学与课外实践教学相结合,把教师教学与科学研究相结合。在专业建设和人才培养方面,加强与产业的融合,并以产业人才需求指导“C语言程序设计”课程的教学设计。基于此,教学目标也应调整为:通过本门课程的学习,学生能够准确、牢固掌握C语言相关的基本语法和基础知识,包括但不限于C语言常量、变量、控制结构、数组、结构体、共用体、函数、指针以及文件的操作等模块的内容;学生能够根据给定的完整代码或代码片段,准确理解所给代码的功能,理解代码的执行逻辑,并能正确推断代码的运行结果;学生具备发现代码中语法错误和逻辑错误的能力;掌握面向过程的基本概念和基本算法,能熟练将基础知识应用于程序阅读、编写程序等领域,亦即能够利用理论知识解决实际问题。在实现以上目标的同时,培养学生良好的编程习惯和严谨的计算机分析能力。
(二)教学方式改革
教学方式改革应以“学生产出”为导向,建立多元化实践创新平台,将培养目标反向设计并浸入到不同教学环节[5],力争培养新工科所需的高素质人才。
首先是课堂教学,在“C语言程序设计”课程中,需要改变满堂灌的教学方式,鼓励引导学生自主学习、个性化学习,巧用翻转课堂,才能因材施教。同时,重构C语言课程体系和教学内容,推动学生进行基于问题的学习、基于项目的学习、基于案例的学习,以达到强化其工程创新、工程设计、工程实践能力的目的。除了课堂讲授法,讨论教学法、自主学习法、任务驱动教学法[6]都能够有效调动学生自主学习的积极性。讨论教学法中,学生以小组为单位,根据教师提出的问题或提供的教学资料,在教师的组织和引导下,积极参与课堂讨论,从而实现教与学的互动。讨论教学法有助于增强学生思维的灵活性,提高课堂的教学效率。自主学习法能够拓宽学生的视野,培养学生的自主学习习惯和能力,提高学生的综合素质。在自主学习法模式下,教师通常会给学生留思考题或实际生产问题,让学生通过利用网络资源自主学习的方式寻找答案,提出解决问题的措施,然后进行讨论评价。任务驱动法能够让学生带着目的性开展学习,有助于培养学生自主发现问题、解决问题的能力。实例驱动式教学模式下,教师可将陈述性知识、程序性知识、策略性知识三者相结合,通过案例开展课堂教学,使学生能够将枯燥的基础知识融会贯通,并巧妙应用于实际问题的解决中[7]。其次是课后自主学习。网络给学生提供了大量学习资源。超星学习通作为一款自主学习软件,方便学生自主学习。教师可以提前发布教学内容、教学计划,引导学生自主学习,同时,教师在学生自主学习的过程中起到辅导和监督作用。学生可以根据自己的进度安排完成学习计划,而不是被动接受教师的输入知识。最后是指导学生的学科创新活动。开展学生项目开发、竞赛均是提高学生学习兴趣的有效方法。通过项目化教学、引导式学习,制定实际场景模拟考试等方式,让学生在模拟的实际环境中完成编程任务,培养学生的知识应用能力和解决问题的能力。这种方式可以检验学生对实际工作中的问题的应对能力,促进学生将理论知识转化为实际技能。
同时,这种方式也能让学生在实践中,根据编程软件的报错提示准确地定位错误并改正错误,确保源程序能够正确编译并得到正确的结果,让学生在改Bug的过程中培养挑战自我、反思自我、提升自我的意识和勇气。除了以上的教学方式改革外,学校还可与企业合作开展专业教学。根据学校与企业联合培养工程技术人才的相关制度、计划以及保障措施的精神,引入“C语言程序设计”课程,建立行业指导、校企合作的协同育人机制[8]。
(三)教学评价改革
教学考核制度需要围绕学生过程化学习成果展开,而不是以一张占比权重很高的纸质化试卷来判定学习质量。教学评价方法不再局限于平时作业、上机实验和期末书面考试,而是倡导引入更为多元化、更具实践性的评价方法,如将实验上机部分进行深入拓展,创设实际场景,安排团队合作项目,针对项目完成过程及结果进行考核评价。教师可将项目设计与评价划分为不同的阶段,每个阶段都设定明确的目标和评价标准,以便及时发现问题并帮助学生持续改进。例如,第一阶段可以是项目需求分析,第二阶段是初步编码,第三阶段是测试改进,最后阶段是项目的完整实现和演示。中间穿插引入代码审查环节,让学生以提高代码的可读性和可维护性为目标,相互评估和改进彼此的代码,以培养学生对代码质量的敏感性, 除了实操性项目,实际问题解决报告也是考查学生分析和解决问题能力的方式,其不仅能够考查学生的编程技能,还能够培养学生的团队协作和沟通技能。引入这些多元化的评价方法,教师可以更全面地考查学生在知识应用、实际问题解决和团队协作等方面的能力,从而更好地反映他们在C语言学习过程中的真实水平。
引入多元化评价方法后,量化考查学生基础知识的期末测试的权重会相对降低,更能展现学生的综合素质,更全面地考查学生学习“C语言程序设计”课程的成果。但是,不得不提到一个多元化考查的弊端,即引入项目化场景、团队协作、提交解决问题的PPT方案均是团队参与。以小组协作的方式提交一份报告容易造成学生依赖他人、滥竽充数的侥幸心理。因此,教师在引入开放式项目设计考查学生时,要关注每个学生的动态及其在团队里的作用、成果输出,关注每个学生的情感发展、任务进展,才能更全面、真实地衡量学生的实践、团队合作、自主学习、创新能力,给出客观、公正的评价。
四、结束语
本文借鉴CDIO教育理念,围绕“以学生为中心”,主张以“学生产出”为导向,探索“C语言程序设计”课程教学改革。从教学内容安排、教学方式和教学评价机制方面分析目前课程现状,结合教师、学生和课程方面的实际情况,提出教学改革的可行性方案,倡导教学方式多途径、多样化,教学评价多元化,全方位考查学生综合素质,为新工科输送高质量人才。
作者单位:姜锋 长春工业大学人文信息学院
参考文献
[1] 教高司函(2017) 6号.教育部高等教育司关于开展新工科研究与实践的通知.[EB/OL]. http://www.moe.gov.cn/s78/A08/tongzhi/201702/t20170223_297158.html.
[2] 李飞.新工科要求下的地方高校网络工程专业建设思路[J].计算机教育, 2019,(04):1-3.
[3] 赵炬明.聚焦设计:实践与方法(上)--美国“以学生为中心”的本科教学改革研究之三[J]. 高等工程教育研究,2018,(02):30-44.
[4] 杨琦,张晓月,韩鑫.C程序设计课程案例教学内容研究与实践[J].高教学刊,2023, 9(12):112-115.
[5] 杨阳,吴其林,徐秋月.新工科背景下基于OBE的教学模式研究与实践——以C语言程序设计课程为例[J].曲靖师范学院学报,2020(39):79-84.
[6] 于刚.面向新工科的C语言程序设计教学模式改革实践与研究[J].互联网周刊, 2023(20):46-48.
[7] 骆魁永,王思霖.新工科背景下“C语言程序设计”课程教学改革探索——以信阳农林学院为例[J].无线互联科技, 2022,(19):161-162.
[8] 黄昌兴.应用型人才培养模式下的校企协同创新创业育人新路径[J].学周刊, 2020(23):9-10.