2O1 5年5月 第2O期 教育教学论坛 EDUCATION TEACHING FORUM May 201 5 NO.20 《程序设计与问题求解》实验教学方法探讨 缪裕青,刘少兵,俸(桂林电子科技大学皓,朱细平,杨兵,刘洪波 桂林541004) 计算机科学与工程学院,广西摘要:《程序设计与问题求解》课程强调以实际问题驱动,学生通过大量实验来解决实际问题,从而提高编 程能力。在实验方式上,提出以分组完成综合性习题方式训练学生团队协作和实践动手能力;在实验验收上, 尝试引入斯坦福大学的Moss系统来甄别实验抄袭,引导学生独立完成实验。通过实际教学效果验证了对该门 课程实验教学改革是值得借鉴和推广的。 关键词:C语言;程序设计;实验教学改革;Moss系统 中图分类号:G642.41 一文献标志码:A 文章编号:1674—9324(2015)20—0158—02 、背景 《程序设计与问题求解》(以下简称《求解》)是 2007年我校对IEEE/CS和ACM任务组给出CC2005报告 和CS2001核心课程进行研究之后为计算机科学与技 术等相关专业新开的一门专业基础必修课程,这门课 程的前身是《c语言程序设计》『11。 《求解》课程教学采取实际问题驱动方式,通过大 量实例讲授程序设计的基本概念、基本方法,把重点 放在解题思路上。即通过针对实际问题进行分析,构 课题组的集体讨论和教学实践,形成一个高效合理的 教学方案,具有很紧迫的现实意义。因此改革势在必 行。 目前,国内的多所高校已经早于我校开展了《求 解》这门课程,但总体上说,对这门课程的教学还都处 在实践和探索的阶段,因此,进行《求解》这门课程的 教学改革研究,具有更广泛的实际意义。关于《求解》 理论教学的方法探讨请参考笔者的第一篇参考文献。 本文主要讨论实验教学。 二、实验教学内容改革 当前,计算机软件方面的实验课程大多都已经按 照规范文本罗列出了实验目标、实验内容、实验报告 等组成元素。采用了教师辅导、学生主导一人一机独 立完成实验相结合的方式进行授课,已经得到大家的 共识和学生的认可。 但本课题组认为,对待《求解》这门特别强调学生 的动手能力的课程,要有更高的要求:那就是学生通 过本课程的学习,应该具备有解决综合问题的编程能 力。而限于实验学时有限,学生很难在规定的2个小时 完成实验内容,从而不能客观地评价学生。这样导致 很多实验内容显得知识点单一,考核内容单一,不能 充分调动学生的学习积极性,学生最后的动手能力不 能得到充分的挖掘和开发。 某班期末考试科目为数学(MT)、英语(EN)和物理 (PH),有最多不超过30人参加考试。考试后要求:①计 算每个学生的总分和平均分;②按总分成绩由高到低 排出成绩的名次;③打印出名次表,表格内包括学生编 号、各科分数、总分和平均分;④任意输入一个学号,能 够查找出该学生在班级中的排名及其考试分数。 应该说上面的实验题基本满足了对数组知识的 建数学模型,设计算法,最后通过C语言编程实现这一 过程来训练学生程序设计的能力。 经过6年多的教学实践,取得良好的效果,但发现 存在以下问题。 1.学生对理论知识的理解和掌握不够,具体体现 在作业完成情况较差,考试成绩不理想(卷面考试成 绩不及格率大于15%,勉强及格学生比例高达20%)。 2.不能按要求完成实验内容。过半数的学生不能 按时独立完成实验,收获较小。 3.实验抄袭现象严重,导致后续课程学习上的困 难。 鉴于上述问题,如果再不对《求解》教学尤其是实 验教学进行改革,那么培养出来的学生势必是缺乏竞 争力的。任课教师已经发现了这门课程在教学学时、 教学内容安排、理论与实验教学的比例分配以及采用 什么语言工具进行教学等方面存在的问题,正在探索 更加有效合理的方案。 那么,是什么导致了上述问题呢?这是项目组这 次研究的主要课题,通过对上面问题的研究,找出问 题的症结,探讨方案,讨论和更新教学大纲和实验大 纲,更新实验指导书,提出新的教学方式和方法。通过 基金项目:桂林电子科技大学校级教育教学改革基金项目(JGB201407) 作者简介:缪裕青(1966一),女,副教授,博士,硕士生导师,主要从事数据挖掘、隐私保护挖掘、生物数据挖掘、并行与分布式挖掘、云挖掘 等研究。 158— 2O1 5年5月 教育教学论坛 May 201 5 第20期 EDUCATION TEACHING FORUM NO.20 学习和实践编程要求。不足之处也是显见的:一方面 题,学号尾数是10 402、06的强制做第二题,以此类推。 是考核的知识点单一,主要是数组;二是考核的题目 三、实验验收方法:尝试引入斯坦福大学的Moss 太模型化,学生的建模能力不能得到很好的锻炼;三 系统。甄别抄袭现象 是不适合小组形式合作完成,学生如果不能完成,但 1.Moss系统简介。斯坦福大学的Moss(Measure Of 为了拿学分,必然导致抄袭过关;四是题目太少,全班 Software Similarity)P]系统是一个简单易用的编程语言 学生做相同的题目,一人做出,全班做出的局面很常 雷同检测系统。它主要用于计算C、c++、Java、Pascal、 见。 Ada、ML、Lisp等一些形式化语言所编写的程序之间的 为了较好地解决上述不足,课题组提出从函数这 相似性。哈工大计算机学院已经成功地运用Moss在一 一章之后,每次实验的内容至少包含1道综合实验题, 些程序设计类课程中检测学生程序之间的雷同[41。该 一个综合题包括3~4个模块,由一个小组(建议每个 系统目前只用于教学系统,是一个免费的系统,因此 小组3—4人)来共同完成。 不会增加成本。 还是拿数组这一章的实验举例,比如可以引入 2.电子作业抄袭比书面作业抄袭更可怕。当前,作 “验证哥德巴赫猜想”作为一道综合实验题。哥德巴赫 业雷同现象很普遍:“抄袭”会让所有教学手段失去效 猜想的概要流程图可参考文献[2】。 能。程序拷贝抄袭他人作业比书面抄袭带来的危害更 这里可以用数组PrimeList[]来存放生成的素数。用 大,通过拷贝方式在抄袭者脑海里所留下的知识点印 函数CreatPrimeList(int PrimeList[])来生成素数表;用 象更弱,而且拷贝的获取更容易,很容易培养出“惯 NextPrimeNumber(int P,int PrimeList[1)来生成下一个 犯”,从而导致教育的失败。【5J因此,严打雷同作业必须 素数;用main()函数来完成主流程编程并对上面两个 作为实验验收时非常重要的手段来督促学生认真独 模块进行调用t2],从而完成实验内容。 立地完成实验内容。 这样把一个大的问题分成若干小的模块,该题可 引入了Moss系统后,可以采用如下的制度来严打 以由3个同学协作完成,一人完成一个模块,由于绝对 抄袭作业现象[63:雷同双方当次作业记0分;两次雷同 工作量的减少,学生能够在2个小时的实验时间完成; 以往作业成绩全部清零;三次以上雷同,所有作业成 又是团队合作,学生的自信心会明显增强,而在完成 绩全部清零。所谓“严师出高徒”,通过严打雷同作业, 任务的过程中的相对工作量和知识点没有减少,不影 往往会有意想不到的收获。激发潜能:“我”居然能把 响知识的学习和应用。 作业做出来了!为了作业不雷同,“我”想到了一种特 这样的实验内容安排有以下优点:(1)让学生更 别的方法等。维持诚信:这是当今社会正在缺失的特 好地体会“自顶向下,逐步取精”的结构化程序设计方 质。 法。(2)题目综合性强,模块化结构明显,适合分工协 当然,简单的实验作业可能由于巧合存在很多误 作。可以讨论共同完成,克服单兵作战的恐惧心理。 判雷同的情况,这点需要任课老师区别对待。 (3)考核的知识点全面,内容涉及数组、函数、循环、算 四、结论 法等几乎前面所学的所有知识点。(4)综合习题的完 到完成这篇论文之前,课题组成员已经尝试用上 成带来更大成就感,从而增强学生的学习兴趣,形成 述教学方法进行了实验指导书的部分更新并按照新 良性循环。(5)培养了大学生之间的协作能力,有效地 的实验指导书来指导学生实验。但对于实验作业的雷 降低了学生大面积抄袭行为。 同部分,限于时间原因,由于要比对雷同作业要将每 具体方法如下:一是合理利用网络资源。c语言已 一批次的作业上传到斯坦福大学网站进行比对而暂 经是除英语、高数、政治理论等课程之外开设最广的 时还没有进行。这是本课题组后面要大力积极推进的 一门课程,开设历史悠久,因而相应的资源很容易从 重点内容。目前已经完成了1个学年的《求解》实验教 网上获得。每一章实验找N3道左右供学生选做的综 学任务,表1给出了采用上述教学方法后的实验考试 合题是完全可以实现的;二是实验题目要多,采用学 成绩分布,还有通过后续课程教师的反馈来看,基本 生学号2位尾数(比如除4)求余数的方式做对应的实 上比较客观地反映出了这样的教学方法还是值得大 验题来规避大面积抄袭的风险。比如一次实验的基本 家借鉴的。当然,每门课程都有各自的特点,因材施 题出4道题,那么学号尾数是01、05、09的强制做第一 教,因课施教,是不断摸索和积累的过程。 表1《求解》实验考核成绩统计(任课教师:刘少兵,课号:131828,不含重修) —、学年\.\分数区间 100 ̄90分 89 ̄80分 79 ̄60分 <60分 2013年(总数6O人) 36.7%(22人) 20%(12人) 30%(18人) 3.3%(2人) 参考文献: 【3]http://theory.stanford.edu/~aiken/moss/ 【1】刘少兵,等.《程序设计与问题求解》理论教学方法研讨叶 【4]http://cms.hit.edu.cn/course/view.php?id=44 科学时代,2010,(22):106—107. [5]http://cms.hit.edu.cn/mod/forum/search.php? [2】罗建军,等.c++程序设计教程fM】 二版.北京:高等教育 id=44&search=MOSS 出版社.2007:187—190. [6]http://sunner.cn/lectures/ 一159—