温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
任务
驱动
语言程序设计
实践
教学
探索
唐士杰
Science&Technology Vision科技视界0引言当前,普通高校理工科学生的程序设计能力受到普遍重视。国内大多数理工科高校都开设了多种程序设计课程,其中 C 语言被很多高校采纳为程序设计语言的入门课程。但 C 语言等程序设计类课程的实践教学一直面临一个突出问题,即教学内容的深浅不易把握。如果授课内容较深,则可能导致初学者产生畏惧心理,从而失去学习兴趣。但如果教学内容深度不足,则可能导致学生只能学到一些“玩具技能”,基本无法利用课堂中学到的知识解决一些较为实际的问题。1对现有解决方法的思考近年来,随着在线编程等新型教学工具和模式的出现,上述困难得到了一定的缓解,但并没有得到根本解决。如作者在近年来的教学中尝试采用“EduCoder”在线编程平台1作为 C 语言程序设计课程的过程性考核手段,取得了不错的效果。有的学生每周用于完成在线编程作业的时间超过几十小时,重复提交一次作业的次数超过 100 次(如图 1 所示,学生名字和学号均做了处理),充分说明了这些学生真正做到了用心完成作业,其效果是纸质作业很难相比的。但现有的在线编程作业模式也存在不足。首要问题是很难避免抄袭。在线编程作业大多是格式化填空形式的。这就意味着对不同学生来说,同一章节的作业内容是相同的,而教师也不可能为每个学生单独指定不同要求,因此很难判定学生的作业是否存在抄袭现象。也有一些教师采用了线上线下混合式教学2来提升程序设计类课程的教学效果,收到了良好效果。近年来,随着慕课(MOOC)3的兴起,翻转课堂(Flipped Classroom)4成为线上线下混合式教学的重要方式。翻转课堂要求学生先通过网络学习教师准备的视频或其他学习资料,基本掌握将要学习的内容,DOI:10.19694/ki.issn2095-2457.2022.30.25基于任务驱动的 C 语言程序设计实践教学探索唐士杰1王会勇2(1.桂林电子科技大学电子工程与自动化学院,广西 桂林5410042.桂林电子科技大学数学与计算科学学院,广西 桂林541004)【摘要】程 序 设计 语 言 课 程 的实践 教学 一直面 临 着 一 个 困难,即 教 学 内 容 的 深 浅 较 难 把 握。授 课 内 容 过 深,会 使得 学 习 难 度过 大,导 致 学生学习 兴 趣 下 降,尤 其 是 对 一 些 入 门 性 质 的 编 程 语 言,如C语 言 等;授 课 内 容 过 浅,则 可 能 导致 学 生 只 能 学到 浅 显的 基 础知 识,根 本无 法 获得 实 际编 程 能 力。这导 致 当 前很 多程 序 设计语 言课 程 只能以 保证 及 格 率作 为 授 课 目标。首先 从理论 和 实践两 个 角度 分析 了 出 现 这 种 局面 的原 因,然后 结 合教 学 实 际 提 出了 基 于任 务驱 动 的 实践 教 学建议,主 要 包 括 基于“任 务驱动”教 学 理念 重 新设 计 教学 大 纲 和 授 课计 划、采用 综 合性作 业与 阶 段 性作业结 合的方 式 实 施 过 程考 核、采 用有 效 手 段保 障 作业 的 有效 性 等。【关 键词】C语 言;任务 驱动;实 践教学基 金项目:本 文 系广 西 高等教 育本 科教学 改 革 工 程 项目“面 向新工 科的C语 言 程 序 设 计 线 上 线 下 混 合 教 学 探索与 实 践”(2020JGA176)的研究 成 果。作者 简介:唐 士 杰,讲师。王 会 勇,副 教 授。科学课堂089科技视界Science&Technology Vision再在课堂上与教师进行研讨学习。其基本思路是让学生在课外时间完成自主学习,将课堂作为教师与学生的互动场所。线上线下混合式教学模式也存在一些实际困难。首先,线上线下混合式教学需要较多的教学资源,如特殊布置的教室、设备等,在教学资源受限的情况下难以大规模推广。其次,对授课教师的要求较高。教师不但需要有充足的教学经验作为保障,也需要花费更多的时间、精力来准备授课和实施授课计划。最后,仍然很难对学习积极性不高的学生进行有效监督。综上所述,传统课堂教学和线上线下混合式教学都存在一个“顽疾”,即很难以可监督的方式充分调动学生的学习积极性,而调动学生的学习积极性正是保证教学效果的关键。作者的一段亲身经历似乎能够为解决这个问题提供一定的思路。在读大学的时候,一门专业限选课“汇编语言程序设计”的授课教师采用了一种相对“极端”的授课方式,即只在课程开始的时候用 24 课时为学生讲解汇编语言的基本特点和基本学习方法,尤其是上机实验的基本步骤,然后布置了两个“大作业”。老师规定,只要能够实现这个程序的基本功能就能通过考核。老师会利用课程的最后 24 课时对学生的编程情况进行现场逐个考核。学生必须讲解自己实现程序的基本思路,并回答教师提出的一些问题。如果学生在完成程序的基本要求之外还有额外工作,如加入了声音,将会得到加分。2基于任务驱动的C语言教学设计上述授课方式的教学效果是非常令人惊讶的。班里绝大多数同学都以非常认真的态度投入了对“汇编语言”的学习。课程结束后,绝大多数同学都感觉收获很大,不但所有同学都通过了考核,甚至有很多同学感觉汇编语言比其他高级语言更容易学习。直到十多年后,当年学习的很多汇编语言知识作者都记忆犹新。上述方式可以被称为完全的“任务驱动”教学模式。所谓“任务驱动”教学,就是在学习过程中以任务为导向和驱动,促使学生主动寻找各种学习资源,进行自主探索学习的方式。也有很多学者对基于“任务驱动”的教学模式进行了研究和总结,将其分为五个阶段,即教师引导期、学生操作应用期、交流讨论期、巩固提高期、总结期4。秉承“任务驱动”的教学理念,在课程开始的时候,首先向学生介绍了教学理念和考核办法:除了期末笔试之外,过程考核内容包含两部分:(1)以在线编程作业为主的考核,主要利用EduCoder 在线编程网站实施。(2)综合性作业:课程开始即向学生公布,并要求图1C语言程序设计在线编程作业的部分情况科学课堂090Science&Technology Vision科技视界学生在学期末上交。本学期设置的综合性作业是“用C 语言编程实现 Diffie-Hellman 密钥协商过程的一个简单实例”。要实现 Diffie-Hellman 密钥协商过程,需要实现“素数判定”“用欧几里得算法求最大公约数”“求乘法模逆元素”“整数幂模算法”“求素数本原根”“排序算法”“求欧拉函数值”“随机数生成”等基础算法。与平时在线编程的题目相比,该作业难度稍大,较适合作为综合性作业。图 2 为该算法的基本流程图与一位学生的编程结果运行截图。对 C 语言等程序设计的实践教学来说,作者认为应该合理使用“任务驱动”的教学模式,综合采用多种先进教学手段实施教学。具体建议如下:(1)针对“任务驱动”的教学理念制定更加健全的教学大纲和授课计划,综合考量课程的学习难度和课程定位。(2)在课程开始,应该让学生清楚了解课程考核的基本要求。建议结合使用过程性考核与阶段性考核两种考核手段。对 C 语言程序设计的实践考核来说,一方面可以要求学生在学完每章内容后,按时完成教师指定的在线编程任务。另一方面,在课程开始时为学生布置综合性编程任务,要求学生在课程中间或课程结束后提交。在不同阶段实施的综合性编程任务应该覆盖相应阶段的主要学习内容,并尽量具有一定的实用性。(3)综合性任务的考核可以采用线下手段,如现场逐个考查,或在期末考试试卷中要求学生陈述其编程过程遇到的主要问题和经验心得等;也可以采用线上方式,如要求学生利用在线编程工具完成综合性编程任务,但必须提交简单的学习报告等。(4)另外,可以采用其他技术性手段,如人工智能技术对学生提交的文字性在线作业进行审核,以判定是否存在抄袭现象。目前已经存在类似软件,如抄袭检测器5等。3总结为在程序设计类课程的实践教学中充分调动学生的学习积极性,本文介绍并探讨了基于“任务驱动”的教学方式。首先介绍了“任务驱动”教学模式的意义,认为基于“任务驱动”的教学理念能够有效提升学生的学习积极性和学习效果;然后分析了“任务驱动”教学的基本理念及其形成过程;最后给出了 C 语言程序设计实践课程中使用“任务驱动”模式教学的一些具体建议,主要包括基于“任务驱动”教学理念重新制定教学大纲和授课计划、采用综合性与阶段性作业结合的方式实施过程考核、采用有效手段保障作业的有效性等。【参考文献】1湖南智擎科技有限公司.EduCoder在线实践教学平台EB/OL.https:/