程序设计课程案例教学模式

程序设计课程案例教学模式

摘要:在新工科背景下,对高校计算机基础程序设计课程是一个新的挑战,如何与专业结合,更好的为专业课程服务,是改革的方向与重心。教学模式改革,合理利用mooc等教学手段实现线上线下结合、小组讨论的学习方式,同时设计合理的与专业相关的案例,充分调动学生的学习兴趣,使学科交叉不仅拓展了宽度,更挖掘了深度。

关键词:学科交叉;线上线下;小组讨论

引言

大数据、云计算、网络空间安全等新兴技术的提出标志着智能时代的到来。对大学生的能力提出了更高的要求,除了要求熟练计算机基础操作外,还要具有程序设计能力,以便于在今后的学习和工作中更好的满足专业需求。在新工科建设过程中,高校大一开始的计算机程序设计课程与专业融合,提高该课程的教学质量,有利于教学改革和教育创新,有利于创新人才的培养。计算思维培养及编程能力的提高是程序设计课程教学的终极目标。学生如何从基本语法规范的学习提高到掌握编程技巧最后升华为计算思维能力的培养,程序设计课程的案例教学和课程设计相应环节是解决问题的关键环节。

1教学模式的改革

C语言程序设计是一门理论与工程实践密切相关的专业基础课程,培养目标是学生熟练掌握基本的语法规则和算法思想,可以运用C语言编写程序解决实际问题,为后续课程的实践环节打下良好的基础。“重语法,轻能力”是目前程序设计课程普遍存在的问题,虽然这种教学模式有利于知识的系统性与完整性,但忽略了程序设计能力和思维创新能力的培养,特别是C语言语法复杂灵活,各种语法细节让学生望而却步,无法使学生建立真正的编程思想,以致学生学习语言的积极性不高,难以达到良好的教学效果。《斯坦福大学2025计划》提出轴翻转的概念,将“先知识后能力”反转为“先能力后知识”,能力成为大学生本科学习的基础。[1]现在很多教育工作者提出了“重程序、轻语法”的思想和“强化算法、弱化语言”的原则。把教学的重心转向程序设计能力的培养上,但是C语言的语法和算法思想是相辅相成的,没有基本语法的支撑,编程思想很难具体化。算法思想的实现需要具体的语句来体现,如何在有限的学时下不顾此失彼,基于任务驱动小组讨论线上线下结合的教学模式为我们提供了解决的方案。线上教学,教师可以根据课程前后连贯性分析,提取相应的知识点设计任务目标内容小视频在网络上,以if语句为例,相应的学习任务要求及学习方法如表1所示。学生在课前通过网络预览知识点、自学教学视频,如果出现疑问可以查阅相关资料还可以网上提问留言,教师和学生均可回复,这样培养学生自主学习能力的同时有利于开展讨论式教学。简单的基础语法学生通过课前预习,做教师预留的相关测试题,评估是否达到目标要求,如果有疑问可以把问题,带到线下课堂解决,这正是“任务驱动”向“问题驱动”转化的有效途径。线下教学,“学生为主、教师为辅”的角色转换,让学生成为课堂的主体,教师起到引导作用。教师通过启发式提问对线上知识点进行查漏补缺,根据前后课程的互通设计综合性的案例,把学生分成学习小组,对任务进行分解分配,在明确学习目标的前提下,通过小组讨论学习可以夯实学生的知识基础,更好地培养学生计算思考的能力。线上、线下结合,学生案例进行报告,教师随时对各组学生案例进度进行跟踪,对学生疑难点提取并讨论,学生的疑难知识得以消化和巩固,同时教师根据课程内容和学生的学习进展程度设计测试题目对学生学习情况进行跟踪评估。

2基于学科交叉的案例选取

