提高程序设计类基础课教学实效的途径与方法

时间:2022-04-22 02:12:50

提高程序设计类基础课教学实效的途径与方法

摘要:提出基于核心语法子集优化教学内容、基于认知理论优化教学方法和建立多元化优质教学资源3大改革途径,结合科学实验和经验提出程序设计语言核心语法子集的确定方法。总结认知理论的基本教学原则,以实例的形式阐述程序设计类基础课程的优化教学方法。

关键词:认知理论;核心语法子集;程序设计;教学改革

文章编号:1672-5913(2013)03-0022-04

中图分类号:G642

计算机程序设计类基础课程是高校计算机基础教学体系的核心课程,从国内教学现状来看,许多学生对程序设计技能训练不够,不能很好地树立“程序设计思维”,多数学生不能独立编写解决实际问题的程序。究其原因,一是在有限的课时内灌输大量繁杂语法知识,导致程序设计技能培养投入不足;二是限于初学者的认知水平难以建立程序设计的逻辑思维方式。死的语法知识是“鱼”,而程序设计能力是“渔”,“授人以鱼”不如“授人以渔”。因此,我们提出精简和优化语法教学内容,以核心语法子集进行教学的思想,以认知理论为指导,探讨优化的教学方法,以此提高程序设计基础类课程的教学实效。

1 基于语法子集的教学内容优化

目前大多数学校在教学内容方面注重语句、语法等语言细节,基本是以高级语言的语法体系为脉络展开教学,没有把逻辑与编程解题思路放在主体地位,对如何分析问题和解决问题讲得不够,对学生的编程能力、上机解题能力训练不够,以至于学生难以独立编写正确的程序,面对实际问题求解的编程显得束手无策。由于在语法教学内容上追求大而全,导致教师迫于完成教学任务进行“填鸭式”的“满堂灌”,忽略了学生的学习主体特征,不能很好地调动学生的主动性。学生创新能力的重要性已普遍共识,程序设计类课程对创新能力的培养主要体现在解决实际问题的独立编程能力上。只有重视算法和程序设计技能的教学,才能达到这一目的。对于语言的语法内容,够用即可,每种程序设计语言应选择其核心语法子集来教学。因此,首先要按照教学目标要求确定所要解决的各类基本问题,得到基本问题所构成的问题空间;然后确定问题空间求解涉及的基本算法范围。根据算法范围寻找核心教学语法子集。通过实验研究结合人工经验,分别得出实验语法子集和经验语法子集;再将两者结合起来,最终确立核心教学语法子集。

1.1实验语法子集的确立

实验语法子集的确立要通过客观实验完成,需要利用计算机信息处理技术,对主流教材、课件和其他材料中出现的程序设计语言关键字和语法点的频率进行统计分析;利用计算机对统计分析结果进行使用频度排序,获得各种语法点的实际应用频率的客观度量,然后以使用频度为依据确立实验语法子集。获得实验语法子集需要经历如下3类步骤。

1)实验分析。这个阶段要分析“程序设计基础”类课程的教学内容要点,确定问题空间,从而确定系列课程所涉及的算法大类;结合具体语种的特点,分析具体语言涉及的关键字。为便于采用计算机信息处理技术进行研究,可以只从关键字的角度研究基本语法要素构成的语法子集,不必考虑语法结构问题。

2)实验设计。包括以下几个子步骤:①原始数据数据采集。原始数据可以来源于目前国内外用于“程序设计基础”课程的典型教材、课件和其他资料。②数据处理,对符合基本算法范围的程序进行单词划分和标注,由实际材料中经典程序里面出现的单词组建词表文件。③数据统计,对数据处理阶段得到的词表文件进行统计;找出具体程序语言的关键字在所有实际材料中出现的总频数,得到语言关键字使用频数统计表。④数据分析,通过对语言关键字使用频数统计表进行分析,得出统计结果。

