能力为导向的计算机程序设计课程教学改革

更新时间:2023-12-23 作者:用户投稿原创标记本站原创 点赞:4563 浏览:11276

文章编号:1672-5913(2013)22-0036-04

中图分类号:G642

摘 要:针对当前计算机程序设计课程建设面,临的两方面挑战,提出由4个等级组成的逐层递进的程序设计能力模型,构建覆盖不同能力等级的课程体系,进行一系列以提高程序设计能力为目标的教学方法改革,包括基于能力的分级教学、能力测评和考核、程序设计能力训练和提升方法、课堂授课方式的改变等,从而实现计算机程序设计课程教学从侧重知识传授到突出能力培养的转变.

关 键 词:计算机程序设计;程序设计能力模型;教学方法改革

0引言

随着计算机的不断普及其在各个专业领域日益广泛和深入的应用,计算机软件作为信息系统的一种重要载体正越来越多地用于解决各专业领域的相关问题,如电子技术、材料科学与工程、物理学、化学、系统工程、机械工程等.程序设计是构造计算机软件的一项重要活动和技术形态,其核心是利用程序设计技术并借助特定程序设计语言(如Ja、C++等),将专业领域问题或者应用问题抽象为计算机软件的形式,从而实现基于计算的问题求解.由于以计算机软件为核心的计算技术在许多专业领域正发挥着越来越重要的作用,扮演着极为重要的角色,因此计算机程序设计受到越来越多专业的关注和重视,被视为一种重要的基本技能,诸多大学将计算机程序设计课程列为公共基础课程.

1计算机程序设计课程建设面临的挑战

传统上,计算机程序设计的课程教学侧重知识的传授,主要为学生讲授程序设计的基本概念和思想,介绍特定的程序设计范例(如结构化程序设计、面向对象程序设计)以及相应的程序设计语言(如C、C++等);教学对象以计算机专业的学生为主.随着越来越多专业的学生选修计算机程序设计课程,课程教学更加关注借助程序设计技术对专业领域问题进行分析和抽象.当前计算机程序设计课程建设面临着以下两方面的挑战.

1)如何实现从侧重知识传授到突出能力培养的转变.

各个专业方向关注的是如何借助程序设计技术构建相应的计算机软件,从而解决专业领域的问题.在计算机程序设计课程教学过程中,有关程序设计基本概念、思想和语言的讲授是实现这一目标的基础,如何利用这些知识抽象并求解专业和应用领域中的问题,才是该课程教学的关键;因此计算机程序设计课程的教学需要将关注点从侧重知识传授转变到突出程序设计能力培养,即要培养学生使用计算技术解决专业问题的能力.

2)如何满足不同专业对程序设计能力的不同需求.

尽管计算机程序设计的基本概念、思想和语言独立于具体的专业领域,也与特定的问题无关,但是各个专业方向所关心的程序设计问题是不一样的.例如,数学专业关心的是如何将数学模型转换为计算模型;电子技术专业关心的是如何开发计算机软件,以实现底层电子硬件与高层信息系统之间的交互等.程序设计能力表现为多种形式,包括针对给定问题抽象出相应程序的能力,基于有限的计算资源(如存储和运算资源)提高程序有效性和高效性的能力,提高程序的质量以使程序易于维护、扩展和重用的能力等.有些能力是需要具备的基本能力,有些能力则要求更高.

针对上述问题,我们依托计算机程序设计课程建设,围绕能力模型、课程体系、教学方法3个方面,开展以突出程序设计能力培养为目标的教学改革与实践,强化能力训练和测评,提高计算机程序设计课程教学水平和人才培养质量.

2程序设计能力模型

为了突出和强化计算机程序设计能力的培养,指导开展以能力为导向的课程教学改革,首先必须回答何为计算机程序设计能力?它表现为哪些方面?不同能力表现形式之间存在什么样的关系?能力的训练和提升应遵循什么样的规律?如何表示不同专业领域对计算机程序设计能力的不同需求?为此,我们提出图1所示的计算机程序设计能力模型.

