基于网络教学的程序设计能力培养模式探究
2009-02-04舒兰英
摘要:本文针对当前我国计算机专业学生编程能力普遍较弱这一问题,对程序设计课程进行大胆改革,提出了一种全新的基于网络教学的以任务驱动为核心的编程能力培养模式。该模式中,学生是绝对主体,教师是引导者和辅助者,基础知识由学生通过网络教学系统自学,教师在课堂上以大量的任务引导学生进行实践。使用这种模式能显著提高学生的编程能力,从根本上改变学生惧怕上机实践的状况。
关键词:网络教学;任务驱动;程序设计能力
中图分类号:G642 文献标识码:A
1程序设计能力培养的现状与存在的问题
程序设计能力在计算机学科知识体系结构中具有核心位置,对计算机专业的学生来说,他们不仅应该具备这种职业技能,它也是学生学习后续专业课程所应具有的基本能力。目前我国高校计算机专业在培养学生的编程能力上存在很多问题。第一,各门课程相互独立,没有从整体上进行良好的规划和安排,各自的培养目标和任务不明确,因此,每门程序设计课程都从讲解最基本的语法开始,把有限的时间浪费在不必要的重复上。第二,教学重点没有放在编程能力的培养上。教师通常按照一本教材,将上面的知识点一一给学生进行讲授,由于课时有限,课程结束时,学生学到的仅仅是程序设计语言的基本语法,而真正的编程能力却没有得到培养。第三,学生成绩考评通常以期末笔试试卷成绩为主,在这种成绩评定模式下,学生把大量时间浪费在对语法的死记硬背上,更加抑制了学生编程能力的形成。第四,在教学中教师处于绝对主导地位,学生只是被动地接受,不能充分发挥学生的主观能动性。由于实际教学中存在的这种种问题,造成的直接后果就是大部分学生没有真正具备基本的编程能力,“成绩好”的学生并不意味着具有优秀的编程能力。从以上分析我们已经看到,要使学生真正具备高水平的编程能力,在教学模式和教学方法上必须进行大胆的改变。为此,我们提出了一种全新的程序教学模式——基于网络教学的程序设计能力培养模式。
2基于网络教学的程序设计能力培养模式
2.1编程能力培养相关课程的整体规划
首先,作为教师我们要分清程序设计语言的教学和程序设计能力的培养是完全不同的。程序设计能力的培养需要若干门程序设计语言以及其他计算机专业课程的相互配合,程序设计能力的形成是一个循序渐进,各种计算机专业只是相互融会贯通的过程。要使学生获得高水平的编程能力不是简单的一蹴而就的过程,不是一个教师或一门课程就能办到的。对此我们必须有充分的认识,从整体上做好编程能力培养的各课程的整体规划,使各课程紧密配合,共同完成培养编程能力的目标。
整个学院要以培养编程能力为核心,重新安排各相关课程的顺序、应完成的目标和任务。(1)将编程课程划分为连续相关的三个阶段,分别是基础编程、编程提高、综合编程。这样的课程规划和传统的基本是相似的,问题的关键是我们必须使各部分紧密配合。(2)将学生应该掌握的所有知识和能力进行划分,为每一阶段确定明确的目标和任务。(3)按照阶段目标和任务的划分重新编写教程,避免无谓的重复,使各阶段有效配合,编写合适的教程是我们的重点和难点。(4)为每一阶段建立明确的达标点,学生只有在该阶段达标的情况下,才能进入下一阶段的学习。(5)成立专门的编程能力培养教研室,组织教师以培养学生编程能力为中心相互配合,相互交流,而不是各自为战。
2.2基于网络教学的程序设计能力培养
进行了整体的规划之后,我们应该如何有效地完成各阶段的教学呢?传统的方法是课堂讲授加上机实验,结果表明这种方式没有取得好的效果。由于程序设计课程和我们传统的理工科课程有着很大的不同,它非常强调实践,实践越多效果越好,只掌握理论不进行实践,可以说根本不能培养出编程能力。如果我们仍使用课堂讲授加实验的老模式,再加上课时的限制,结果必然是导致学生重理论、轻实践。所以,我们必须进行彻底的大胆的改革。我们提出了如下措施。
(1) 学生通过视频课件自学基础知识。程序设计课程的理论比较简单,难点是上机操作和学生运用知识去创造性地解决问题。在教学实践中我们也经常听到学生反映上课都听懂了,老师讲过的例子也都没问题,可让自己去编写调试一个简单的程序往往做不出结果。传统模式中教师将大量的时间用在学生比较容易理解的语法上,当然也就没有时间对学生进行真正的编程能力和上机操作的培养。学生自学基础知识,一方面可以培养学生的自学能力,另一方面可将节约下来的宝贵的课堂时间用于上机实践。
(2) 采取真正以学生为主体的任务驱动式学习。首先将课程内容划分为几个阶段,每一阶段包含相关的若干知识点,经过精心设计将知识点融入到系列任务之中,让学生通过完成任务掌握知识培养能力。例如对循环知识点的学习,教师可设计若干个任务,其中第一个任务给出设计过程及代码,第二个给出设计过程,第三个只给出问题描述,这三个任务要求学生必须完成,再给出若干难度递增的任务让学生选做。每一阶段的所有知识点全部学习完成之后,再为该阶段设计几个较为复杂的综合性任务。整个课程学习完之后,对学生进行分组,要求每组必须完成一个综合性的项目。
(3) 培养扎实过硬的上机调试纠错能力。学生觉得编程难主要有两方面的原因:一是没有形成解决问题所需的良好的逻辑思维能力,二是觉得上机调试纠错难。特别是调试纠错成了学生学习编程的一道难于逾越的鸿沟,作为教师有责任为学生搭建一座通向彼岸的桥梁。根据以往的教学经验,学生在上机过程中会遇到许多共性的问题,如果我们能将为学生解决问题的过程公开在所有学生面前,一定可以起到事半功倍的效果。为此,我们可在实验室中配备一台投影仪,将正在问问题学生的电脑屏幕投影在大屏幕上,这样教师的解答便可让所有关心此问题的学生知晓。通过这种方式,肯定能有效提高所有学生的调试纠错能力,从而为编程能力的形成奠定坚实的基础。
(4) 充分实现教师与学生,学生与学生之间的交流互动。教师通过指导学生上机的过程实现了与学生的充分交流,还可以通过网络教学系统中的答疑系统、论坛等与学生进行更深入的交流。这种充分的交流是传统课堂教授方式所难以达到的,在此基础上,教师可阶段性地总结学生存在的问题,并进行重点讲解。教师的这种有针对性的讲解,往往能得到学生的高度关注,从而获得非常好的教学效果。
(5) 成绩评定充分重视实践。要使学生真正重视上机实践,必须改变传统的重理论轻实践的考试方式。学生的最终成绩可由三部分组成,一部分是平时成绩,一部分是期末考试成绩,一部分是综合项目成绩。平时成绩由教师根据学生的出席情况和任务完成情况打分;期末考试采用在线考试,试题包含理论部分和编程实践部分;综合项目分由学生所在小组的项目得分和小组内成员的打分综合评定。
(6) 支撑环境的建设。首先是网络教学系统的建设,要求系统具备视频课件、Powerpoint课件、各种参考资料、答疑系统、网上论坛等功能;其次是实验室的建设,除了配备投影仪外,还应将所有电脑建设成为可由教师集中控制的智能化的网络教室,这是值得进一步研究的课题。
2.3在其他课程中延伸编程能力的培养
具备基本的编程能力是后续课程如操作系统、数据结构等的基础,同时这些后续课程的学习又可以促进编程能力的提高。为每一课程设计一个综合性的大作业,既能加深对该课程的理解,又能进一步提高学生的编程能力。但是单凭教授该课程的教师指导学生完成大作业,肯定会心有余而力不足。所以,学院应该为这些课程配备若干名经验丰富的指导教师。
编程的精髓在于实践,学生通过完成大量的任务和若干个项目,一定能在大量的实践中逐步形成扎实的编程功底。
3总结
为了解决计算机专业学生编程能力普遍较弱的问题,在我院软件工程专业教学模式的基础上,通过深入地研究,我们提出了基于网络教学的以任务驱动为核心的编程能力培养模式。在这种教学模式中,能充分发挥学生的主观能动性,学生是真正的主体,教师只是一个引导者;以培养学生的编程能力为中心,强调通过大量的编程实践在潜移默化中逐步形成扎实的编程基本功;这种模式注重编程能力培养的连续性,认为编程能力的培养不仅要依靠程序设计课程,还要在其他专业课程的学习中不断得到加强和提高。
在实际教学中,我们用此种模式对部分学生进行教学,实践证明这种模式对学生编程能力的形成有良好的效果。这种模式对提高学生的编程能力有较强的现实指导意义,但是它还存在着不足和需要改进的地方。例如,连贯的相互配合的教程的编写,建设智能化的网络实验室,教师队伍的组织和管理都是值得我们继续深入研究的问题。在以后的教学中,我们还会不断探索,继续丰富完善这种模式,使之能够为我国的软件行业培养出具有过硬编程能力的人才作出贡献。
参考文献:
[1] 李陶深.以能力培养为核心的程序设计课程教学研究与探索[J].广西大学学报,2008(9),36-37.
[2] 周荣辉.学生程序设计能力培养的思考[J].吉林大学学报,2005(8),122-126.
[3] 翁健红.提高学生编程能力的实践与思考[J].科技信息,2007(17),217.
[4] 舒兰英.以小组学习模式进行软件工程的教学[J].西华师范大学学报,2003(1),138-140.
To Explore the Programming-Capability-Building Mode Based on Web-Teaching
SHU Lan-ying
(School of Computer Science, China West Normal University, Nanchong, Sichuan 637002, China)
Abstract: At present, the programming capability of students in computer science is poor in our country, so we made bold reforms in programming course, and we put forward a new programming–capability-building mode which is based on web-teaching and its core is task-driven. In this mode, student is body, teacher is only a instructor. The student study basic knowledge use web-teaching system by themselves, and the teacher instructs students making practice through a wealth of tasks in class time. It can enhance the students programming-capability effectively and change the situation that the student is afraid of practice by use this mode.
Key words: Web-teaching; task-driven; programming-ability