计算机程序设计课程作为大一学生的通识课程面向全校不同专业学生,由于各学科、各专业对程序设计的需求不同,有些专业关注科学计算,有些专业关注数据处理,有些专业关注通讯与控制。面对不同的需求,如果还是单纯地将程序设计课程定位于通识课程,[2]面对不同专业需求,如果采取同一方案,同一案例,例题基本是求素数,各种累加求和,求阶乘,求方程,斐波拉契数列,冒泡排序等简单数学问题或经典算法,而且只讲授编程基础知识是不能满足实际需求的,不能与本专业建立关联,让学生觉得学无所用,没有学习动力,这样会导致很多学生认为非计算机专业开设程序设计类课程无用,学习的目的只是应付考试或者考取个等级证书。学生自主学习能力差,教学效果很难提高。我们需要根据各种专业需求设计出相关案例、作业和综合训练题目,将通识教育与专业需求有效结合在一起,实现从程序设计知识教学到程序设计能力培养的升华。笔者在化学专业学生授课时,对化学专业后续专业需求进行了调查研究,根据需求分析合理的设计案例,如分析化学的核心内容是化学平衡的定量解析,其中涉及到较为复杂的数学处理,编程可以实现精确解析,分析化学中的方程一般不太复杂,而且多是求解浓度,例如常见的求pH问题。[3]学生可以使用相关的工程软件如Matlab,如果读者已有高级语言的基础,最多只要一星期或更短的时间就可完全进入角色。随着专业的深入,特别是研究生阶段,分析化学与计算机的联系越来越紧密,一些研究常常要借助计算机建模,把复杂的分子,复杂的反应模拟出来,这时工程软件不能胜任,更多的是要自己设计程序才行的,培养学生程序设计能力为后续专业提升打下坚实的基础。对于专业课没有深入学习的大一学生,案例的选取既要考虑与专业的结合性,同时又不能过度依赖专业知识。可以适当选择一些独立的不太复杂的求解方程问题。例如采用“二分法”求解方程。其他方程求根算法包括不动点迭代法(Picard迭代)、切线法(Newton-Raphson迭代)、割线迭代法等。与各种迭代法相比,二分法无须建立迭代公式,不必考虑迭代初值,也不必考虑迭代收敛问题,所以在易用性方面具有显著优势,对于非计算机专业用户来说尤其如此。案例设计由简单到复杂到优化,循序渐进地通过实际应用场景的不断变化和实例功能的不断扩展,依次引入C语言的各个语法元素,从专业角度阐述各个C语言概念。这样能更好地加强学生对知识点的理解和运用,特别是加深学生对各个知识点使用场合的理解,有利于工程实践能力的培养。在新工科的背景下,学科交叉融合是新工科建设的落脚点。作为通识课程的程序设计要更好地与专业融合服务于专业,为专业创造性、主动性工作打下坚实的基础,学科交叉融合将该课程建设与其他专业课程相结合,发挥通识课程的优势,真正提高学生的实践动手能力和创新协作能力。程序设计对实践性要求很强,编程能力的培养不能仅凭借教学课程,更要学生通过实践与应用来循序渐进培养。为提高学生的工程实践能力,我们在程序设计课程中设置了大量的实践环节。依据要解决的实际问题的步骤分解为一系列的任务,把学生分成学习小组,学生结合自己专业知识和研究兴趣,可以收集相关资料,来协同合作完成数据分析建模,完成相关任务书写实验报告,完成综合实验。教师在此过程中给予学生引导,定期检查学生进展情况并给出定量评估成绩完成综合实验教学过程。通过此任务可以充分调动学生的积极性,引导学生主动思考,进而培养学生编程能力。

3结语

知识的真正价值在于实践,学习的根本目的在于运用。以能力培养为导向,把知识融于实践,再根据实践中遇到的问题来学习新知识进行求解,这样相互促进以积累实践经验并提升应用能力。从知识与实践相结合中不断发现新问题和解决新问题,才能使学生真正掌握程序设计技术。程序设计教学在通识教育框架下应该考虑到不同专业学生的知识结构和能力要求,构建全新的教学体系和教学模式,系统、科学地设计教学案例,实施个性化教学,培养学生计算思维能力,为各专业的学习提供良好的信息技术支撑。

参考文献:

[1]王佳,翁默斯,吕旭峰.斯坦福大学2025计划:创业教育新图景[J].世界教育信息,2016,(10):23-26.

[2]赵广辉.面向新工科的Python程序设计交叉融合案例教学[J].计算机教育,2017,(08).

[3]邵利民.开发面向分析化学的复杂方程绘图求解软件[J].大学化学,2017,(10).

作者:于莉莉 张磊 李晶 单位:佳木斯大学信息电子学院