APP下载

基于启发式的Visual C++程序设计教学改革

2011-12-31孙娜

计算机教育 2011年22期

  摘 要:文章阐述了国内高校Visual C++程序设计课程传统教学中存在的问题,根据Visual C++程序设计课程的特点,并结合自身的教学实践,将启发式理念引入到教学环节中,提出一种基于启发式的程序设计教学改革方案,在教学实践中取得较好效果。
  关键词:启发式教学;Visual C++程序设计;教学方法;教学改革
  
  1 背景
  Visual C++(简称VC++)程序设计是国内许多高校都开设的计算机专业学生的必修课程,也是理工类非计算机专业本科生开设的公共基础必修课程。江苏科技大学开设本门课程作为理工类非计算机专业大一学生的计算机公共基础课,其目的是使学生掌握一门高级程序设计语言,了解面向对象程序设计的基本概念与方法,初步具有分析和解决问题的能力,进而学会利用计算机解决一般应用问题,为后续课程的学习和研究打下夯实基础。然而,随着当代信息社会的发展,如何培养具有信息素养与能力满足社会需求的大学生,对传统的程序设计的教学模式提出了新挑战,改革VC++的教学方法破在眉睫。
  2 研究现状
  目前高校的VC++程序设计教学中存在着许多不可忽视的问题,亟需加以认真研究和探索,寻求行之有效的教学改革方案。
  2.1 教学模式单一
  传统的教学以课本为主,注重语句、语法的讲解,对于问题的求解过程一笔带过,缺乏以算法为核心的教学过程,学生只知其然而不知其所以然,容易陷入语法细节的泥潭,又容易产生畏难心理,失去学习兴趣,只能通过死记硬背来应付考试[1-2]。多媒体技术
  
  的发展使“计算机+大屏幕”代替了传统“黑板+粉笔”教学模式[3],但多媒体教学并没有带来实质性的改变,只是把教学内容从黑板搬到PPT,省去了板书的时间,加快的讲课进度。没有板书,学习内容随着PPT一张张地被翻过,没有留下任何痕迹,学生无法做笔记,也来不及思考,只是一味的忙着记忆,不利于学生自主思维能力的培养[4]。
  2.2 程序代码枯燥难懂,学生不感兴趣
  VC++程序设计课程的学习比较枯燥、难懂,知识点分散,各章节内容的连贯性不强,重点难点不突出,学生在学习过程中不能有效把握课程的脉络,无法建立起课程的整体架构,很难理解和把握课程核心内容,导致学生学习热情不高[5]。教学对象面向的是大学一年级学生,他们对计算机编程一无所知,更加深了学习的难度,要在有限的学时内使其掌握VC++编程方法,具有一定的编程能力,更是难上加难,迫切需要改革教学方法,提高学生的学习兴趣。
  2.3 上机实践环节薄弱,学生动手编程能力不强
  目前高校多采用先理论后实践的教学模式,即多媒体教室教学与机房上机实践交替进行,这种方法的缺陷是实践和理论的教学过程是分别在不同的时间和空间完成,学生上机时早忘记了理论内容,教学效果较差[6]。在编程过程中,学生只是充当了输入程序代码的工具,根本不理解算法的核心思想和程序实现
  
  作者简介:孙娜,女,助教,研究方向为数据挖掘与语义网。
  
  过程,不利于学生自主编程能力及创新能力的培养。遇到程序调试出错时,又出现浮躁情绪,不愿意独立思考和分析,急切找老师寻求帮助,没有掌握独立调试错误的方法。
  2.4 教材的内容过于陈旧,实用性不强
  计算机技术发展非常快,内容更新也快,教学计划往往落后于主流技术。VC++程序设计的同类教材有很多,普遍更新比较慢,大学生正在学习的可能是已过时陈旧的内容,无法跟上时代主流的步伐。如实验室中安装办公软件Office2007,主流的办公软件已出现Office2010版甚至是Office2011版本,计算机课程的发展特点决定了计算机的教学与传统学科略有不同,应更注重学生自主学习能力的培养,要“授之以渔”而不是“授之以鱼”,掌握学习能力或方法远远比学会知识本身更重要,具有自主学习能力,就可以用已学的方法或技术来获取未知的新知识解决遇到的新问题。
  2.5 学生学习评价体系不完善[7]
  1) 考核方式单一,通常以闭卷的形式进行考核,考试命题仅能反映学生的记忆能力,无法反映学生分析和解决问题的综合能力。2)过于注重终结性的评价,通常以期末考试成绩作为总评成绩,或期末考试成绩的在总评成绩中占比重过大,通常考核方法是平时成绩20%,期末80%,而实验成绩、平时作业、课堂表现、小测验等形式的考核结果很难与总评成绩挂钩,不能对学生的学习状态做客观的评价,忽视了学生的学习实践过程。
  3 基于启发式的VC++程序设计教学改革方案
  针对VC++程序设计教学中存在的缺陷问题,积极寻求切实可行的教学改革方案,教学过程最好在配有幻灯设备的机房完成,实现理论与上机实践的同步,同时将启发式教学理念引入到程序设计的教学环节,积极引导学生的求知欲,形成以学生自主学习为主体,教师做适当引导的良好互动氛围,培养了学生自主学习能力和分析解决问题能力。对学生成绩考核方式进行改革,实现对学生综合素质全面的考评。
  3.1 启发式教学内涵
  启发一词最早源于论语中的“不愤不启,不悱不发”,是孔子论述启发式教学的重要名言。启发式教学(Heuristic Method),是指教师根据教学目标,遵循教学规律,在教学过程中依据学习过程的客观规律,通过引导、指导、开导、启示、激发学生的学习兴趣,使学生主动地、自觉地、积极地学习和思考,并主动实践的一种教学方法[8]。启发式教学法不是指某种具体的教学方法,而是一种指导思想和原则,有问题启发、对比启发,发散启发,图示启发等多种形式[9]。其中,问题启发是一种最常用的教学方法,它从具体问题出发,通过巧设悬念,激发学生兴趣,引导学生积极思考,让学生在一种成就感的情景下寻求解题方法,从而达到教学任务的目的。
  3.2 问题启发式教学实现过程
  在对学生进行教学时,将问题启发的理念引入教学环节,采用提出问题→分析问题→解决问题的启发式思维过程,每个环节通过巧设悬念,引导学生积极思考,寻找解决方法。下面以一道编程题为例,说明具体实现过程。
  3.2.1 问题的提出
  给定一组数据,初始状态为3,7,4,1,8,0,5,9,7,1,如何实现其目标状态0,1,3,4,5,7,8,9,1,7?
  3.2.2 分析问题
  首先让学生认真审题,对比分析初始数据与结果数据的差别,即初始状态的数据是无序的,而目标状态的数据是有序的,按照从小到大顺序排列,且末两位的数据1和7分别与序列中第2和6个数据相同。由此得解题思路:该题意为将初始数据按从小到大顺序排序,如果有重复数据,就将其放到整个排序结果的后面。再次提出子问题1:这些数据该怎么表示呢?部分同学会想到用数组,答案正确,这些数据都是整型的,存放多个相同数据类型的数据用数组是很好的选择。子问题2:需要用到哪些知识点来解决该问题呢?学生能想到的是数组元素排序。教师引导学生思考,从小到大排序后的结果是0,1,1,3,4,5,7,7,8,9,那如何将相同数据1和7放到数组的末尾呢?答案是移动数组元素。本题考查的知识点是数组元素排序和数组元素移动。给学生10分钟思考和实践的时间。然后由教师分别讲解排序算法和数组元素依次向前移动一位的算法,让学生理解每个算法的核心内容。给学生10~20分钟时间来实现该题编程。
  3.2.3 解决问题
  根据学生的编程情况,找出学生存在的共性问题,给予纠正和解决,教师通过凌波多媒体演示,学生跟着老师的思路,一起完成编程过程,教师总结该解题过程需注意的细节问题。最后学生自己独立完成编程任务。该题的部分程序代码如下:
  
  
  void SelectSort(int