首页 -> 2008年第7期

程序设计课程创新教学模式探索

作者:赖晓晨

安装较Windows系统复杂,而且安装成本相对也比较大,所以以上内容在Windows下的Linux仿真环境cygwin中完成,能够达到同样的效果。
  实践证明,学生十分重视和珍惜这种表达机会,都会认真准备,包括查阅资料、准备课件、事先排演等。学生准备的过程,就是对知识理解的过程;教师讲解的过程,就是知识升华的过程。
  因材施教是教师的一大原则,对某些理解能力强的学生,给他们提出特殊的标准和任务,例如指定其完成难度较高的编程题目或者简化后的软件项目,推荐其阅读经典参考书目等。ANSI C++标准博大精深,给学生留下了广阔的学习空间。对某些后进学生也要相应地利用答疑时间付出额外的劳动,使他们能够跟上授课进度。
  同时,要发挥课程网站的平台作用。利用课程网站,收集学生的疑难问题,及时做出解答;同时收集学生对课程内容编排、授课方式、理解程度的反馈意见。一个教学周期过后,通过网站收集学生问题300多条,教学建议40多条,其中很多问题的范围已经扩展到了C/C++课程之外。充分利用网络资源,能够提高工作效率,促进学生学习,方便教师进一步调整教学方法,提高教学质量。
  
  三、软件工程指导的实践环节
  
  实践环节的主角仍然是学生,教师所有的活动应该以学生是否能够进行充分有效的实际编程训练为中心。传统的上机实验环节是教师出题目,学生相应地进行编程,单纯采用这种简单的上机模式已经不能适应软件产业化的发展大潮。当今的软件行业,所谓的编码英雄已经成为历史,任何一个著名的软件产品都需要一个团队来完成。在产品开发的前期,要进行广泛的市场调研、需求分析、项目规划等;在编码过程中,又要进行完善的文档开发管理、代码测试等步骤。因此,从编程伊始就逐渐培养学生的软件工程意识是十分重要的。同时,要让学生们意识到,只有融入集体中,才能发挥出每个人的最大作用。编程能力固然重要,但是在团队中的沟通能力、协作能力、包容能力同样重要,这些都是一个软件开发工作者的基本职业素养。
  基于以上考虑,在本课程的上机实践环节中,前期每次上机安排约200行左右代码的上机练习代码量,部分练习题借鉴了最新的计算机等级考试题目,在课程的后期,学生们已经具备基本的编程能力,把学生划分为若干项目组,选出学生担任项目经理,组内需要分工协作,用较长的时间,共同完成一个较大的课程设计题目。
  本环节中,仍然采用互动模式,教师给予项目组一定的指引,在学生进行开发的过程中,随时通过答疑时间、网络答疑论坛、e-mail等手段与教师沟通,教师也可以跟踪某些组的进展情况,多方互动,以使各项目顺利进行。项目选题可以由学生提出,经教师审定后启动项目,也可由教师对实际项目进行简化,使之难度降低,再由学生来完成。在学习编程阶段即潜移默化地灌输给学生软件工程思想,尽可能地创造类似于实际项目的开发环境,提供给学生一个实战的模拟场景。选择的项目应使大部分学生经过思考、查阅资料等努力后可以完成。
  例如,在实际上机环节中,指导学生了解GIS的背景资料,查询BMP图形的存储格式,自定义矢量图标准,编写一个从位图到矢量图的转换程序,再如,指导学生查询8250、8251串口控制器的控制字结构,编写一个双机串口通信程序,实现从一台机器到另一台机器的数据传输,不要求每一组都能圆满完成这些任务,但是应该让教师看到每组都做了大量的工作,在资料查询、项目规划、代码编写等方面都做出了很大努力。
  项目实施遵循软件工程的流程,采用瀑布模型,分为以下几个阶段。
  需求分析阶段:包括使学生了解项目的背景、项目的重要性,根据已有的知识结构,找到进入项目的切入点。同时,培养学生们的自学能力,使他们能够从多个渠道获得所需信息。
  设计阶段:学生根据实际情况对项目进行规划,包括提出完整的进度表、各阶段要完成的具体任务、工作内容分工、设备使用计划、主要模块及接口设计、画出流程图等。
  编码阶段:各个小组按照工作计划各自完成自己的编码任务。本阶段中,要求代码编写符合编程规范、有必要的文档、注释等内容。
  测试阶段:测试由学生自查、互查、教师检查等方面组成,以保证程序质量。
  评估阶段:由指导教师组织学生进行最后的工作总结、分析各组项目完成情况以及存在的问题、指导学生讨论相应的改进方案,最后完成成绩评定。
  
  实践环节中,在很大程度上抛弃了常规的由学生完成教师指定作业题的模式,创造性地提出了学生分组完成简化项目的方式,并且初步引进了软件工程思想,不但使学生明确了学习C/C++课程的重要现实意义,而且培养了他们的协作精神、团队意识、自学能力和独立解决问题的能力,同时对软件工程的思想留下了感性的认识。实践结果表明,大部分组都能够完成任务,并且讨论热烈、思维活跃,普遍认为这一模式扩展了他们的知识面、增强了编程自信心。而且,有部分优秀的学生通过自学C++知识及人工智能领域的算法,独立完成了诸如“黑白棋人机对弈”等软件。
  
  四、综合性成绩评价环节
  
  本课程的成绩评价体系进行了革新,末考试的权重,增加了实践环节的权重,的综合素质,具体如下表所示:大幅降低了期更能体现学生
  其中,课后作业和前期上机作业由任课教师和助教抽查,抽查比例不小于50%:实践环节项目组负责人由学生自行推选,其项目完成分数在项目组所有成员中最高;平时成绩包括回答问题积极性、课堂和网络提问积极性、答疑积极性、是否参与了课上学生讲解等。
  通过这样一种多重指标成绩评定方法,可以提高学生实际编程能力在最终成绩中的权重,更准确地反映教学效果和学生对知识的真实掌握程度以及运用能力。
  通过对教学各个环节的改进与创新,更好地实现了教学目标。学生在结课时,熟练掌握了各种开发工具、调试工具的使用,理解了C/C++的基本语言要素,熟悉了一些简单的数据结构与算法,并完成了数千行的代码量,初步形成了软件工程思想。通过学生编程竞赛、后续课程任课教师反馈意见等多角度得到的信息表明,在与采用传统教学模式的班级横向对比时,新教学模式培养的学生显示出明显的优势。
  
  [责任编辑:余大品]

[1]