计算机程序设计能力模型由4个等级组成,即初始级、技能级、工程级和创新级.每个等级反映程序设计能力的某种表现形式,因而有其特定的关注点.例如,初始级需具备程序设计语言的基本运用能力;技能级需具备对问题进行数据和算法抽象的能力,使得所开发的程序具有良好的时效性和高效性.不同程序设计能力等级之间存在依赖关系,形成一种逐层递进的能力进阶方式.例如,技能级建立在初始级基础之上,工程级需要以技能级为基础.将程序设计能力从一个等级(如初始级)提升到另一个等级(如技能级),需要针对目标等级的特定关注点,循序渐进地进行能力提升.

1)初始级.

初始级的程序设计能力具体表现为:掌握计算机程序设计的基本概念和知识;掌握一门或多门计算机程序设计语言;具备程序设计语言的基本运用能力;具有编写百行规模程序的能力;能熟练使用工具或环境对所编写的程序进行调试和分析.

该等级反映了计算机程序设计能力的最基本水平,也是计算机程序设计课程教学需要达到的基本目标.这一等级通常面向非信息类专业的学生,他们应通过计算机程序设计课程的学习,具备初始级的程序设计能力.

2)技能级.

技能级的程序设计能力具体表现为:了解计算资源(包括存储和运算)的有限性;掌握常用的算法和数据结构;具有运用程序设计技术对待解决问题进行分析、设计和计算求解的能力;能够针对有效的计算资源,从时间和空间2个维度,对给定问题在计算空间中进行数据和算法抽象的能力;具有编写千行规模程序的能力.

该等级体现了程序设计的较高水平,计算机程序设计竞赛非常关注这一等级的程序设计水平.这一等级通常面向信息类专业的学生,他们应通过计算机程序设计课程的学习,具备技能级的程序设计能力.

3)工程级.

工程级的程序设计能力具体表现为:掌握大规模程序的复杂性特点、程序质量的要素与内涵;掌握程序设计方法和知识,能够运用抽象、模块化、信息隐藏、软件重用等思想设计和实现大规模、高质量的程序;能够编写出具有良好的可读性、可靠性、可维护性、可重用性、可扩展性等属性的程序代码,使得该程序代码具有良好设计风格;具有编写数千行规模程序的能力.该等级体现了程序设计的工程化水平,可以为大规模软件的工程化开发奠定基础.这一等级通常面向计算机专业(如软件工程、计算机科学与技术)的学生,他们应通过计算机程序设计课,程的学习,具备工程级的程序设计能力.

4)创新级.

创新级的程序设计能力具体表现为:能够灵活运用所掌握的计算机程序设计技术并与其他专业领域的技术相结合,开展创新实践,解决特定领域和专业的问题.这一等级着重关注程序设计技术的综合运用和创新性解决问题的能力,通常面向各个专业的创新实践.

计算机程序设计模型明确了每个等级的关注点、能力指标及培养目标,指明不同等级间提高程序设计能力的方法和手段;支持逐层递进的程序设计能力培养,加强针对程序设计能力的训练,改进测评和考核方式,为推动能力为导向的计算机程序设计课程教学改革奠定基础,为国家信息化建设需要的多专业、多层次人才的程序设计能力培养提供新模式.

3计算机程序设计课程体系

为了解决不同专业对程序设计能力的不同需求问题,开展不同等级计算机程序设计能力的培养和训练,指导各个专业方向的学生有针对性地选择所需的计算机程序设计课程,我们以计算机程序设计能力模型为基础,构建覆盖不同能力等级、逐层递进的计算机程序设计课程体系.支持程序设计能力模型的课程体系如图2所示.

1)初始级课程.

根据初始级程序设计能力的要求,我们在该等级开设计算机程序设计和面向对象程序设计课程,培养学生获取程序设计基础知识和运用程序语言的基本能力.

2)技能级课程.

根据技能级程序设计能力的要求,我们在该等级开设数据结构和算法设计与分析课程,培养学生如何针对特定问题,在计算资源有限的情况下,从时空有效性的角度开展数据和算法设计的能力.

3)工程级课程.

根据工程级程序设计能力的要求,我们在该等级开设程序设计课程设计(即程序设计综合实践)、程序设计方法学和并行程序设计课程,着重培养学生编写大规模、高质量程序的能力.

