首页 > 范文大全 > 正文

编程能力的后续培养

开篇:润墨网以专业的文秘视角,为您筛选了一篇编程能力的后续培养范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

文章编号:1672-5913(2008)20-0098-02

摘 要:本文针对高年级学生编程能力后续培养不足的问题进行了研究,以发挥学生的主动性积极性为核心,以施加对学生的积极影响为出发点,从知识体系、自学指导、学生组织、项目实践、交流合作等方面进行了多样化的尝试与探讨。

关键词:编程能力;后续培养;素质教育

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

1 传统培养方法的不足

程序员最重要的能力就是编程能力。就我国目前的情况而言,绝大多数程序员都是经高校培养成才[1-2]。传统的教学观念认为,编程类课程是学生获得编程能力的主要途径,因而在这方面进行了较多的研究[3-7],也取得了一定的成果。但是这种观点是不够全面的,在教学实践中,它往往导致以下几种情况的出现:

第一,对学生能力的培养不具有持续性。在低年级教完编程语言之后,高年级缺乏后续的指导。

第二,学生在编程方面的学习偏重于理论方面,尤其是语法方面。学生的实践机会不多,应用能力不强。

第三,学生学习的主体地位得不到保障。学生没有被有效的组织起来,不能积极主动的学习编程。

这些问题极大地阻碍了学生编程能力的培养。针对这些问题,我们以提升学生的编程能力为目标,以发挥学生的主动性积极性为核心,以施加对学生的积极影响为出发点,从知识体系、自学指导、学生组织、项目实践、交流合作等方面对编程能力的后续培养进行了多样化的尝试与探讨,取得了较好的效果。

2 后续培养的主要途径

2.1 知识体系结构的健全

一名合格的程序员除了掌握程序开发语言之外,还需要相当多的软件工程知识与广博的背景知识,这些远不是一两门编程类课程所能传授给学生的。因此,为了进一步建立与健全学生的知识体系结构,我们主要开设了三类后续课程,如表1所示。

第一类是直接与编程相关的课程,包括理论性课程与实践性课程两种。理论性课程或者偏重于编程技能的传授,或者与某一应用领域相结合,着重于软件或者平台工具的使用及再开发。实践性课程旨在培养学生的动手能力,主要是让学生在老师的指导下来完成一个算法或软件模块。实践性课程是一个很重要的环节,我们一般在二年级和三年级的每个学期中都安排两个星期让学生来专门进行此项活动。

第二类是软件工程相关的课程,主要是帮助学生了解和掌握软件工程体系,竖立软件质量观念。大多数高校都开设了其中的部分或者全部,在此不再赘述。

第三类课程主要是计算机相关应用领域的课程。这些课程与学生的所学专业相关,因此不同学校、不同专业各有侧重。重要的是,这些课程的老师也应当认识到自己对学生编程能力的培养负有间接责任。

2.2 自学的指导

编程能力的培养离不开学生的自学。在高年级,自学应该成为学生获取相关知识与内容的重要途径之一,并且良好的学习能力本身也是一名合格的程序员所必需的素质。

在这个阶段,教师应当更多的提供学习的指导,而非知识的传授。自学肯定会遇到很多困难,因此这个环节中面临的主要问题是如何让学生从尽可能多的渠道获取指导与帮助。围绕这个问题,我们作了三个方面的工作,如表2所示。

(1) 参考书目的推荐。我们推荐的书籍基本都是与编程直接相关的,分为两类,一类是开发语言的指导书籍,旨在让学生更深入的学习编程语言,这类书包括《C程序设计》、《Effective C++》等。另一类书籍主要侧重于编程的技能与技巧传授,包括《代码大全》、《程序设计实践》等。

(2) 依托课程的教学平台,我们在上面建立了BBS及讨论区,在这些网络空间中,不仅有课程相关内容的补充与延伸,还有学习经验介绍、开发技巧交流、在线课堂等内容,并有教师来负责相关的答疑与指导工作。

(3) 为了让学生更多的接触实际,更好地使用网络工具,我们筛选了一批比较知名的网站与技术博客,如程序员网站()、微软开发人员网络()等。除此之外,我们整理了一部分讨论比较热烈的网络技术组,如Google的C语言(comp.lang.c.moderated)、C++语言(comp.lang.c++.moderated)讨论组。这些技术组成员众多,分布于全球各个国家,许多顶级开发人员也参与其中,并热心讨论、回答每一个问题。往往一个问题在半小时之内就能得到相当专业的答复。因此我们鼓励学生参与这些技术组的讨论,并积极尝试回答问题。

2.3 学生的组织

