“计算机程序设计语言”教学刍议

时间:2022-08-08 01:10:59

“计算机程序设计语言”教学刍议

文章编号:1672-5913(2009)10-0018-03

摘要:“计算机程序设计语言”课程是计算机科学与技术学科核心的课程之一,极大地影响着学生对计算机领域的理解和兴趣。本文针对教学过程中存在的问题,提出了层次化教学目标思想。以面向对象语言C++为例,介绍基于层次化教学目标体系的具体思想和内容,并提出与之相适用的课程及实验设计,达到优化教学方法,提高教学质量的目的。

关键词:计算机程序设计语言;层次化教学;C++

中图分类号:G642

文献标识码:A

1“计算机程序设计语言”教学现状

“计算机程序设计语言”是普通高校计算机教育的基本专业课程,在计算机领域的各个专业的课程体系中都处于核心的地位。这门课程不仅可使学生获得基本的程序设计能力及锻炼学生的逻辑思维能力,它还极大地影响着学生对计算机领域的兴趣和理解,对引导和培养学生在计算机工程及理论方面的研究兴趣起着先导性和基础性的作用。因此,“计算机程序设计语言”的教学质量成为影响大学本科计算机教学质量和效果的一个关键的因素。

影响课程教学质量的主要三个因素为教学内容、教学方法和实验设计。当前,大部分教师受传统教学模式的影响,教学的重点都放在程序语言的基本语法的讲授,课堂所设计的程序实例大部分围绕语法规则的演示和说明,这种模式同样也影响到实验环节的设计。这种就事论事,形而上学的教学模式具有许多明显的弊端,主要体现在以下几方面:

(1) 不利于培养学生的学习兴趣

许多从事程序设计语言教学的教师(包括笔者)都有这样的感受:每讲授一门新的程序设计语言课,初期学生都抱着积极,对获取知识的极大热情投入课程的学习,但随着教学过程的深入,这种热情往往不能持久。导致这种局面的原因固然有教师本身的教学方法和教学手段的缺陷,但根本原因还是教学内容的设置不科学。在单纯以讲授语法规则这种教学模式下,学生难以保持长久的学习兴趣和动力。

(2) 不利于学生建立综合化,系统化的知识体系

程序设计语言是表达设计者思想和计算机计算逻辑的符号系统,具有多层面、多视角的内涵。要把学生培养为具有高素质的程序设计人员,仅仅熟悉没有精神的符号及符号规则远远不够,这需要学生具备设计高质量程序的综合化的知识体系,而当前的程序设计语言的教学现状并不能满足这种需求。

(3) 不利于培养学生解决实际问题的综合能力及创新意识和思想

当前,素质教育成为各级教育系统,包括高等院校所关注的热点,知识高等院校所关注的“素质”内涵不同。笔者认为高校大学毕业生应具备的素质包括:综合化、系统化的专业知识体系;应有已有的知识体系解决实际问题的能力;具有创新的意识和思想。总体而言,大部分教师对程序设计语言课程所采取的教学不利于这种素质的培养。

针对这种现状,结合我国高等教育发展的现状,本文提出程序设计语言的层次化教学目标的思想,并以面向对象程序语言为例,论述在层次化教学目标驱动下的课程设计。

2层次化的教学目标

各项教学活动有效展开的基本条件是合理的教学目标的确定,但单一的教学目标并不能适用当前中国复杂的高等教育现状。社会经济的快速发展产生了明显的多类型、层次化的人才需求,这种趋势在各类软件公司里表现得尤其明显。为了适用这种人才需求的转变,高等教育领域在这些年相应地发生了巨大的变化,各种类型、各种不同层次的教育机构大量出现,改变了过去高等教育机构单纯负责培养具有从事复杂脑力劳动的高级专业人才的状况。这些变化最终体现为教师的工作,体现为教师针对不同的教学对象所制定的教学目标体系。

当前,由于社会信息化的发展,各类计算机类课程已经渗透到各个学科,例如笔者所在的苏州大学,几乎所有的院系都设置了信息技术类的有关课程,大约超过一半的院系设置了“计算机程序设计语言”的课程,因此“计算机语言设计课程”的教学质量是总体教学质量评估的重要组成部分。笔者多年来一直在苏州大学承担程序设计语言的课程,包括一类本科计算机专业基础课程、二类本科专业基础课和公共基础课程。大量的教学实践表明单一的教学目标不能适用多样化的教学对象、多样化的人才需求和程序设计语言知识逻辑在广度和深度方面所具有的层次化的特点。下面将论述程序设计语言课程的层次化的教学目标体系及各层的具体内涵。

2.1低级目标

