高职院校计算机专业数学课程改革背景、探索、试行与不足
2017-05-30李娜
李娜
摘 要:鉴于新时代的高职学生的数学基础、学习习惯和学习效果,最经典的《高等数学》的授课,在很多声音中面临着配合各专业的改革。一项教学改革项目所研究出来的计算机专业数学课程改革的教材通过举例和对比阐述对课改进行比较细致的探讨,教材名称为《IT职业数学》,本教材出版于2013.4,到现在已经用了满三年,文章对教改试行过程中的收获与不足也进行了阐述。
关键词:计算机专业;数学;课程改革
中图分类号:G642 文献标志码:A 文章编号:2096-000X(2017)07-0120-04
Absract: Due to base of mathematics, learning habits, learning effects of the students in higher vocational school, the most classical course "higher mathematics" faces innovation relating to corresponding specialties. A new textbook produced from a curriculum revolution describes the details of the innovation.The textbook's name is "IT Professional Mathematics", which was published in 2013. It has been used for 3 years so far. In this article, the gains and the deficiencies are also described.
Keywords: ccomputer specialty; mathematics; curriculum revolution
2011年我院申请了厦门市的一个课程改革项目,本项目包括四个子项目,其中一项就是计算机专业数学课程的改革,由本人负责。本文将从计算机专业数学课程改革背景、探索、试行与不足,进行探讨。
一、计算机专业数学课程改革背景
我们是高职院校。考进来的学生基础普遍比较薄弱,无论是知识的掌握,还是学习习惯。经过调查,一方面,很多学生初中就开始听不懂数学,很多是从中专升学上来的,而他们学中专时,学的数学很少,从知识上,很难跟上或衔接上高等数学的知识。而另一方面,绝大多数学生的学习习惯不好,即没有积极主动学习的习惯,没有积极主动思考和探索的习惯,除了上课时“课堂上听课”外,其余时间几乎不再碰数学课本。以往我们数学课开《高等数学》和《工程数学》,由于学生基础薄弱,绝大多数时间学习效果不佳。再加上现今的电子产品遍地都是,每个学生至少一部功能、丰富上网速度快的智能手机,有的甚至每生两部这样的智能手机,有的还有IPAD、電脑等。由于自我约束力差,在课堂上很多学生总爱玩手机等电子产品。对电子产品非常着迷,反复劝说收效很有限。经过与兄弟院校进行交流,得知其他兄弟院校的学生情况差不多。借着本次课程改革,我们二级学院决定改掉原先的数学课程上课的内容,以够用为原则,将大专课程里面,直接与专业有关系,且直接服务于后继课程的那些数学知识才进行学习,旨在:在学生有限的学习接受能力、有限的学习耐心、有限的愿意花在学习的时间里,让想学习的那部分学生尽量多学一点直接能用得上的数学知识。
二、我们的探索
我们二级学院是信息工程学院,主要开设的专业有:软件技术,物联网技术、计算机应用技术,计算机网络技术,都要学习编程,包括C语言、C++、C#、java、asp.net.等等,再结合一项从2001年就开始跟踪的全球学编程人数排行版的调查,C语言一直排名第一,直到2012年开始,慢慢的会出现有时候java排名第一,有时候C语言再次跃居第一,两者不断地在第一和第二进行竞争。可见C语言是多么的重要,它不仅是其他各语言的基础,它的功能也非常强大,如果C语言基础够扎实,加上丰富的实践经验,可以用C语言编写操作系统。再鉴于知识的可迁移性,我们决定编写一本直接服务于编程或者更确切地说是直接服务于C语言的数学课程,最终我们给它起名为《IT职业数学》。
《IT职业数学》具体编写内容的探索:
C语言里面有常量、变量、函数、数组、指针、指针的指针、函数调用等,将与这些相关的数学知识统一编写出来,并把具体的数学知识用在C语言的哪些知识上、怎么用?都进行详细的阐述。
1. 常量、变量与函数
我们的上课思路都是先学习数学,再运用到编程。
数学方面要复习一下常量、变量和函数的相关知识,之后再引入编程的常量、变量和函数的相关知识,在结构上,要分析清楚,数学函数从函数名、变量、参量、表达式、值的计算等在编程方面分别对应着哪些?数学的常量、变量与函数的概念对大学生而言,已经很熟悉了,再通过教师的点拨,相信可以很好地理解数学的常量、变量与函数在编程方面的运用。
在《IT职业数学》这门课,重点不是学习编程,要学会的其中之一是:分析出问题需要几个变量?变量的类型是什么?函数体中,执行语句是什么?也就是侧重分析或者编程里面称为算法。请看下面的例子。
例1编程求解下列问题:
(1)求5和7的和、差、积、商、求余运算。
(2)求5.0和7的商。
分析:第一个小问题,涉及到两个量的加法,发现两者都是整数,所以至少需要定义两个整形变量并且分别赋初值5和7,即“int a=5,b=7;”它们的和、差、积、商、求余运算的运算结果需要预先定义变量来存放,且运算结果都是整数,所以,一开始也需要定义int c,d,e,f,g;还要考虑执行语句:c=a+b; d=a-b; e=a*b;f=a/b;g=a%b;
而第二小题,显然要考虑到小数,就是定义时,有涉及到小数的变量,要定义为浮点型float。
2. 矩阵与数组
数学的矩阵有一维的,也有二维的,矩阵是一个表,要帮助学生掌握矩阵的下标的含义。编程中的数组实际上就是矩阵的运用。编程中一样有一维的数组,也有二维的数组,要帮助学生明白数组的下标与矩阵的下标的差别,数组中的元素是是怎么存储的?怎么读取的?
另外,数组都是按行存储和按行读取。
例2
#include
main()
{
int a[5]={5,4,3,2,1};
ints,p,q;
s=a[2]+a[4];
p= a[2]/a[4];
q= a[2]%a[4];
printf(“%d, %d, %d\n”,s,p,q);
}
程序中,a[2]指的是3,a[4]指的是1.
3. 映射与指针
请先看映射的定义:
定义4.1 设A、B是两个非空集合,如果存在一个法则f,使得对A中的每个元素a,按法则f,在B中有唯一确定的元素b与之对应,则称f为从A到B的映射,记作f:A→B。
其中,b称为元素a在映射f下的象,记作:b=f(a);a称为b关于映射f的原象。集合A中所有元素的像的集合记作f(A)。
可见映射是集合A到集合B之间的对应。
再看指针的概念:
计算机的内存是由一个个的存储单元组成的,为了方便信息的查找,每个存储单元均对应一个唯一的编号,称为该存储单元的地址。存储在存储单元内的值就是该存储单元对应的存储内容,存储内容与存储地址完全不同。不同类型的变量,所占的连续存储单元数目可能不相等。
由于通过地址可以找到所需的变量的存储单元,也就是说,地址“指向”该变量所对应的存储单元,因此在C语言中,将地址形象地称为“指针”。如图1所示,根据地址值2000就能找到变量c的存储单元,从而读取其中的值。
指针就是内存单元的地址,一个变量的地址称为该变量的指针。如果变量占用多个存储单元,则变量的指针指向这些连续存储单元的首地址。
指针变量定义的一般形式:
类型*指针变量名:
综上所述,指针变量存放的是地址,它与它所指向的变量的实际内容相对应。比如16软件1班的主教室是C301,这个C301就是地址,而这个地址对应着16软件1班的全体学生。所以我们说指针是地址与量的对应。因此,在输出语句里面,“*p”指的是要输出指针变量p所对应的量。如:
例3
#include
例7:
#include
float min(float p,float q)
{
if(p>q) return q;
else return p;
}
void main()
{
floatk,m,n;
scanf(“%f,%f”,&m,&n);
k=min(m,n);
printf(“则最小值是:k=%f\n”,k);
}
C语言的编程必须从主函数main开始执行,这个功能跟数学里面的复合函数从外层函数开始运算是一样的道理。Main函数的第一个语句先定义了三个浮点型变量;第二个语句是输入其中两个变量m和n;第三个语句遇到被调函数或称为子函数min(m,n),这时需要转去执行被调函数,再把运算结果返回主函数并赋值给k;最后一个语句是输出k的值。整个程序的运行思想就跟复合函数是一样的。所以说把复合函数的思想学明白了,对学习和理解编程有着非常大的意义。
6. 符号化
有了以上的一些基础知识和基本技能,我们还需要学会将现实生活中的命题进行数学符号化,再用前面学过的基础知识和基本技能转化为编程语言。
而要将现实生活中的命题进行数学符号化,就必须要学习数理逻辑。我们需要学习命题概念、需要学习命题的表示、命题联结词、用命题的联结词表示复合命题、命题的指派、真值表、谓词、谓词的演算,以这些为基础,用这些知识把实际问题符号化;接着还需要学习C语言里面的:关系运算符与关系表达式、逻辑运算符与逻辑表达式、学习C语言里面的编程结构,并最终把符号化的数学问题用编程来求解。请看下列:
例8编程:输入两个任意的整数,将它们按从小到大的顺序输出。并写出编程的思路。
#include