在编程能力的后续培养中,面临的一个问题是学生没有被很好地组织起来,学习处于自发的摸索状态,主要靠单打独斗,缺乏必要的交流与引导。为了增强学生与学生、学生与实际之间的接触,让学生从交流中获取更多的“信息量”。在学校的组织下,我们做了如下工作:

(1) 将学生组织成各种层次、各种类型的兴趣小组和社团,并进行各种内部学习和交流,这样高年级学生或者编程能力较强的学生能够将学习经验、开发技巧传授给相对较弱的学生。

(2) 为了提升学生的兴趣,扩大先进编程技术、编程思想的影响力,我们组织了不同级别的程序设计竞赛,并选出一些优秀的学生参加更高级别的比赛,如ACM程序设计大赛、数学建模等。

(3) 定期举办硕博论坛、校友论坛等学术活动,请一些编程能力出众的硕士生、博士生,或者毕业的校友来进行讲座,为在校的学生介绍前沿技术动态,并提供学习指导与帮助。

2.4 多层次的实践

学生必须经过一定的项目实践,才能真正提高编程能力。除此以外,项目实践还能培养团队协作、编程风格、文档习惯等程序员所必需的能力。学校应该尽可能的提供实践机会。在项目实践方面,除了前面提到的程序设计、算法设计、软件设计等实践环节外,我校还向学生提供了多种机会:

(1) 建立创新基地。学校成立了三个校级大学生实践创新活动基地,七个院(系)大学生实践创新基地。学生在这里不仅可以结识很多高水平的老师,还可以寻找到兴趣一致的同学,从而大大提高了研究的劲头。

(2) 开放实验室。我校有不少国家级和省部级实验室。这些实验室不仅项目较多,而且相当多的属于前沿学术项目。只要学生具备一定的编程功底,就可以与实验室老师联系,得到加入科研项目的机会。

(3) 与培训机构合作。我校与全球最大的IT培训机构印度NIIT公司合作,学生可以申请参加其中的课程,在培训人员与教师的指导下完成预定的项目。不仅学生可以从中得到较多的收获,合作的教师也能掌握先进的培训方法,了解行业的实际需求。

(4) 提供资金赞助学生。学校每年都提供一定的资金。学生如果有感兴趣的项目,或者比较有创新的想法,都可以向学校申请,由学校来资助。

(5) 对外交流合作。我校与诺基亚、江苏移动、江苏电信等多个IT知名企业合作,与不少企业建立了合作关系。我校在一些企业建立了软件开发培训基地和嵌入式开发人才培养基地,由企业代为培训。另外,中兴、华为等大型企业也为我校提供了专门的实习岗位,学生可以直接参与实际的工程项目。这些培训与岗位,为学生了解行业背景、培养动手能力和锻炼编程技术提供了最直接、最有效的途径。

3 反响与效果

几年的尝试证明,上述举措收到了学生的热烈欢迎。学生以争做技术牛人为荣,也普遍感觉“动手时感觉没有以前那么多困难”、“对一些算法的理解比以前深多了”,在各级各类竞赛中,我校学生也斩获颇丰,仅2007年在国际、国内各种竞赛中获奖就达几十人,获奖人数及获奖率均列前茅。一些后续课程的老师也表示学生的基本编程功较以前更为扎实,教学相对顺利一些。

更重要的是来自用人单位的好评,根据用人单位的反馈,不少用人单位均表示“学生的动手能力很强”、“上手很快”等。而我校的就业率一直稳居江苏省前列,这也从一个侧面反映了效果。

4 结束语

在教学过程中,学生知识的获得、编程能力的培养,不可能只依靠一门或几门编程课就能达到目标,这些仅仅是一个开始,还有很多后续的工作要做。我们对编程能力的后续培养进行了多样化的改革与尝试,取得了较好的效果。而这些措施,反过来也能促进教学内容与实际需求的贴近,以及教师自身水平的提高。

参考文献

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

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

[3] 郑芸.运用目标教学方法培养学生编程能力[J].高教论坛,2007,(2):118-119.

[4] 徐进华.提高学生程序设计能力的几个措施[J].计算机时代,2005,(11):52-53.

[5] 田孟红.培养学生编程能力的实践与思考[J].文山师范高等专科学校学报,2004,17(4):367-369.

[6] 吴海珍,蒋加伏.面向编程能力培养的VB语言教学改革[J].湖南师范大学教育科学学报,2005,4(6):120-122.

[7] 李海伦,唐全.“程序设计”课程教学改革的研究与实践―加强算法设计教学,提高学生编程能力[J].计算机教育,2005,(7):21-22.