1. 引言
程序设计课程是计算机专业的一门专业必修课程,是后续其他专业课程的基础,也是培养学生程序设计及编程能力的重要基础课,因此在计算机专业课程体系中有着举足轻重的地位。
2. 程序设计课程教学现状分析
2.1. 传统教学方法无法适应新时代学生群体的要求
传统程序设计课程教学中通常是教师先进行知识内容的讲授,然后学生进行相关的练习实验,基本上是一个单向的知识传授过程,理论知识以灌输式教学为主,学生学习及记忆知识,但遗忘知识的速度快,后续的练习实验反馈通常也较为滞后,时效性不强。这对于程序设计这种通常开设在大学一年级,并特别强调实践动手能力的课程而言,问题显得尤为突出,学生通常更喜欢能看到一个及时检验自己编程能力的结果,因此需要根据课程内容特点的不同,重构教学模式,增强教学反馈的及时性 [1]。
2.2. 传统的考核评价方式无法真正反映学生的实际学习效果
目前课程考核基本都采用过程化考核加期末考核的方式进行,这样能一定程度上能减少学生平时不认真学习,全靠考前突击的行为模式。但无论是过程测试还是期末测试大部分仍是采用纸质卷面考试的方式进行。这种考核无法准确评判学生的真实程序设计水平和编程能力的高低,对于工程认证中对学生知识掌握和能力培养的精细化评估更是难以把控。
2.3. 传统教学资源匮乏
在现在的数字社会时代,传统教学仍然是一次性讲解的教学模式,学生课后复习全靠记忆,并且在有限的课堂教学时间内也很难做到能解答所有学生的疑惑,无法做到完全以学生为中心。因此可以建设SPOC,利用现有教学条件及网络资源,考虑引入授课视频录播,方便学生课后复习,查漏补缺,以及通过使用录制小视频的方式进行各种常规问题的解答 [2]。
2.4. 对能力培养支撑较弱
传统程序设计课程通常是学生的第一门专业入门课,因此教学上通常注重各知识点的学习,但缺乏对知识的运用,尤其是综合运用,这也不符合工程认证中强调的对解决复杂问题能力的培养。
3. 工程认证背景下程序设计课程“金课”建设思路
工程教育专业认证是国际通行的工程教育质量认证制度 [3]。2016年6月2日我国正式加入工程教育互认协议《华盛顿协议》,逐步开展工程教育专业认证,以进一步提高我国工程类专业人才培养质量,促进工程专业学位的国际互认。协议认为本科工程教育是要培养学生解决复杂工程问题的能力,同时工程教育专业认证遵循3个基本理念:成果导向、以学生为中心、持续改进。基于学习成果产出的教育Outcome Based Education简称OBE,强调教学应围绕实现学生预期的学习成果进行设计、组织和实施 [4]。
程序设计基础课程作为核心基础课程,首先应在确定课程目标的基础上确定课程目标。在教学过程中,全程应围绕以学生为中心,讲练融合以提升程序设计能力。通过使用程序自动评判系统平台可对学生编程的正确性、完整性进行实时判定,并给出错误提示,使学生在编程时能得到及时的反馈,可有效拓展学生课外自主练习的空间。另外该平台可以分析学生各知识点得分情况,从而能及时了解学生能力达成情况并做出相应的调整与补救,从而能更好的实现课程目标。此外,结合学生实际情况,通过构建个性化的SPOC资源,作为课堂教学的有益补充,培养学生自主学习的习惯。
4. 课程改革措施
4.1. 教学模式改革
根据工程认证的基本要求,课程改革首先应当从传统的以教为中心转为以学为中心,因此整个教学过程中,应坚持一切以学生为中心的基本原则。
4.1.1. “讲练融合”的授课模式
作为程序设计类课程,学生实践动手能力是评价课程目标是否达成的终极标准。传统的实践类课程教学安排上通常是将理论授课与上机实践两部分做了明确划分,先进行课堂的教师讲授,上机实践安排在后面。从实际情况看,对于程序设计基础类课程,这种时间上明确的前后分割不是很合理,教学效果不甚理想。学生普遍反映,理论讲授课堂上的程序编写基本都能理解听懂,但到了后续上机实践环节,则会遇到各种问题和障碍。并且理论课和上机实践课时间安排上一前一后存在时间差,很多曾经理解的内容可能会有所遗忘。
因此程序设计基础课程应采用理论与实践结合更为紧密的授课方式。可以将教学搬到机房:教师先讲授部分内容,之后学生立刻进行相应的编程实践练习,遇到问题能及时解决,同时通过练习加深理解、巩固掌握,并不断在教师讲授与学生练习间进行合宜切换。这样总体上能有效的提升学生对知识的掌握效果。课程模块1和模块2的教学特别合适采用此种模式,学生能及时验证各种新知识,解决前期各种入门问题,有效提升学生对编程的兴趣和信心。
4.1.2. 全程案例教学
首先,对每个知识点应采用对应合适的例子进行说明。作为程序设计的第一门入门课程,需要向学生介绍各种程序设计的基本概念、基本结构,讲授时难免枯燥、乏味、抽象,因此为了让学生能快速掌握其使用、理解其意义,应该结合实际多举例进行编程示范。例如对于if else选择结构,可实现数学中的分段函数计算;对于swtich case语句,可用于实现计算器里的加、减、乘、除运算;对于do while语句,可使用用户密码多次验证登录的例子进行说明;对于多重循环结构,可处理数学中排列组合计算问题。
除了简单问题的解决,工程专业认证体系下还要求培养学生解决复杂工程问题的能力。作为程序设计基础课,在具体培养方式上,可以将一个复杂工程问题逆向分解到每个知识单元模块进行训练,贯穿整个教学过程。例如,以设计开发完成一个“基于C语言的学生成绩管理系统”为例,可以将系统各个功能模块的完成划分至对应教学模块:在数组章节实现对学生成绩进行排序、在函数模块化章节实现对成绩排序功能子函数的书写及调用、在结构体章节实现对学生个人信息的完善升级、在链表操作章节实现增加和删除学生成绩记录、在文件章节则要求将录入的学生信息保存到文件等等。
这样,通过将一个完整复杂的工程问题分解到每个教学模块的方式,化难为易、循序渐进,能有效逐步提升学生解决复杂工程的能力。并且,通过不断完善解决一个复杂工程问题,也能让学生更深刻认识到各部分知识在实际工程中的应用背景及真实意义。
4.1.3. 采用分组式教学
传统教学方式为教师面向所有学生,但教师承载有限,实际上很难照顾到每一个学生的学习。事实上,可以挖掘学生内部潜力,充分利用优势学生资源,选取优秀学生作为组长,成立学习小组,同学之间互帮互助。这样后劲学生遇到问题除了问老师之外,也可以找组长,大大扩宽了解决问题的渠道,在课外学习中显得尤其重要;另一方面,对于优秀学生,也能通过帮助同学查看程序、解决问题提升自己在程序设计、找错、纠错的能力及沟通表达力,从而形成班级小组协同互帮互助的良好学习氛围。
这种分组学习模式除了常规的组长负责帮助组员查看解决各种编程问题之外,在不同的教学阶段,可以采用更为灵活的运作模式。比如在模块1、模块2教学阶段各小组长可以对一些典型例题进行直播讲解;在模块3教学阶段,对一些难点,比如链表的各种操作,可以以小组为单位进行翻转课堂,小组长带领小组成员对操作过程进行详细的分析讨论,然后由一个代表进行讲解,老师进行提问点评。总之,可以充分发挥学生内部潜力,让所有学生程序设计能力都有所提升。
4.2. 自动评分考试系统
作为实践性极强的程序设计课程,教学中几乎所有环节从作业、实验、测验、到考试都涉及判定程序代码是否完全正确的问题。传统的程序设计课程对程序正确与否的判定通常是以教师及助教人工批阅的方式进行的,但由于程序设计的灵活性,及多样性导致人工判定的方式很难全面客观的判定代码的正确率,且耗时耗力效率低,不能及时将问题反馈给学生,因此宜使用具有自动评测程序正确与否的程序自动评判系统。
1) 题库梳理建设
首先,需要根据课程内容按知识点进行题库建设。每个知识点可按难易程度划分为5颗星:1~2星为简单基础题,3~4星为提高题,5星为挑战题,这样能充分满足不同层次学生的学习需求,也方便更好地了解掌握学生学习情况,进行针对性的管理;同时,对每个题的测试点应该要充分全面考虑各种边界情况,使得程序的评判具有完整性。完成后在完成相应章节的授课后以题集方式将题组织好发布给学生进行练习。
2) 系统使用
在一个教学单元完成后,使用程序评判系统布置对应的作业,可分为3类题集布置,分别是基础题集、提高题集、挑战题集。其中基础题集和提高题集要求所有学生必须完成,挑战题集作为选做扩展,这样划分有利于学生能有梯度、有层次的进行练习。另外,该评判系统在学生完成程序代码的上传后,能立刻对学生该次提交的代码进行评判,并将评判结果及错误提示反馈给学生,学生可在修改代码后再次提交。除了平时作业练习外,该评判系统也可以进行单元测试、阶段性测试及期末考试等,并且该平台能自动分析统计每次作业或测试学生每个知识点的得分情况,方便教师及时掌握学生的学习水平及教学目标的能力达成度,以便进行进一步的处理。
4.3. 建设SPOC平台
由于程序设计基础课程通常是大一学生的第一门专业核心必修基础课,对后续课程影响较大,关系重大,严格要求每个学生必须掌握,因此不宜采用难以把握控制的纯MOOC线上教学,更宜采用在传统课堂教学基础上,充分利用各种网络教学资源的混合式教学模式 [2]。
线上线下授课内容的划分策略为:线下传统课堂教学重点在于知识的引入,注重串联知识之间的关系,知识结构框架及编程能力的培养上;线上教学资源则侧重于知识点细节的掌握、知识边界的扩展。从而实现线上线下有边界有层次的有机融合,更好达成学生能力的培养目标。
课程线上教学资源建设采用引用和自建两者结合的SPOC方式进行:一方面引用中国大学MOOC在线课程平台中对应的优质课程,该MOOC课程与本地传统课堂教学内容基本一致,有完整课件、教学视频、作业和测试等教学资源,可供学生课前预习和课后复习及拓展知识面;另一方面,为照顾不同层次的学生,达到更好的教学效果,需要针对本地课程教学中遇到的各种实际问题有针对性的增加相应教学内容。比如可以根据课程重点、难点及教学中经常遇到的各种问题划分出各类主题,制作出相应的各种主题小视频。例如:针对课程的难点可以制作相应小视频,比如链表各类操作,创建、遍历、增加、删除、查找等;由于课程学时限制,一些辅助性操作,比如不同开发环境下程序如何调试也可录制成相应小视频;此外对各章节典型例题的讲解也可以做成小视频,可供学生课外观看;总之,这类小视频可以让学生充分利用课外时间进行高效的学习,灵活方便,真正做到以学生为中心,满足不同层次学生的学习需求。
5. 结语
实践证明我校在计算机专业的程序设课程教学中以培养学生的能力为导向,改革了教学方法,并通过程序自动评判平台的使用充分锻炼了学生的编程能力,同时引入SPOC资源,线上线下教学有机结合也大大提升了教学的灵活性,并满足不同层次学生学习要求,取得了较好的教学效果,符合工程认证的理念,并达到了其要求。
基金项目
成都信息工程大学一流课程(“金课”建设类)《C语言程序设计》校级平台课程建设项目(BKJX2019107);成都信息工程大学专业大类课程示范教学团队建设项目程序设计与算法实现专业大类课程建设(BKJX2020061)。