3)实验实施。该阶段按照实验设计的步骤进行具体操作,其中,在数据采集环节要利用典型教材的电子版,有些教材电子版文件格式可能是非文本的,需要转换为文本格式。转换中可能用到的转换软件,如Pdg2Pic软件可以将PDG文件转换为TXT的文本格式;汉王PdfConverter(免费版)能快速准确地将PDF文件转换成Word格式的rtf文件或txt文本文件。

1.2经验语法子集的确立

与实验语法子集相并行的是经验语法子集,它是靠人工经验确立的语法子集。获得经验语法子集的操作过程有3步,第一步,针对具体的程序设计语言设计一种语法点使用频度的问卷调查表。第二步,利用调查表向教学经验丰富的一线权威教师进行问卷调查,从而获得第一手原始资料。第三步,对获得的调查表进行统计分析,对各语法点的使用频度得出经验排序,根据排序结果选取经验语法子集。

1.3核心语法子集的确立

结合实验语法子集和经验语法子集,取两者的公共交集,即可得到核心语法子集。将核心语法子集作为教学语法子集,实现语法教学内容的优化。

2 基于认知理论的教学方法优化

2.1认知理论与教学设计原则

认知学习理论是通过研究人的认知过程来探索学习规律的学习理论。主要观点包括,人是学习的主体,主动学习;人类获取信息的过程是感知、注意、记忆、理解、问题解决的信息交换过程;人们对外界信息的感知、注意、理解是有选择性的以及学习的质量取决于效果。

布鲁纳的认知发现说和奥苏贝尔的认知同化说是现代认知学习理论的两大典型学说。布鲁纳强调指出学习过程是一种积极的认知过程,他认为学习的实质在于主动地形成认知结构;重视人的主动性和已有经验的作用,重视学习的内在动机与发展学生的思维,提倡知识的发现学习。认知同化说认为,新知识的学习必须以已有的认知结构为基础;学习新知识的过程,就是学习者积极主动地从自己已有的认知结构中,提取与新知识最有联系的旧知识,并且加以“固定”或者“归属”的一种动态过程。

根据认知学习理论关于学习的基本观点,与教学实践相结合,国内外研究者们提出了一系列指导教学设计的原则,这些原则有许多非常适合于程序设计基础类课程的教学。比如用直观的形式向学习者显示学科内容结构,应该让学习者了解教学内容中涉及的各类知识之间的相互关系;学习材料的呈示应适合于学习者认知发展水平,应按照由简到繁的原则来组织教学内容;学习以求理解,才能有助于知识的持久和可迁移;学习材料既要以归纳序列提供,又要以演绎序列提供;学习材料应体现辩证冲突,适当的矛盾有助于引发学习者的高水平思维。

2.2优化程序设计基础课教学方法的若干实例

1)挖掘新知识的生长点,促进知识正迁移。正迁移就是要把已有知识经验作为新知识的生长点,引导学生从原有的知识经验中生长新的知识。

以“两变量值交换”的教学为例,可以用“酒、水交换”这种已有知识经验作为其新知识的生长点,促使“酒、水交换”操作向“两变量值交换”操作正向迁移,学生就很容易将新知识纳入已有知识结构,牢固掌握“两变量值交换”的算法。

又如,关于“循环”概念的教学,可以用近义词“反复”做类比,用累加算法作例题,以学生熟悉的身边学习生活事例为算法素材。如学生每周的固定时间都要来教室听同一门课就是合适的循环例子,以反复听课增加知识量为算法素材。这种教学方法容易引起正向迁移的发生,加深对“循环”新概念的理解。

再如,很多抽象概念可以用学生熟悉的概念做比喻,引发正迁移。笔者在教学面向对象程序设计“消息多态性”概念时,常举这样的例子:当老师向不同学生宣布同一消息“今天停课”时,不同学生的反应不同,这就是消息的多态性。在教学面向对象程序设计“构造函数与析构函数”的功能时,常用“接生员与火化员”的作用作类比,使学生牢牢记住构造函数的功能是对刚创建的对象进行初始化;析构函数的功能是对使命完成后的对象进行清除。

