一、以高等数学统领算法语言课程
算法语言,顾名思义,被纳入对学生的计算机教育的范畴; 理所当然,由计算机专业的教师承担教学任务。但是我们必须突破这样的思维禁锢。我们认为,算法语言的核心在“算法”,而不在“语言”。一个实际问题,只要学生拥有将问题“模型化”的能力,又能够将模型算法化,采用什么语言将算法在计算机上实现出来反而不是个问题了。因此,我们必须树立以高等数学统领算法语言课程的新观念。高等数学( 以微积分、线性代数为主干课程) 是高职教育中的重要基础课程,不仅为学生学习后续的专业课程和解决实际问题提供必不可少的数学方法和数学知识,而且能够有效地锻炼学生的思维能力,起到“思维体操”的作用。
毋庸讳言,在目前高职教育受市场驱动的影响下,高等数学其实也受到学生针对算法语言课程同样的诘问“学了有什么用?”之所以有这样的疑问,还是在于高等数学课程与学生专业课程的脱节。无论是数学教师还是专业课教师都没有让学生认识到理工科各专业中的问题最终都可以归结到或模型化到高等数学课程中学习到的微分、积分、微分方程、矩阵这些纯数学理论和概念。华罗庚先生在《大哉数学之为用》中就举过一个化学中的例子,非常精彩。“某种物质中含有硫,用苯提取硫。苯吸取硫有一定的饱含量,在这个过程中,苯含硫越多越难再吸取硫,剩下的硫越少越难被苯吸取。
这个过程时刻都在变化,吸收过程速度在不断减慢着。实验本身便是这个过程的积分过程,它的数学表达形式就是微分方程式及其求解。”我们再举几个例子来说明专业概念的数学化: 静力学的核心就是物体的平衡方程。一个物体有 6 个平衡方程,构成一个 n =6 的线性方程组( 物理及工程等专业课程) ;化学方程式的配平,本质上是一个线性方程组的求解问题( 中学化学课程) ;稳态电路的核心是基尔霍夫方程,n 个节点就是 n 个方程联立的方程组。交流电路可以抽象化为复数方程 ( 物理及电子等专业课程) ; 牛顿第二定律 F( t) md2xdt2就是一个可降阶的 y( n)= f( x) 型的高阶微分方程( 理科各专业普通物理课程) ; 求解薛定谔方程以得到分子振动本征函数和振动本征值,可以归结为一个格点化空间的哈密顿矩阵的对角化问题( 物理或化学专业量子力学或结构化学课程) 。
数学在理工科各专业中熟练反复运用的例子不胜枚举。在高等数学课程中过多地讲授这些问题的数学解决显然是不可能的,这会冲淡数学课本身的主题。这些问题的讲授完全可以放到算法语言课程中去。虽然不同的专业遇到的问题千差万别,但是它们总是可以归结为各种数学问题( 解方程( 组) 的问题、数值求解微分方程的问题、矩阵运算的问题等等) 。以高等数学统领算法语言课程,可以让学生在“建模”和算法上得到充分的训练,既回答了学生“算法语言有什么用”、“高等数学有什么用”的问题,也让数学课程里繁复艰深的理论概念变成了真正“可以算的数学”。须知,“可以算”才是为高职类理工科非计算机专业开设算法语言课程的本来目的,而“可以算”这三个字对高职类学生尤为重要,这是对他们“高技能人才”的培养目标决定了的。高等数学统领算法语言课程,一方面促进了学生专业课程的学习,另一方面数学在专业课程中的反复运用,必然反过来促进学生对高等数学的学习兴趣。这是一个相得益彰的局面,而算法语言课程则在其中起到了纽带的作用。
二、Matlab 语言是高等数学统领的算法语言的最佳选择
算法语言课程,虽以“算法”为核心,最终却必须落到“语言”上来。如前所述,C 语言具有功能丰富、表达灵活等特点,但它的这些特点对学生而言往往也成为了它的难点。选择 C 语言作为算法语言课程的程序设计语言不利于学生对“模型”、“算法”的领悟,难以达到让学生“可以算”的目标。我们在认真调研了高职院校理工科各专业后,认为Matlab 语言是高等数学统领的算法语言课程的不二之选。科学界公认的最适合用于科学计算的语言是 Fortran 语言,它还拥有 IMSL、BLAS、LAPACK 等等大量的软件包供用户调用。
国际上大多数科学计算软件都是用 Fortran 语言编写的。Matlab 源自美国,20 世纪 90 年代中期以来,Matlab 已经成为科学界、工程界不可或缺的利器。笔者本人就用 Matlab 语言编制了一系列的程序用于计算分子波函数在势能面上的含时演化,计算分子在强激光场中的行为,设计化学反应相干控制的理论方案和模型。不可忽视的是,Matlab 作为教学语言,从 20 世纪 90 年代初以来,至今仍呈方兴未艾之势。
美国的高等数学教学可以说与 Mat-lab 越来越水乳交融。几乎所有的教材都配有大量的实例并采用 Matlab 语言实现。从时间而言,可以这样说,在对学生的科学计算方面的培养,我们落后了人家二十年。由此我们回想起钱学森先生在1989 年所说的那番话,不由得钦佩先生的远见卓识。遗憾的是,先生的那番话当时并没有引起教育界的重视。用高等数学统领高职院校理工科非计算机专业的算法语言课程,在课程中突出“算法”,有利于学生将数学与专业的实际问题相结合,极大地锻炼学生的建模能力。选择 Matlab 作为算法语言课程的首选语言,有利于将学生在课堂上学到的艰深的理论知识真正变成“可以算”的科学,必将极大地提高学生解决实际问题的能力和水平。