程序设计实践课程中程序员素质的培养

时间:2022-08-05 11:58:32

程序设计实践课程中程序员素质的培养

摘要:本文以提升学生的程序员素质为目标,以培养学生的动手能力、学习能力和创新能力为核心,从课程的组织、选题、流程、考核等方面对程序设计实践课程进行了改革,取得了较好的成果。

关键词:程序设计实践;素质培养;学习能力培养;课程改革

中图分类号:G642 文献标识码:B

文章编号:1672-5913 (2007) 22-0025-03

1传统程序设计实践课程的不足

程序员素质的内涵很丰富,没有统一的标准,公认包括如下几个方面 [1-5]:① 持续学习的能力;② 团队协作能力;③ 需求理解能力;④ 文档习惯;⑤ 良好的代码编写风格;⑥ 测试习惯。

在目前的计算机课程体系中,程序设计实践课程是培养程序员素质的一门关键课程,一般安排在程序语言课程之后,通过指导学生动手完成一个设计课题来达到三个目标。一是让学生加深对编程语言的理解,提高综合运用能力、自学能力与创新能力;二是让学生体验完整的开发过程,获得具体的开发经验;三是训练逻辑思维能力,培养严谨的科学作风。在具体的实践中该课程存在如下问题[4]:

(1) 在学生的组织上,经常是多个学生独立完成同一个课题。学生没有被组织起来,相互间的协作、沟通不够。

(2) 在课程的选题上,过于偏重于语法,课题内容陈旧,趣味性不强,不能引起学生的兴趣与积极性。

(3) 在开发的流程上,教师无法对学生的开发过程实施准确有效的监督与控制,编程习惯、编程风格等方面的引导、训练不够。

(4) 在课题的考核上,评分以程序最终实现的功能为主,考核指标中缺乏对文档、代码格式等方面的考虑,并且无法完全杜绝抄袭的发生。

这些问题极大地阻碍了学生程序员素质的培养。针对这些问题,我们结合教学的实际,以提升学生的程序员素质为目标,以培养学生的动手能力、学习能力和创新能力为核心,在组织、选题、流程、考核等方面对程序设计实践课程进行了改革,取得了较好的成果。

2程序设计实践课程中程序员素质的培养

2.1团队协作能力的培养

团队协作能力是程序员应具备的基本素质。我们在课程中把学生分为若干个小组,每组3~5人。分组时适当参考学生的实际能力,避免能力较弱的学生分在同一组。

每组一个组长,由老师指定或者学生推举产生。组长应当具有较好的动手能力和奉献精神,负责整个小组的成员组织以及程序开发的进度协调。

小组中的每个成员都要完成一定的编码量,可以独立或者与其他人合作来完成整个课题。碰到问题时一起交流、讨论,各尽所能,取长补短。好的思路可以被整个团队共享。

实践证明,这种组织方式一方面培养了学生的责任感,提高了团队协作能力,另一方面也有利于课题的进展,减少了被难题卡住的可能性。对教师来说,这种方式部分减轻了对学生个体的答疑工作量,使教师能把更多的精力放在程序设计的整体指导上。

2.2学习能力的培养

由于采取了小组模式,多人合作来共同完成一个任务,因此可以选择相对较大的课题。从培养学习能力的角度出发,选题时我们考虑了如下几个方面:

(1) 由于程序设计教学是编程语言教学的进一步深入,因此对编程语言中的一些语法难点进行了有意识的强化,包括动态内存管理、文本菜单、文件操作、链表操作、高级指针、排序查找算法等,以夯实学生的理论基础。

(2) 选题时注意实用性与趣味性,并尽量与学生的专业相结合,以提高学生参与的积极性与主动性。

(3) 选题时注意新颖性,一方面提高了学生的兴趣,另一方面也能避免从网上搜到现成的代码。

(4) 课题具有一定的伸缩性,每个课题都设置了一些选做的功能,以满足不同层次的学生。鼓励水平高的学生完成较多的功能以及对功能的合理扩展。

(5) 为了培养学生的自学能力,出题时布置了一些超出课本范围的内容,如一些函数(数学函数、延时函数、发音函数、随机函数等)的使用以及界面的设计等。

(6) 鼓励学生自己提出符合上述要求的新课题,以进一步提高学生参与的积极性。

表1是我校近年来老师与学生所设计的部分课题,涉及体育、专业、娱乐等多个方面。实践证明,课题的多样性扩大了知识点的覆盖面,提升了学生的参与热情,保证了程序设计实践课程的质量,促进了学生学习能力的培养。

表1 我校近年老师与学生所设计的部分课题

2.3分析设计、编程风格、文档习惯等多种能力的综合培养

