时间:2014-02-27 09:01 文章来源:http://www.lunwenbuluo.com 作者:王力等 点击次数:
我们要按照模块化思路编写CDIO理论指导下的实训指导书,并将项目贯穿整个实训过程。每个实训就是一个项目,每个项目都给出完整的程序框架并由一到多个任务构成,每个任务都有一定的代表性和难度。教师根据培养目标的需要,要求学生补充完成实验任务中“挖掉”的部分或者根据实验中已有内容“添加”和实现指定功能。
这样做有以下几个目的。①给出完整的程序框架,让学生建立程序设计的系统观,对软件项目构成有直观的了解,体验程序设计模块化的思想。②降低程序的复杂性和难度,减少学生的挫败感。指导书给出的每个项目实际上是“项目框架”,学生在添加任何代码之前,程序就可以直接通过编译、链接和运行。这就降低了学生完成一个任务的复杂度,使得学生可以逐步按照实验指导书的要求在“框架里”添加程序代码,从而掌握所写代码在一个完整实验项目中的应用。③培养学生阅读程序的习惯。虽然实验项目的大部分源代码都已给出,但是学生要完成实验还需要认真通读程序代码、理解程序的结构、掌握每个功能模块的作用和调用关系等,这样才能正确补充程序。
2)突出工程化的理念。
每个实训都突出工程理念,每个实训就是一个真正的工程。在早期的实训中,很多学生仅为完成课程任务而实验,每个任务的所有代码都放在一个源程序文件中,结果导致学生在毕业后仍不知道一个真正的程序结构是什么样的,也编不出一个实际的应用程序。因此,实训完全采用工程化的方法建立程序设计框架和使用多文件编程,让学生充分理解和掌握模块化、封装等思想(如迷宫老鼠问题)。新编实训指导书加强了对项目的测试,要求学生输入一系列“测试用例”并观察和分析运行结果,旨在让学生了解并学会如何对所写的程序模块进行测试,掌握调试编译程序的技巧与方法。指导书中的一些项目还要求学生模仿编写“自动化测试程序”,以检测程序的正确性。
3)突出实用性和趣味性。
每个实训都力求突出实用性和趣味性,加强学生的学习兴趣。精选实用性题目作为实验项目,如在线性表实验中选择“多项式数据类型”的构造和多项式加法、减法和乘法运算的实现等作为项目;在栈和队列的实验中选择括号匹配、进制转换、表达式转换和求值、迷宫老鼠、N后问题,要求学生应用前面构造的线性表、栈或队列辅助求解问题。这些虽然在课本中有描述,但大部分并没有体现在实训中。另外,还可以在综合实训或课程中选择马尔可夫链、逗号分隔值(CSV)作为实训项目。应用性和趣味性实训项目可以帮助学生明确学习动机,让学生取得良好的学习效果。
4)体现程序设计的思维过程。
心理学研究表明:中等或适度的压力有利于学生获得更好成绩,过高或过低的压力不利于提高学生的学业成绩,因此大部分项目基本上都具有中等难度。指导书在内容编排上以“循序渐进、由易到难”为原则,强调由部分到整体、由模仿到自行设计、由小程序到大程序,再到综合应用的程序设计“境界提升”。
具体而言,指导书的编写引入分层进阶的思想,即第l层次为验证性实训,根据学生的接受能力让学生完成验证性的函数程序代码填空等较为简单的初级实验,这样能够增加学生的成就感;第2层次为模仿实训,要求学生根据程序的上下文在头文件中添加函数说明、在源程序文件中添加对应函数实现、在程序中适当添加程序段、模仿编写自动化测试程序等;第3层次为设计性实验,要求学生实现完整的简单程序的分析、构思、设计、调试和运行,如多项式类型及相关运算等;第4层次为综合性实验,指导书最后2个模块为2个综合实训项目,只给出问题描述、部分分析和设计,要求学生能完成2个项目大部分程序的编写工作。
3、实施课程实训的方法
课程实训将学生按每组3~4人进行分组,小组成员应该经常讨论实训项目中的问题和难点,以获得对实训项目内容的全面理解,教师应将讨论情况列人实训评分指标之一。课程实训结束后,教师会给每名学生发一张“数据结构课程CDIO自我评价卡”,由学生如实填写并附在实验报告背面。教师可以利用该表了解学生的学习状况,以控制教学进度或解决学生遇到的问题。学生自我评价卡的内容包括构思(20分)、设计(20分)、实现(20分)、运作(20分)、文字表达及文档制作水平(10分)和报告质量及口头表达能力(10分)等6个评价点,每个评价点再细分为1~2个二级评价点。针对一级和二级评价点,我们设置A、B、c、D共4个评分等级,权重依次为1、0.8、0.6、0,4及以下。另外,自我评价卡还增加“自我评价”文字描述项,可以让学生把学习过程中的想法充分表达出来。
在数据结构课程实训时,学生根据要求在源代码空白处插入适当代码,只有代码正确,程序才能显示正确的结果,但是这样的“程序填空”并不是显而易见和可以直接实现的。要正确完成填空,学生必须理解程序的上下文:①理解程序中给出的数据结构;②读懂程序中其他已经实现的函数;③清楚要填充的程序在整个程序中的调用与被调用关系;④理解程序中的指针参数传递方法、动态内存分配技巧等,如在顺序表的实现中给出部分代码,但留出3个空白函数部分让学生填写。
相关内容
联系方式
随机阅读
热门排行