有关非计算机专业的高职高专算法语言课程的新研究

发布时间:2012-11-16 09:32:01 论文编辑:qian

一、高等职业技术教育开设算法语言课的现状与问题
 

目前我国高等职业技术教育中对理工科非计算机专业学生一般都开设一到两门算法语言课,选择讲授的语言以 C 语言为主,教材也大都选择谭浩强的《C 程序设计》。笔者自己也曾经为学生开设过 C 语言的课程。以笔者的亲身经历以及与其他高校同行的交流,我们发现,高职类院校非计算机专业学生的以 C 语言为主的算法语言课程存在着极大的问题。[2 ~4代写计算机职称论文]最首要的问题在于教学目的不明确。一般而言,对高职非计算机专业学生,只要求掌握基本语法和常用算法,具备基本的编程素养,以“必要、够用”为度,致力于让学生解决本专业的实际问题而避免陷入繁杂的语法中去。遗憾的是,这样的教学目的的表述本身就存在极大的问题。“必要、够用”的度如何把握? 什么样的基本语法和常用算法能够解决学生本专业的实际问题? 学生普遍感到头疼的“指针”概念是否应列入必须掌握的基本语法? 数据结构要不要讲? 面向不同专业的学生开设的算法语言课又如何能做到以不变应万变代写计算机硕士论文呢? 正因为教学目的本身就存在着这些矛盾或疑惑,教师往往将算法语言课程变成了纯粹为完成教学任务的“满堂灌”,反正将教材上的内容灌给学生就是了。而学生对 C 语言教学为主的算法语言课程普遍存在“不知道学了有什么用”的疑惑。学习目标的迷失,再加上 C 语言本身功能丰富、表达灵活等特点,学生就普遍反映“C 语言难学”。全国二级考试的通过率,高职类学生只有 10% 左右。可以这样说,目前高职类理工科非计算机专业的以C 语言为主的算法语言课程教学是不成功的。绝大部分学习过算法语言的学生,物理专业的不会用程序模拟“开普勒行星模型&rdquo代写计算机毕业论文;,电子专业的学生不会计算一个滤波器的系统函数。为什么不会? 首先,学生缺少把问题模型化( 建模) 的训练; 其次,模型建立之后,学生又缺少将模型算法化的训练。缺少了这两样训练,即使学生将 C 语言的语法掌握得再娴熟,又能解决多少“本专业的实际问题”呢? 在这个超市收银都离不开计算机的时代,还能有什么问题指望我们的学生去用手工计算呢?
 

二、以高等数学统领算法语言课程
 

算法语言,顾名思义,被纳入对学生的计算机教育的范畴; 理所当然,由计算机专业的教师承担教学任务。但是我们必须突破这样的思维禁锢。我们认为,算法语言的核心在“算法”,而不在“语言”。一个实际问题,只要计算机专业职称论文学生拥有将问题“模型化”的能力,又能够将模型算法化,采用什么语言将算法在计算机上实现出来反而不是个问题了。因此,我们必须树立以高等数学统领算法语言课程的新观念。高等数学( 以微积分、线性代数为主干课程) 是高职教育中的重要基础课程,不仅为学生学习后续的专业课程和解决实际问题提供必不可少的数学方法和数学知识,而且能够有效地锻炼学生的思维能力,起到“思维体操”的作用。毋庸讳言,在目前高职教育受市场驱动的影响下,高等数学其实也受到学生针对算法语言课程同样的诘问“学了有什么用?”之所以有这样的疑问,还是在于高等数学课程与学生专业课程的脱节。无论是数学教师还是专业课教师都没有让学生认识到理工科各专业中的问题最终都可以归结到或模型化到高等数学课程中学习到的微分、积分、微分方程、矩阵这些纯数学理论和概念。华罗庚先生在《大哉数学之为用》中就举过一个化学中的例子,非常精彩。“某种物质中含有硫,用苯提取硫。苯吸取硫有一定的饱含量,在这个过程中,苯含硫越多越难再吸取硫,剩下的硫越少越难被苯吸取。这个过程时刻都在变化,吸收过程速度在不断减慢着。实验本身便是这个过程的积分过程,它的数学表达形式就是微分方程式及其求解。”我们再举几个例子来说明专业概念的数学化: ( 1) 静力学的核心就是物体的平衡方程。一个物体有 6 个平衡方程,构成一个 n =6 的线性方程组( 物理及工程等专业课程) ; ( 2) 化学方程式的配平,本质上是一个线性方程组的求解问题( 中学化学课程) ; ( 3) 稳态电路的核心是基尔霍夫方程,n 个节点就是 n 个方程联立的方程组。交流电路可以抽象化为复数方程 ( 物理及电子等专业课程) ; ( 4) 牛顿第二定律 F( t) md2xdt2就是一个可降阶的 y( n)= f( x) 型的高阶微分方程( 理科各专业普通物理课程) ; ( 5) 求解薛定谔方程以得到分子振动本征函数和振动本征值,可以归结为一个格点化空间的哈密顿矩阵的对角化问题( 物理或化学专业量子力学或结构化学课程) 。
 