学生的动手能力是通过开发实践锻炼出来的。对开发过程实施积极有效的控制干预,是实现培养目标的关键。我们在课题进程中实施组长监督与教师引导的二级管理,注意培养学生的多种能力,并在不同阶段各有侧重。具体如表2所示。传统的程序设计实践课程对编码、调试能力强调较多,这里不再详述,下面讨论其他几种能力的培养。

表2 课题实施各阶段能力培养的侧重点

(1) 分析能力与设计能力

对于刚学完编程语言的学生,这两个方面不宜提过高的要求。我们在这两个阶段与学生进行较多的交互与指导,使学生能明确课题的功能需求与性能需求,学会正确表达程序设计的思路。通过对这两种能力的培养,可以让学生了解自己的任务在整个课题中的地位,并建立初步的软件工程观念。

(2) 编程风格

在现代软件开发中,良好的编程风格不仅有助于代码的移植和纠错,也有助于不同技术人员之间的协作。我们参考了一些知名软件公司的开发规范,从变量命名、注释、空行、缩进格式等方面对学生进行简单的引导与训练,帮助学生培养良好的编程风格,以适应将来社会的需求。

(3) 测试习惯

测试是软件工程质量保证的重要环节。在课题的实施中,我们要求学生掌握一定的测试方法,并养成及时测试的习惯,每编完一个函数都要进行测试。这样做既能提高学生的查错能力,也能帮助学生树立的软件产品质量保障的观念。

(4) 文档习惯

文档是软件产品的重要组成部分。一些知名的软件公司要求员工必须将30%以上的工作时间用于编写技术文档。我们对此也予以充分重视,要求学生在各个阶段都进行文档的记录,包括分析方案、设计方案、每天的开发进度、总结报告等。对于学生来说,这样做可以培养良好的习惯。对于教师来说,可以通过这些文档掌握课题进度,及时进行干预,并且这些文档也是最后评分的重要依据之一。

(5) 自学能力

自学能力是创新能力的基础。我们在课题实施中,强调发挥学生的主观能动性。布置课题时,提供了一些网站、工具书和论坛供学生参考。学生遇到问题时,教师以引导和提示为主,一般不直接提供答案。从而使得整个过程成为学生主动求知、探索的过程。

2.4全方面的考核

为了最大程度的杜绝抄袭现象,在课题结束时,我们要求每个学生进行答辩,介绍自己的作品和工作。成绩的评定在综合多个方面之后给出,主要的指标体系包括如下几个方面:

(1) 程序方面,从功能的实现与代码的风格两个角度来进行评价。

(2) 文档方面,从文档的质量、数量以及报告的内容来综合评价。

(3) 团队协作方面,主要评价个人在团队的作用,包括个人工作在课题中的比重,与他人的合作情况等。

(4) 答辩表现,包括PPT的制作和问题的回答情况等。

通过以上这些方面,能够对学生进行比较全面、公正的评价。

3比较

程序设计实践课程改革前后的比较如表3所示。从表中可以看出,新的实践课程能够保证课程质量,全面提高学生各方面的能力。学生的反响也比较好,不少学生在总结报告中表示“得到了很大的锻炼”、“受益匪浅”、“找到了编程的乐趣”。

表3 程序设计实践课程改革前后的比较

4结束语

合格的软件人员是我国信息化进程中的中坚力量。为了培养符合社会需求的软件人才,我们进行了一定的探索。我们的程序设计实践课程注意发挥学生的主动性,注重对学生程序员素质的培养,因而取得了比较显著的成效。这也是一个值得深入探讨的课题,我们将继续进行研究,以期能进一步提高效果。

参考文献

[1] 教育部计算机科学与技术专业教学指导分委员会. 中国计算机本科专业发展战略研究报告[R]. 中国大学教学, 2005, 5:7-10.

[2] Gerald Weinberg. The Psychology of Computer Programming: Silver Anniversary Edition [M]. New York: DORSET HOUSE Publishing Company, 2003

[3] Andrew Hunt, David Thomas. The Pragmatic Programmer: From Journeyman to Master [M]. New York: Addison Wesley Publishing Company, 1999

[4] 李晓明, 陈平, 张铭, 朱敏悦. 关于计算机人才需求的调研报告[J]. 计算机教育,2004,(8):11-18.

[5] 梁肇新. 编程高手箴言[M]. 北京:电子工业出版社, 2003.

作者简介

郭剑(1978-),男,讲师,南京邮电大学计算机软件基础教学中心,主要研究方向为演化计算、计算机在通信中的应用。

朱立华(1970-),女,副教授,南京邮电大学计算机软件基础教学中心主任,主要研究方向为计算机软件。

孙力娟(1963-),女,教授,硕士生导师,南京邮电大学计算机学院副院长,主要研究方向为演化计算、计算机网络。

基金项目:南京邮电大学教学改革研究项目(JG00406JX16)

上一篇:计算机基础双语多媒体课件的制作 下一篇:高职教育中“数据结构”的教学研究与体会