2)突出新旧知识对比,避免负迁移发生。在学习过程中,如果对表面相似的新旧知识把握不足,反而使某种旧知识对新知识的学习产生严重干扰,这就是负迁移现象需要有效避免。

如学生对“=”号形成了根深蒂固的概念,一看到“=”号就想到两边相等;在C/C++语言中经常将应当用等号“==”的地方误用“=”号。于是,数学“=”号对程序设计语言中的赋值符号“=”形成正确概念带来干扰。因此,在教学中要突出传统数学符号“=”与程序设计语言运算符“=”的差异对比。

又如,传统数学的运算符求值顺序规则对C/C++中“右结合性”算符的求值顺序规则理解有干扰,对于容易引起负迁移的知识点要突出其对比。

3)由具体到一般的教学模式。程序设计语言中有的句式有非常复杂的完整形式,如果先写出其完整的理论形式,再举例说明,往往开始就会引起学生的厌倦情绪。相反,若先通过具体实例说明,然后再总结出一般性规律,对初学者来说更易于接受。如,VB语言中的InputBox函数的运用问题,由于该函数有多个参数,每个参数有不同的含义,控制对话框中出现不同内容。为使初学者易于理解,可先对参数逐个演示其运行效果,用具体的结果突出每个参数的作用,最后总结出该函数的一般语法格式。这一教学原则可以推广到许多复杂语法格式的教学方法中。

4)归纳与演绎的综合运用。以C/C++中的二维数组“行指针”及二级指针的教学为例,为了突出该类指针的“性质”以及“*”号对指针的作用结果,可先进行演绎教学:将该类指针变量加减一个整数,观察值的变化规律,得出性质(移动的地址以什么为单位?);再将“*”号作用到指针变量前,观察值的变化,发现仍然为地址,再加第二个“*”号上去,观察得到的值,发现新地址性质的不同。通过演绎再归纳,笔者将“行指针”称为“二维指针”,而将简单变量或数组元素的指针称为一维指针,归纳出如下结论:二维指针加减一个整数n移动n个“行”的距离,而一维指针加减一个整数n只移动n个“元素”的距离。“*”号作用于二维指针或二级指针前,得到的值仍然是指针值(地址),前者得到的指针值数量不变但性质降为一维;后者得到的指针值是一级指针变量的值(即普通变量的地址)。“*”号作用于一维指针或一级指针前,得到的值才是普通值(非地址)。

3 优质教学资源的建设

精炼优化的教学内容和适合的教学方法为提高程序设计课程的教学实效打下了良好的基础。通过优质建材建设和优质电子资源建设将内容和方法体现在教学资源方面。

一是编写基于优化核心语法子集的简明程序设计教材。在教材中要充分体现优化教学方法的思想,精选例题,善用类比,尽量发现可引起正迁移的知识点;要有效避免可引起负迁移的因素,对复杂知识点的处理要遵循从具体到抽象、从简单到复杂原则;要善于将归纳与演绎进行综合运用。

二是建立优质电子资源,包括精美课件、电子教案、网上练习题库,尤其是学生实验源程序代码的电子版很值得提供,为学生做验证性实验节省很多代码输入时间,学生可以将主要精力放在对程序理解、调试和修改方面,提高实验课的实际效果。

4 结语

通过上述理论和实践经验,望能对非计算机专业计算机程序设计基础类课程的教学改革起抛砖引玉作用,同时对计算机专业的程序设计基础课程起参考借鉴作用。为了今后继续提高程序设计基础类课程的教学实效,必须强调程序设计技能的培养,必须精简和优化语法内容,采用符合初学者认知水平的教学方法,配合优化的多元化教学资源。

上一篇:“微时代”校园微博对大学生思想道德的引导 下一篇:携手联想 共创未来