该目标要求掌握标准化的程序语言语法体系,以学生掌握基本的标准语法体系为基本要求,并能初步应用语言开发较小型的简单应用程序,具备初步的程序设计能力。低级目标要使得学生对所学知识“知其然”,课程教学内容主要围绕标准的语法规则,课堂和实验环节所选定的程序实例大多围绕着验证和演示语法规则及语法规则之间的联系进行设计。在以低级目标驱动的教学中,因为重在基本知识的传授,因此核心教学内容的选择是第一位的要素。当然每门程序设计语言课程都有其固有的核心内容,例如,在C++语言中,核心的教学内容为:面向对象的概念、继承、多态、模板及异常等,即使如此,还需要根据教学对象,对教学内容和授课方式进行选择和取舍。总的原则是围绕重点概念和知识采取“精讲多练”和“突出重点”的方式进行教学。

2.2中级目标

中级目标则要要求学生围绕目标程序设计语言,具备系统化的程序设计方法和技巧,逐渐使学生“知其所以然”。该层目标不仅要让学生掌握“语法”,还要让学生掌握“语义”;不仅让学生掌握语言本身,还要让学生扩展思维,了解、理解更多的外延的知识;不仅要让学生掌握基本的程序设计方法,要让学生初步掌握系统化的程序设计方法和建立起程序质量的观点。程序设计语言的外延知识涉及计算机专业许多重要的核心课程,包括编译原理、算法分析与设计、计算机组成与结构、离散数学、数据结构和软件工程等。当然,不可能指望通过一门课程的学习,使学生有效地、完整地掌握所有这些知识,只能使与实现中级目标有紧密联系的知识能渗入到重点的知识讲授和实验的安排中。

2.3高级目标

不管是初级目标的“知其然”,还是中级目标的“知其所以然”,都是知识学习,而高级目标阶段的重点是运用知识,体验知识,要求学生具备利用目标程序设计语言解决一定复杂度和规模的实际问题的能力,建立抽象的程序设计思想、方法和质量的观点。高级目标的教学内容的重点在如何在所讲授的语言框架里解决一定规模的应用问题,并从具体的实现里提炼出抽象的设计思想,分析实现的质量,总结好的实现方法和设计思想。

确立了教学目标,下一步的焦点为围绕实现具体的教学目标,制定各教学环节的具体的教学内容和教学手段,主要包括课堂教学环节和上机实践环节。结合笔者的教学实践,下一节将围绕这方面的内容展开论述。

3层次化的目标引导的课程设计

C++语言因其强大的功能及广泛的实用性而日益成为当前高校理工类专业程序设计的主流教学语言,因此本节将以C++为例,讨论层次化教学目标思想如何在教学实践中得到贯彻。C++程序设计语言的教学涉及课堂教学和实践教学两个环节,下面将就这两方面展开论述。

3.1课堂教学

确定目标课程的教学内容是开展有效的课堂教学,取得既定的教学目标的前提和基本要求。针对本文所提出的层次化的教学目标体系的基本内涵,C++程序语言的课堂教学内容在深度和广度上也应该展现出层次化,递进性的特点。

在低级目标中,掌握本程序语言的基本语法体系是最重要的目标,在教学内容的设计上,应确定语言的最核心最重要的语法现象。过程化程序设计向对象化程序设计是C++语言的最重要的特征,因此“对象”和“类”,以及由此产生的“继承”,“封装”,“多态”和“异常” 成为最核心的教学内容。在教学时应集中注意力于这些类对象的关键个性技术,围绕关键技术“精讲多练”,使学生深刻理解面向对象C++的这些关键技术;要有重点,不能面面俱到,有所失,才能有所得。

低级目标是为了使学生掌握知识,使其“知其然”,那么中级目标则要逐渐使受教育者“知其所以然”,教学的重点从对语法的训练转向对语义的理解,包括静态结构语义和程序执行语义。在C++的教学中,以C++对象模型作为教学内容的重点,通过从静态的程序代码结构和运行的程序状态两方面展开课堂教学,这样在知识语言的“所以然”的基础上,学生不仅知道什么是“多态”,并且知识“多态”是怎么实现的;什么是运行时类型检查(RTTI),运行时类型检查能提供什么程序设计策略等;许多的外延知识能沿课堂展开,例如编译原理、算法分析与设计等。由Stanley B. Lippman所著的《Inside The C++ Object Model》为我们设计课程材料提供了方向性的指导。

低级目标和中级目标都是针对知识的学习,而高级目标则针对知识运用,提高运用知识进行设计的能力。此层次涉及知识的学习、理解和综合运用,要在有限的时间内,实现教学目标,在课程教学内容的选取和设计及课时的安排上,具有一定的难度,对教者和学者都具有一定的挑战性。“设计模式”可以成为本层次的基本或延展性的教学内容。设计模式虽然不与具体的设计语言有着必然的、密切的联系,但事实上各种技术性、或纯教学性的书籍中,都把面向对象语言作为实现各种设计思想的不二选择。通过设计模式内容的讲授,可以使得学生对面向对象的基础知识有更深刻的理解,同时增强灵活运用所学知识的能力,体验面向对象程序设计方法学所带来的设计上的“美”,激发学生的创造力。