数学在理工科各专业中熟练反复运用的例子不胜枚举。在高等数学课程中过多地讲授这些问题的数学解决显然是不可能的,这会冲淡数学课本身的主题。这些问题的讲授完全可以放到算法语言课程中去。虽然不同的专业遇到的问题千差万别,但是它们总是可以归结为各种数学问题( 解方程( 组) 的问题、数值求解微分方程的问题、矩阵运算的问题等等) 。以高等数学统领算法语言课程,可以让学生在“建模”和算法上得到充分的训练,既回答了学生“算法语言有什么用”、“高等数学有什么用”的问题,也让数学课程里繁复艰深的理论概念变成了真正“可以算的数学”。须知,“可以算”才是为高职类理工科非计算机专业开设算法语言课程的本来目的,而“可以算”这三个字对高职类学生尤为重要,这是对他们“高技能人才”的培养目标决定了的。高等数学统领算法语言课程,一方面促进了学生专业课程的学习,另一方面数学在专业课程中的反复运用,必然反过来促进学生对高等数学的学习兴趣。这是一个相得益彰的局面,而算法语言课程则在其中起到了纽带的作用。
 

三、Matlab 语言是高等数学统领的算法语言的最佳选择算
 

法语言课程,虽以“算法”为核心,最终却必须落到“语言”上来。如前所述,C 语言具有功能丰富、表达灵活等特点,但它的这些特点对学生而言往往也成为了它的难点。选择 C 语言作为算法语言课程的程序设计语言不利于学生对“模型”、“算法”的领悟,难以达到让学生“可以算”的目标。我们在认真调研了高职院校理工科各专业后,认为Matlab 语言是高等数学统领的算法语言课程的不二之选。科学界公认的最适合用于科学计算的语言是 Fortran 语言,它还拥有 IMSL、BLAS、LAPACK 等等大量的软件包供用户调用。国际上大多数科学计算软件都是用 Fortran 语言编写的。
 

Matlab 源自美国,20 世纪 90 年代中期以来,Matlab 已经成为科学界、工程界不可或缺的利器。笔者本人就用 Matlab 语言编制了一系列的程序用于计算分子波函数在势能面上的含时演化,计算分子在强激光场中的行为,设计化学反应相干控制的理论方案和模型。不可忽视的是,Matlab 作为教学语言,从 20 世纪 90 年代初以来,至今仍呈方兴未艾之势。1990 年,美国线性代数课程研究组 LACSG在美国国家科学基金会 NSF 的资助下,召集了一次数学和工科专家参加的会议,提出非数学专业线性代数课程改革的五点建议,简称 LACSG Recommen-dations。核心有两点: 一是减少课程的抽象性,增强应用性,二是强调教学中必须教学生使用软件学会计算。1992 年,LACSG 又主持进行了一个 ATLAST计划( Augment the Teaching of Linear Algebra throughthe use of Software Tools,用软件工具增强线性代数教学) 。[5]从此美国的高等数学教学可以说与 Mat-lab 越来越水乳交融。几乎所有的教材都配有大量的实例并采用 Matlab 语言实现。从时间而言,可以这样说,在对学生的科学计算方面的培养,我们落后了人家二十年。由此我们回想起钱学森先生在1989 年所说的那番话,不由得钦佩先生的远见卓识。遗憾的是,先生的那番话当时并没有引起教育界的重视。
 

用高等数学统领高职院校理工科非计算机专业的算法语言课程,在课程中突出“算法”,有利于学生将数学与专业的实际问题相结合,极大地锻炼学生的建模能力。选择 Matlab 作为算法语言课程的首选语言,有利于将学生在课堂上学到的艰深的理论知识真正变成“可以算”的科学,必将极大地提高学生解决实际问题的能力和水平。