4)创新级课程.

根据创新级程序设计能力的要求,我们在该等级开设Android程序设计、面向机器人程序设计、无人系统程序设计等课程,关注多种技术的融合运用,着重培养学生综合运用程序设计技术和专业领域技术,创新性地解决专业领域问题的能力.该专业领域涉及机电一体化、电子工程、自动控制、航空航天等.

4深化以能力为导向的教学方法改革

为了加强计算机程序设计能力的培养,推动程序设计能力的训练和测评,我们改革和实践一系列行之有效的教学方法,实现计算机程序设计课程教学从侧重知识传授到突出能力培养的转变.

1)开展基于能力的分级教学.

我们根据不同专业的需求选择人才培养的能力等级及其所需的课程,根据学生的不同基础和能力实施分级教学.该方法为有针对性地对不同专业、不同基础的学生进行计算机程序设计能力培养提供了参考和准绳.目前,分级教学设A、B、C,分级标准参考如下.(1):具有较好的程序设计思维和潜力,具有一定的程序设计基础知识和能力.班比例为25%-35%,每班50~60人.(2)B级:预计通过正常授课和实验,能够完成大纲学习要求.B级班按大纲实施教学.(3)C级:通过正常授课和实验,完成大纲学习要求存在一定困难.C级班增加10个授课或实验学时,规定学生在课程结束后达到大纲要求.C级班要求教师进行更加细致的讲解,学生进行更多的基础训练.

2)实施面向程序设计能力的培养模式.

我们必须通过多种手段在实践中培养和提升学生的程序设计能力,为此总结出“读、改、写、用”相结合的能力训练方法,即通过读程序代码,改已有程序代码,编写程序代码,重用已有的设计模式、系统或应用程序接口、外设、第三方程序模块等,综合培养学生的程序设计能力.我们尤其强化学生对高质量开源软件的阅读能力,从中学习、领会和掌握设计精巧、具有良好可读性、可维护性、可扩展性的程序,鼓励学生通过对已有程序进行扩展和改进,继承和掌握遗留软件中具有的良好“品质”.


3)改革程序设计课程的授课方式.

程序设计是一门实践性很强的课程,针对这一特点,我们采用学中练、练中学的方式,将课堂搬到实验室,通过“讲授+练习+讲评+训练”的实验室授课方式,淡化知识传授,加强问题引导并对实践体会加以总结,精心设计针对特定知识点的单元练习和串联所有知识点的渐增式项目,变讲授为研讨,变学习为体会,变任务为兴趣.实验室授课弱化教师的讲授,强化学生的主动学习,将间接经验传授转换为直接经验体会,这也更加符合程序设计的学习规律,极大地提高了学生的实践训练强度.

4)提出程序设计能力的测评方法.

我们开展面向能力的测评与考核,针对不同等级测评,采用人工与自动相结合、定量与定性相结合、自评与互评相结合的方式,借助实践教学平台,建立基于功能、性能和质量等多维属性的程序设计能力测评与考核系统.初始级依托考试系统,采用测试用例集测评学生对具体问题的程序实现能力;技能级采用大数据集的方法对实现的数据结构和算法效率进行测评;工程级采用人工和商用工具测评程序的风格、体系结构和质量;创新级采用过程跟踪和专家评分的方法评判创新能力.

5结语

如何针对不同专业对程序设计能力的不同需求提高学生的程序设计水平,是计算机程序设计课程建设面临的一项重要挑战.我们以构建计算机程序设计能力模型为核心,以建立覆盖各个能力等级的计算机程序设计课程体系为突破口,以改革面向能力培养和训练的课程教学方法为手段,开展以能力为导向的计算机程序设计课程教学改革与实践.实践结果表明:课程教学的改革思路越清晰、目标越明确,所培养学生的独立编程能力越能够得到大幅度提升,程序设计的调试和测试从原先几乎被忽视变成了学生的自觉行为,诸多学生养成了良好的程序设计习惯,为参加各种计算机程序设计竞赛和开发大规模软件奠定了扎实基础.