当然,上面针对课堂教学内容的论述仅仅进行了基本的界定和论述,需要通过下面几方面来贯彻实施,以达到各个层次的教学目标:

(1) 通过教者的努力,设计出丰富的、具体的课程素材;

(2) 针对不同的教学内容,设计多样化的教学手段和方法;

(3) 针对不同的教学内容布置合理的作业和考核方法。

3.2实践教学

在程序设计语言的教学中,课堂教学和上机实践教学是并重的环节,不可偏废,一起决定着教学的质量和教学目标的取得。如何设计安排上机环节通过大量的教学实践,已经总结出了大量的行之有效的方法。下文就实验内容及实验的组织形式进行一些必要的、有益的讨论。

结合课堂内容,以往的实践环节主要由学生编制一些小的程序,进行语法现象的演示及验证。但笔者通过大量的教学实践发现:这种普遍采用的,且行之有效的方法,对于学生巩固知识,提高调试程序的能力和技巧具有显著的效果。但随着教学的深入,这种方法也显示出种种的弊端,例如:学生专著于知识点,必然缺乏对知识的整体把握;学生容不易形成良好的编程习惯等。针对这种情况,笔者在实践的环节中,增加“读程序”的分量。教师提供一些高质量的程序范例让学生进行阅读、理解,并对范例的程序风格和设计方法进行总结比较,以提高学者的综合能力,尤其是到了后期,所提供的范例更具有综合性、全面性和示范性,能极大地提高学生掌握知识的深度和广度,激发他们的学习热情。

在实践人员的组织形式上,一般在程序设计语言的教学中,都是学生独立进行的。在教学实践中,也可引进一些软件开发中的方法,比如采用小组制的形式,根据实践内容的不同,小组或大或小。即使是在低层目标为导向的教学中,也可采用小组的方法进行实践环节的教学,不过此时小组人数不宜过多,最佳数目为二人。采用这样的方法,有以下的益处:

(1) 便于学生进行交流,以达到取长补短的目的;

(2) 提高教学效率,以较少教学活动取得同样甚至更好的效果;

(3) 培养团队合作精神等。

在以中级和高级目标为导向的教学中,实践环节应从语法演示和验证为重点转变为以知识的理解和知识的运用为重点,因此除了结合教学内容设计相应的实践内容外,最显著的特点是增加综合性的项目开发环节,以达到知识的综合掌握和运用。

当前以语法的演示和验证目的实践环节的设计具有大量的教学实践可资借鉴和学习,但针对更高两层教学目标的实践环节则缺乏有效的素材和经验可以利用,需要通过进一步的教学实践活动加以积累和总结。当前的一些做法是借用开发一个具有一定规模的项目来弥补纯语法的演示和验证实践方法的不足。

4结论

本文针对当前在程序设计语言的教学中存在的问题,提出了多层次教学目标的观念,并介绍了各层次目标的具体内容和以此目标为导向的主要的教学环节的设计。各个层次的教学内容和教学方法手段并不是彼此割裂的,如何针对各种不同的教学对象进行合理的课程设计,以提高教学质量有待于进一步的大量的教学实践活动。下一步最主要的工作总结探索各种教学资源以及相应的考核方法,尤其是用于中级目标和高级目标为导向的教学活动。

参考文献:

[1] 吴乃陵. 面向对象C++程序设计教学改革[J]. 电气电子教学学报,2003,25(2):9-11.

[2] 徐宏,聂影,黄征华,等. 计算机程序设计语言的教学探索[J]. 教学研究,2004(2):89-93.

[3] 沈军. 程序设计语言类课程的教学思路研究[J]. 高等工程教育研究,2001(1):80-82.

[4] Stanley B. Lippman. Inside The C++ Object Model [M]. Addison-Wesley Publisher, 1996.

[5] Erich Gamma, Richard Helm, Ralph Johnson ,et al. Design Pattern: Elements of Reusable Object Oriented Software [M]. Addison-Wesley Publisher,1995.

Research on Teaching of Programming Language

CHEN Dong-huo,YAO Wang-shu

(School of Computer Science and Technology, Soochow University, Suzhou 215006, China )

Abstract: Programming language is the core course, which has very strong impact on understanding to the basic knowledge and theory of computer science and technology. Considering the current state of teaching of programming language, this paper proposes the idea of multi-levels teaching goal, introduces the basic intension in detail, and discusses how to implement the idea in teaching practice of C++ programming language.

Key words: programming language; multi-levels teaching; C++

上一篇:“三点一线”教学方法在“嵌入式系统”课程中... 下一篇:利用Excel建立人体生物节律表