前言:我们精心挑选了数篇优质计算机程序设计论文文章,供您阅读参考。期待这些文章能为您带来启发,助您在写作的道路上更上一层楼。
1计算思维的概述
何谓计算思维,即借助于计算机科学基础概念来分析问题、解决问题、系统设计以及理解人类的一种行为。如下图灵奖得主ButlerLampson的报告,这种思维为人自身一种根本且概念化思维方式,是一种思想而非人造物,为数学与工程思维相互融合和互补所形成的一种思想。计算思维自身为抽象与自动化,这种抽象是借助于嵌入、简化、递归以及转换等方式,把某一个较为复杂的问题转变成多个简单的子问题,并实施求解的一个过程。而自动化则是指通过计算机自身所具运算能力的充分利用来分析、解决各种问题,以此来弥补人在计算方面所存在的各种缺陷和不足,这种自动化也在很大程度上使得计算机应用范围更为广泛。基于上述这些内容可知,计算思维其实就是一种人机共存、形式规整以及解答问题的思维。
2基于计算思维培养的C程序设计验教学
2.1教学目标的明确
众所周知,实施教育的主要目标就在于学生综合能力以及素质的培养。目前我国教育部门在计算机教学目标上予以了明确的规定,即计算机基础教学能力培养的目标应包含四个方面的内容,即计算机认知能力、计算机应用能力、网络学习能力以及借助于计算机的一种共处能力,在这些目标中,前两个目标所反映出来的内容及就为计算环境以及问题求解。在计算机这门学科中,C程序的设计就是计算思维中的语言机问题求解。对此,在C程序设计教学过程中,计算思维这一能力不仅仅为其核心能力,同时也是教学中的核心内容。鉴于上述内容,在本次C程序设计实验教学上,教学目标主要为计算机思维的培养,教学主要内容为程序设计方式的讲解,通过上机实践的强化,使学生能够借助于这种实践感受,以及计算问题求解基本方式与思维模式的领悟,为学生创新能力的培养以及综合素质的提高打好基础。下图为C程序的设计的教学模块。
2.2教学内容的设计
在计算机这门学科中,C程序设计这一课程属于理论和实践并重的一门课程,要求教师在教学过程中,必须要把理论教学和实践教学有机结合,从而使理论教学和实践教学能够互相推动。在教学过程中,由于学生对于所学内容缺乏一定的感性认识,对此,教师在实施教学,应综合考虑学生自身的学习情况,结合所要学习的内容,对C程序实验教学内容进行合理且科学地设计,把学生能力的培养、知识的传授以及技能的训练等融为一体,使学生能够在做的过程学到知识,在学习过程中获得相应的操作技能,继而使其能够将自身所学到的内容与知识有效地应用至实践中,并解决在实践中所遇到的各种问题。为达到理论够用实践突出这一目的,在本次C程序设计教学中,把所有的知识点归纳并总结为了九个核心点,根据所学内容的难易程度,把教学过程细化成为三个模块,即基础能力、中级应用以及高级应用,基于由浅入深这一原则,循序渐进地实施教学,把C程序实验教学分为了三个方面的实验,即验证实验、综合实验以及设计型实验,通过这种方式,使学生能够在记忆中来理解所学知识,并在理解中学会怎样应用这些知识,最后使学生在实践应用过程中学会创新。第一,通过验证型实验的实施,使学生能够熟悉该语言的设计环境。学生实施编程以及应用编程的一个基础就是基础能力模块知识,在该模块中,教师必须要求学生学会记忆以及理解,把该模块实验教学内容设置成为验证型的实验,让学生对于C程序设计环境以及步骤有一个基本的认识,使在学生熟悉这一环境后,了解该程序的书写格式、特点以及结构,了解并掌握该程序数据的基本类型、表达式以及运算符等,继而进一步使学生掌握C程序数据的输入以及输出,明白C程序所具备的三种结构,使学生通过验证型实验,可独立解决编程方面存在的各种问题。在实施验证型实验教学时,应要求学生应按照教师解决问题的方式来完成相应的实验内容,这种模拟的方式就是计算思维的模仿,在这一环节中,所强调的是科学内容活动的演示以及证明,注重是学生实验操作、观察、数据处理以及计算等个性化智力技能的培养,在教学过程中,学生借助于验证标准的这一已知程序来理解并学习基础模块中的内容,在理解和学习的过程中,学生可直观且清楚地看到在实际实验程序中各知识点的具体应用,能够更为快速地熟悉这种环境,继而更为地理解以及记忆C程序设计的基本知识。此外,在学生实施验证型实验之前,教师应实适时引导学生对以往所学C程序知识进行回顾,并在基础上对实验步骤实施讨论,提出相关的注意事项,针对学生在实验中容易出错的这些操作方,教师应该事先进行示范,以免在实验中学生出现一些不必要的错误。第二,通过设计型实验的实施,强化学生计算思维能力的培养。所谓设计型实验,就是指不同计算思维方式的综合应用来分析并解决各种问题。设计型实验是基于学生自身已掌握相应的实验方法与技能,通过所学知识的应用,自行提出相应的问题,并在此基础上分析和解决问题,经过算法的分析、程序运行结果的分析处理以及实验结果等,获得正确且规范的研究分析理论。在这一环节中,所注重的是学生团结协作、勇于探索以及的严谨求实精神的培养,在实施设计型实验教学时,教师应事先对程序进行填空、设计以及改错,并提出相关的思考问题,积极引导学生来讨论与分析,鼓励学生提出不同解决方案。第三,通过综合型实验的实施,强化学生创新以及应用意识的培养。在C程序设计实验教学中,为培养学生创新精神以及探索精神,使其计算思维得到扩展与升华,可结合学生自身的学习进度,基于所学内容的难易程度,定期设计一个相应的综合型实验程序题目,鼓励学生在课外课余时间来编程,同时在规定的时间内把所自己的所编程的这一源程序上传至电脑,由教师来进行批阅,对于参与这一活动的学生,教师应该实施相应的鼓励,这样不仅能够进一步激发学生学习的兴趣,同时还可提供学生的实践操作能力,使学生今后能够更好地适应社会市场,在潜移默化中使学生应用创新能力以及计算思维得到培养。总之选择了一些趣味性强、有吸引力的例子和话题以提高学生的学习兴趣,选择一些实用性强的例子和话题,以努力提高高校学生的工程实践能力。精选的“不断提升”的引导性例题、习题和实验题,以及贯穿全书的综合实例,起到了开拓思路、引导读者探究问题求解方法、激发读者程序设计兴趣的目的。
2.3基于计算思维能力培养的C程序设计实验教学
第一,上机操作实验流程的规范。在教学之前,教师应该要求学生对所学内容进行预习,通过题目的分析,明确实验教学中所需的数据结构,对参与运算的这些变量进行赋值,接着应用三种结构来解决问题,将结果输出,进行N-S流程图的绘制,基于该图编写相应的源程序,最后准备好测试程序所需的数据以及预期结果,进行上级调试工作,并归纳总结。通过实验流程的规范,不仅便于学生良好学习习惯以及思维习惯的培养,同时还可提升学生分析与解决各种问题的能力。
第二,加强上机操作过程中的指导与引导。在学生实际上机操作时,教师可借助于提问的方式来引导学生将自身所存在的问题找出来。在程序调试、上机输入以及编辑时,除了系统所引发的问题外,通常情况下,其他问题均由学生自己来独立解决。此外,在教学过程中,教师还还应鼓励学生采用不同的算法,正确引导学生反思这些算法,继而培养学生的计算思维能力。现以“打印水仙花树”以案例说明。
第三,加强实验过程的反思,采取合理且科学的考核评价制度,使学生的计算思维能够得到扩展。在上机完成以后,教师应要求学生对于本次实验实施反思、总结以及归纳,可采取小组的方式来交流和沟通,集思广益,使学生在交流和反思的过程中,拓展其计算思维。此外,还应采取相应的考核评价措施,可采取机考与笔试,结合学生平时学习表现情况,合理且科学地评价,对于学生所获得的成功,不管大小,均应予以相应的肯定,以此激发学生学习的积极性。下面以“打印水仙花数”为例,简要说明基于计算思维的案例设计的基本方法。“打印水仙花数”案例设计步骤(图3)打印水仙花数”案例的具体设计与实施(图4)
3结束语
西安理工大学工科非计算机专业和计算机专业虽然都开设C语言程序设计课程,但是前者具有鲜明的专业特点,对该课程的要求明显不同,仅仅按照“面向对象教学”的原则,适当调整教学组织活动和教学内容对于后者是远远不够的。针对目前工科非计算机专业C语言程序设计课程教学实践中所暴露的主要问题,笔者积极开展了非计算机专业C语言程序设计课程教学设计的教改工作。
1.1教学设计概述
所谓教学设计,就是为了达到一定的教学目的,对教什么(课程、教学内容等)和怎么教(组织、方法、媒体的使用等)进行设计。教学设计不等同于传统的备课写教案。教学设计有利于教学工作的科学化,使教学活动纳入科学的轨道。教学设计的意义就在于追求教学效果的最优化,不仅关心教师如何教,更关心学生如何学,注重将人类对教与学的研究结果和理论综合应用于教学实践。教学设计主要包括确定教学目标、组织教学内容、分析教学对象、选择教学形式和方法及教学媒体、设计教学过程、教学质量评价设计等基本环节,其中,设计教学过程是课程教学设计的核心。
1.2该课程教学设计的内容
西安理工大学C语言程序设计课程组于2003年出版了《C语言程序设计教程》及配套的《C语言程序设计教程上机实验与学习指导》特色教材。自2011年开始,非计算机专业选用的教材与计算机专业不同。目前非计算机专业选用《C语言程序设计》(第1版,张毅坤教授,高等教育出版社,2011)作为该课程的教材。非计算机专业C语言程序设计的教学设计是一项复杂的系统工程,主要包括课程教学设计、章节教学设计、课堂教学设计和实验教学设计,以西安理工大学C语言程序设计课程教学大纲为指导,以《C语言程序设计》(第1版)及其配套教材为基础,确定课程教学设计的内容:①将该课程的教学目标确定为“掌握C语言的基本语法和语义,理解结构化程序设计的思想和方法,提高学生的编程能力和调试程序的能力”。②组织教学内容的关键是进行教材的组织呈现,理论教学内容包括《C语言程序设计》(第1版)的第一章至第八章,实验教学体现于该教材的第九章及配套教材。③学生作为教学对象始终是教学过程中的重要角色,工科非计算机专业的种类多,分析教学对象就是掌握学生特点与了解专业背景并重。④重点突出课堂教学设计,传统教学与案例教学有机结合,“讲解+多媒体演示+课堂板书”缺一不可。⑤设计教学过程与“组织教学内容”联系最为紧密,主要包括课堂教学设计和实验教学设计,教学过程设计遵循的总原则是:激发学生兴趣,注重能力培养,合理安排教学顺序,讲清重点与化解难点紧密结合,课堂提高与课后巩固拓展有机统一,并预测教学实践中可能出现的意外情况。⑥将学生评价、同行评价、教学督导组专家评价、主管教学的领导评价和教师自我评价这几种评价的结果综合起来,比较客观的评价教学效果与教学质量。
2教学设计的实践及效果
我们连续多年承担非计算机专业C语言程序设计课程,先后承担过西安理工大学电气工程及其自动化(电力)、水文与水资源工程、印刷工程、包装工程和材料科学与工程等专业的C语言程序设计的理论教学和实验教学任务。始终将上述教学设计的内容贯穿于课堂教学和实验教学之中。C语言程序设计本身是一门实践性很强的课程,加之各个理工科专业的特色鲜明,所以结合学生所学专业特点与需求,同一门课程,针对不同专业的学生,适当调整教学设计内容,并在教学实践中检验教学效果。2012年以来,学生对笔者的教学评分一直在95分以上,也给予了肯定性的评价,例如“采用启发式教学,阐述问题深入浅出,重点突出,能理论联系实际或联系学科发展的新成果”;“对于您的授课方式我们很满意,感谢您对这门课程的热忱,我们会努力学下去”;等等。
3结语
关键词遗传算法;TSP;交叉算子
1引言
遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。总的说来,遗传算法是按不依赖于问题本身的方式去求解问题。它的目标是搜索这个多维、高度非线性空间以找到具有最优适应值(即最小费用的)的点[1]。
基本遗传算法是一个迭代过程,它模仿生物在自然环境中的遗传和进化机理,反复将选择算子、交叉算子和变异算子作用于种群,最终可得到问题的最优解和近似最优解。
2遗传算法程序设计改进比较
2.1基本遗传算法对TSP问题解的影响
本文研究的遗传算法及改进算法的实现是以C++语言为基础,在Windows2000的版本上运行,其实现程序是在MicrosoftVisualStadio6.0上编写及运行调试的。
1)遗传算法的执行代码
m_Tsp.Initpop();//种群的初始化
for(inti=0;i<m_Tsp.ReturnPop();i++)
m_Tsp.calculatefitness(i);//计算各个个体的适应值
m_Tsp.statistics();//统计最优个体
while(entropy>decen||variance>decvar)//m_Tsp.m_gen<100)
{
//将新种群更迭为旧种群,并进行遗传操作
m_Tsp.alternate();//将新种群付给旧种群
m_Tsp.generation();//对旧种群进行遗传操作,产生新种群
m_Tsp.m_gen++;
m_Tsp.statistics();//对新产生的种群进行统计
}
2)简单的遗传算法与分支定界法对TSP问题求解结果的对比
遗传算法在解决NPC问题的领域内具有寻找最优解的能力。但随着城市个数的增加,已没有精确解,无法确定遗传算法求解的精度有多高。一般情况下,当迭代代数增大时,解的精度可能高,但是时间开销也会增大。因此可以通过改进遗传算法来提高搜索能力,提高解的精度。
2.2初始化时的启发信息对TSP问题解的影响
1)初始化启发信息
在上述实验算法的基础上,对每一个初始化的个体的每五个相邻城市用分支界定法寻找最优子路径,然后执行遗传算法。
2)遗传算法与含有启发信息的遗传算法求解结果的对比
当城市数增至20个时,用分支定界法已经不可能在可以接受的时间内得到精确的解了,只能通过近似算法获得其可接受的解。试验设计中算法的截止条件:固定迭代1000代。表2中的平均最优解为经过多次试验(10次以上)得到的最优解的平均值,最优解的出现时间为最优解出现的平均时间,交叉操作次数为最优解出现时交叉次数的平均值。
表220个城市的TSP问题求解结果数据
算法交叉操作
次数最优解
出现时间平均
最优解
简单遗传算法80244.479.4s1641.8
含初始化启发信息的GA79000.237.4s1398.9
从表2中可以看出,当初始种群时引入启发信息将提高遗传算法的寻优能力。同时缩短了遗传算法的寻优时间和问题的求解精度。
2.3交叉算子对TSP问题解的影响
1)循环贪心交叉算子的核心代码
for(i=1;i<m_Chrom;i++)
{
flag=0;
city=m_newpop[first].chrom[i-1];//确定当前城市
j=0;
while(flag==0&&j<4)
{
sign=adjcity[city][j];//adjcity数组的数据为当前城市按顺序排列的邻接城市
flag=judge(first,i,sign);//判断此邻接城市是否已经存在待形成的个体中
j++;
}
if(flag==0)//如果所有邻接城市皆在待扩展的个体中
{
while(flag==0)
{
sign=(int)rand()/(RAND_MAX/(m_Chrom-1));//随机选择一城市
flag=judge(first,i,sign);
}
}
if(flag==1)
m_newpop[first].chrom[i]=sign;
}
2)问题描述与结果比较
下面笔者用经典的测试遗传算法效率的OliverTSP问题来测试循环贪心交叉算子的解的精度和解效率。OliverTSP问题的30个城市位置坐标如表3所示[2]。
从表4、图1中可以看到,贪心交叉算子大大提高了遗传算法的寻优能力,同时也降低了交叉操作次数。在多次试验中,贪心交叉算子找到的最优解与目前记载的最佳数据的误差率为2.7%。而部分匹配交叉算子找到的最优解与目前记载的最佳数据的误差率高达7%。从而可以得到交叉算子对于遗传算法
2.4并行遗传算法消息传递实现的核心代码
1)主程序代码
//接收各个从程序的最优个体
for(i=0;i<slave;i++)
{
MPI_Recv(Rchrom[i],chrom,MPI_UNSIGNED,MPI_ANY_SOURCE,gen,MPI_COMM_WORLD,&status);
}
//计算接收各个从程序的最优个体的回路距离
for(i=0;i<slave;i++)
{
fitness[i]=0.0;
for(intj=0;j<chrom-1;j++)
fitness[i]=fitness[i]+distance[Rchrom[i][j]][Rchrom[i][j+1]];
fitness[i]=fitness[i]+distance[Rchrom[i][0]][Rchrom[i][chrom-1]];
}
//找到最优的个体并把它记录到文件里
for(i=0;i<slave;i++)
{
if(1/fitness[i]>min)
{
sign=i;
min=1/fitness[i];
}
}
fwrite(&gen,sizeof(int),1,out);
for(i=0;i<chrom;i++)
fwrite(&Rchrom[sign][i],sizeof(unsigned),1,out);
fwrite(&fitness[sign],sizeof(double),1,out);
//每九代向从程序发送一个最优个体
if(gen%9==0)
MPI_Bcast(Rchrom[sign],chrom,MPI_UNSIGNED,0,MPI_COMM_WORLD);
2)从程序代码
//将上一代的最优个体传回主程序
MPI_Send(Rchrom1,chrom,MPI_UNSIGNED,0,gen,MPI_COMM_WORLD);
//每九代接收一个最优个体并将其加入种群中替换掉最差个体
if(gen%9==0)
{
PI_Bcast(Rchrom2,chrom,MPI_UNSIGNED,0,MPI_COMM_WORLD);
Tsp.IndiAlternate(Rchrom2);
}
//进行下一代的计算
Tsp.Aternate();
Tsp.Generation();
Tsp.Statistics();
3)并行遗传算法的性能
笔者在MPI并行环境下,用C++语言实现了一个解决TSP问题的粗粒度模型的并行遗传算法。该程序采用的是主从式的MPI程序设计,通过从硬盘的文件中读取数据来设置染色体长度、种群的规模、交叉概率和变异概率等参数。试验环境为曙光TC1700机,测试的对象是OliverTSP问题的30个城市的TSP问题。
正如在测试串行遗传算法所提到的数据结果,并行遗传算法也没有达到目前所记录的最好解,但是它提高了算法的收敛性,并行遗传算法的收敛趋势如图2所示[4]。
图2遗传算法的收敛过程
3结束语
本文通过对基本遗传算法的不断改进,证明了添加启发信息、改进遗传算子和利用遗传算法固有的并行性都可以提高遗传算法的收敛性,其中对遗传算法交叉算子的改进可以大大提高遗传算法的寻优能力。
参考文献
[1]刘勇、康立山,陈毓屏著.非数值并行算法-遗传算法.北京:科学出版社1995.1
[2]IMOliverDJSmithandJRCHolland,Astudyofpermutationcrossoveroperatorsonthetravelingsalesman[C]//ProblemofthesecondInternationalConferenceonGeneticAlgorithmsandTheirApplication,Erlbaum1897:224-230
[论文摘要]物理学与计算机科学关系密切、互相促进、共同发展,对我们今天的物理教学提出了更新更高的要求,物理学的教学内容可以结合计算机教学作一些思考和尝试,以适应新形势的要求。
一、物理学与计算机的密切关系
电子计算机是因解决物理问题的需要而产生的,二次大战期间为了快速计算弹道,被公认为世界第一台电子计算机ENIAC于1946年研制成功[1],万维网的出现是因欧洲核物理学家们进行学术交流的需要而设计出来的。由此可见,计算机与物理学的关系是非常密切的,物理学的发展促成了计算机的产生与发展,计算机的出现是二十世纪最伟大的科学技术成就之一,它延伸了人们的思维能力,成功地解决了很多物理、数学等方面的难题,没有计算机就不可能准确计算出火箭和卫星的轨道位置、就没有今天的航天成就,计算机应用跨越各个学科,在工业技术、企业管理、情报信息处理、国民教育等领域引起深刻的变革,在今天几乎没有哪一个学科能够离开计算机的应用。
作为孕育计算机诞生与发展的物理学,如果说早期物理学应用计算机主要解决人们的计算速度、强度的技术问题,那么到了今天,计算机已在更深刻的层次上促进物理学的发展,由于在物理学很多领域中能够找到精确解的理论问题已经不多了,剩下的是大量的复杂的非线性问题,对这些问题的分析、预测和求解离开计算机,人们几乎无能为力了。另外一个方面,在计算机出现之前,人们只能够通过真实的实验来验证物理理论的正确性、工程中也往往需要耗费巨额资金做实验来探测某些数据和验证方案的可行性。而今天很多实验可以通过计算机仿真实验来完成,达到与真实的实验完全相同的效果,成本低廉且安全环保,用计算机来进行科学实验是科学技术史上革命性的变化。
物理学与计算机科学互相促进、共同发展的情况对我们今天的物理教学提出了更新更高的要求,物理学的教学内容、教学手段和教学方法必须与时俱进,适应新形势的要求。
二、物理教学中结合计算机教学的一些思考
大学物理课内容很多,结合不同的专业,在保证教学大纲的基本要求的前提下,内容上作一些必要的取舍,针对计算机科学技术和应用等相关专业,教学内容上适应地向专业倾斜,使基础课更好地为专业课服务,明确基础课的服务目标,让学生明了物理课程对后续专业课程的重要性,提高学习的积极性和主动性,以取得良好的学习效果,具体做法以下几方面进行:
(一)精选典型物理问题用计算机编程求解
大学物理课程一般在大一的下学期和大二的上学期进行,而大多数专业的计算机程序设计课程也恰好在此阶段展开,这就为物理课与计算机程序设计课相结合创造了有利条件。根据物理教学的不同阶段,可以精选一些典型的物理问题用计算机编程进行数值求解。例如在力学部分讲抛物运动时,先按教材讲授忽略空气阻力时的运动方程,求出精确解,然后补上空气阻力二次项,方程就变成非线性的了,让学生体验含有空气阻力时实际问题求解的难度,再介绍计算机数值计算的方法与思路,给出编程示范,作为综合习题让学生完成程序设计与调试,并与计算机程序设计课教师协商,程序调试可利用计算机上机课时间完成,通过这种方式,理论联系实际,既培养锻炼了学生解决实际问题的能力,又提高了学生学习物理课和学习计算机程序设计课双方面的积极性。又例如在振动学章节用计算机演示单摆大角度强迫振动的混沌效应;在热力学章节用计算机模拟二维布朗粒子运动;在电磁学章节用计算机编程求解一般位置的电场和磁场分布情况,像载流圆形线圈,根据毕粤--萨伐尔定律和对称性,教材上只给出了求线圈轴线上点的磁感应强度,但对其它位置的磁场分布情况计算就很难了,因此可在课堂上简单介绍计算机积分法,要求学生在此基础上利用计算机完成求解圆形电流非轴线上点的磁场分布情况,巩固和加深对物理定律及其适用范围的理解与把握,学习和体会计算机编程的方法与技巧。 转贴于
通过精选少量典型物理习题利用计算机编程进行数值求解,以小论文或综合作业的形式布置练习,具体实施中充分征求计算机相关教师的意见并请求协助和参与实施,加强不同学科、不同课程之间的交流与协作,达到事半功倍的双赢的教学效果,充分体现大学物理课的基础地位与作用,体现计算机对物理学习和研究的重要性,知道这两门课程关系如此密切,学习的认真态度和积极性自然就得到了加强和提高。
(二)部分物理实验利用计算机仿真课件来进行
随着计算机仿真技术的迅速发展,大学物理的计算机仿真实验也得到普遍的关注与认同,成为大学物理实验的一个新的重要手段和工具,一些院校已开发出很多有特色的大学物理仿真课件,为我们在实验方面实施物理教学与计算机教学结合创造了另一个有利条件。可将全部物理实验内容分成三个部分:一部分按原计划实施,一部分实验由计算机仿真实验取代,还有一部分作为对比实验,既按真实实验进行,又做仿真实验进行对比。将仿真实验课件安装在机房和校园网上,方便学生操作。仿真实验虽然不可完全替代真实实验,但真实实验仪器因结构复杂精密、价格昂贵,不允许学生反复操作、随意拆装,以剖析仪器性能结构。仿真实验恰好在这方面能弥补真实实验仪器的不足,丰富了物理实验的手段与方法,拓广了学生的视角,也为以后计算机的应用开发掌握一些基本概念。
关键词: 计算机基础课程; 教学改革
中图分类号:G64 文献标识码:B
文章编号:1672-5913(2007)04-0022-04
1 我校计算机基础课程的教学现状
高校非计算机专业计算机基础教育的目的是培养学生的基本信息素养和信息能力,使学生能将计算机与信息技术用于其工作领域,成为既熟悉本专业知识又掌握计算机应用技术的复合性人才。在进入信息时代的今天,计算机基础教育对于提高21世纪大学生的素质和能力有着十分重要的作用。根据教育部高等学校计算机科学与技术教学指导委员会非计算机专业计算机基础课程教学指导分委员会的“关于进一步加强高等学校计算机基础教学的意见”和中国高等院校计算机基础教育改革课题组的研究成果“中国高等院校计算机基础教育课程体系2004 ”等文件精神,我们在2004年将目前面向全校所有专业开设“计算机文化基础”课程名称改为“大学计算机基础”,将各类程序设计语言课程统一定为“计算机程序设计基础”。教学中尝试采用了多样化、立体式的教学模式,逐步完善和充实了课程教学内容,在“大学计算机基础”课程中强化计算机文化、信息处理基础、计算机网络和多媒体技术等内容的教学;在“计算机程序设计基础”课程中强化程序设计思想,突出利用计算机分析问题的思路和解决问题的能力,两类课程的实践环节教学均得到较大的重视,除了正常的课内教学之外,均增加了等量的课外实践学时,与此同时加大网络课程建设的力度,进一步了解国内同类课程的设置,加强与国内同行间的交流,教学水平与教学质量力图与国内著名高校接轨。经过多年的努力、实践和积极探索,通过不断转变教学理念、更新教学内容、完善教学方法、改进教学手段,我校基本构建起比较完善的计算机基础课程的教学体系,形成了一定的特色。2006年4月经专家验收,“大学计算机应用基础”被评为校级精品课程。
2 我校的专业设置和学生入学条件
我校的专业设置和2005级以及以前学生入学条件如表1所示。
3 非计算机专业计算机课程设置方案
多年的教学实践使我们认识到大学生的计算机基础教育是一个循序渐进的教育过程,要着眼于学生信息素养和信息能力的培养,包括通识素养和能力与应用创新素养和能力。通识素养和能力是对所有大学生的基本要求,是指在接受高等教育之后,在信息技术方面应该具备的基本知识和能力。例如计算机的基本知识,信息表述能力、信息交流能力、信息搜索能力等。应用创新素养和能力是指学生能自主学习,具备较强的创新意识和开发能力,能灵活自如地把计算机技术用于专业研究领域。实践证明,许多在计算机技术领域有成就的人是非计算机专业毕业的学生。他们既具有本专业的知识,又掌握计算机技术,跨学科的人才知识面宽,富有创造精神。关键在于正确引导和培养。
在研究非计算机专业计算机课程设置和教学时应当充分围绕这两个层次素质与能力。为此我们提出“3+1+X”(3门通识课+1门限选课+X门任选课)的分层课程设置方案,开设8门核心课程 ,表2给出了8门核心课程名称以及学时设置。
其中,“大学计算机基础”、“计算机基本操作技能”和“计算机程序设计基础为”为全校通识课,课程主要涉及计算机基础性和适用性的概念、技术和应用,它在培养学生的计算机知识、能力和素质方面起到基础性、先导性的作用,我们学校已将它们纳入学校通识课范畴,并作为学校重点课程来管理和建设。
对于“计算机程序设计基础”课程考虑到学生的兴趣不同、计算机基础不同、专业需要不同,由学生所在院系在“C语言程序设计”、“Visual Basic语言程序设计”、“Visual Foxpro语言程序设计”和“多媒体基础应用”四门课程中任选一门作为计算机程序设计基础课程。
在三门通识课程学习完成之后,各专业可根据需要在“数据库技术及应用”、“计算机网络技术及应用”中选择一门作为专业限选课。
为了达到新形势下高校计算机基础教育的目的,学校在学分制下采用的是多模块、多层次的进阶式教育模式。由于学生的基础各异,学校还提倡学生根据自己的基础知识、兴趣爱好和实际应用需要选修一些计算机课程和计算机实用技能课程。为此,我们还设置了一系列信息类选修课程,供学生自主选择。学生自主选修课程设置表如表3所示。
4 非计算机专业计算机课程建设的进一步改革设想
4.1大学计算机应用基础课程网站的建设
网络课堂的教学模式为学生的自主学习和师生之程网络课堂内容。2006校级精品课程“大学计算机应用基础”的网络课堂目前包括“大学计算机基础”和“计算机程序设计基础(C语言)”两门课程。在使用中发挥了应有的作用。
(1)扩容大学计算机应用基础网络课堂,将建设包括8门核心课程的网络课堂,完备相应的教学计划、教学大纲和教材建设。
(2)完善网络作业平台,实现在网上向学生布置作业、网上辅导答疑、网上做作业、网上批改作业、网上测试、网上讨论等一系列网络教学活动,充分发挥校园网在日常教学以及教学管理中的功能。
4.2教学方法的改革
在教学中要继续坚持以教师为主导、学生为主体的教学理念,注重发挥学生在各个教学活动中的主体作用,注重采用多种教学形式培养学生解决问题的能力和综合素质。
(1) 集中课堂教学。
根据各门课程特点发挥集体的智慧和经验制作优质的电子教案和多媒体辅助教学课件,并充分利用多媒体设备和多媒体软件进行生动、形象、直观的教学,使得介绍理论概念时不生硬、不枯燥,实时演示实际操作时具有直观性和动态性并保持有趣性。
(2)分散自主学习。
为了培养学生的自学意识和能力,在教学中要继续有意识地引导学生自学,把课程中的部分有趣又相对简单的章节留作自修内容,以论文、小结、调查报告等形式检查学生的学习情况。
(3)实践中学习。
在实训教学中,强调基本操作方法的灵活运用,注重培养学生的实际操作能力和创新学习意识。为了有效地进行实训教学,首先要加强实践教学指导的力度,我们将聘请一些具备厚实计算机操作能力的学生和教师一起进行实训辅导,其次制定科学的、系统的、先进的实训基本要求和目标、提高要求和目标以及综合要求和目标,同时配套以实训教材、电子课件、实训案例和实训素材做到抛砖引玉的作用,以发挥学生的才智,达到锻炼学生应用所学知识分析问题和解决问题的综合能力。
(4)理论结合实训的教学。
部分理论知识由于课时的限制和学生的基础无法详尽地介绍,如“大学计算机所基础”课程中数据库基础、多媒体技术基础等部分内容。在教学中通过实际案例驱动教学,在较少的学时下使学生能通过实例既理解和掌握了繁多的基本概念,同时可调动学生学习的兴趣,引发其进一步学习的意识,以取得较好的教学效果。
(5)网络课堂。
网络学习模式本身就是一种潜意识的课程学习,学生在使用网络环境时会促使其学习的欲望,并能与教师之间建立新型的师生关系。
(6)课外科技活动平台。
配合学生自发成立的青岛理工大学计算机分会活动,定期为学生举行计算机前沿技术、常用热门软件操作等讲座;开设共同关心的问题论坛;引导学生走出校园到知名企事业单位参观、考察,真实感受社会、感受专业。
4.3实训教学改革
信息类课程的特点之一就是理论和实践并重,所以学生实际运用计算机的能力可以作为评价课程教学效果的尺度之一。我们在日常教学中非常重视实训教学,并不断地进行实训教学的改革尝试。
(1)根据实训教学要求,我们将按照知识点建立“基本实训+提高实训+综合型实训”的分级体系,分级考核和锻炼学生对知识点的综合应用能力。
(2)考虑到新生计算机操作能力参差不齐,对一些具备计算机操作能力的学生可以让他们优先获得学分,我们在每个学期将分三阶段进行过关测试,分别按照达到基本、提高和综合能力给出及格、良好和优秀成绩。
(3)在有限的实验课学时内,加强实验教学的管理和实验教学的资源,建立开放机房。
4.4高素质师资队伍建设
几年来我们已形成了一支队伍稳定、热爱基础教学、团结协作、勇于改革,富有创新精神的教师队伍,其中包括一名校级拔尖人才,两名校级青年骨干教师,一人获得宝钢奖。为了深化教学改革的力度,不断提高教学质量,师资队伍的建设也是一项长期不懈的工作。
(1)我们将一如既往地定期进行教学法研究和专题讲座。
(2)组织教师进修学习,不断更新知识。
(3)积极接受和培养青年教师,鼓励年青教师攻读硕士、博士学位,提高自身的学术素质。
(4)积极参加全国各地区的教学研讨会,向兄弟院校学习,取长补短。
5结束语
经过多年的努力和实践,在大学非计算机专业的计算机教育方面取得了一定的成绩,并得到了肯定,但是课程设置和建设是一个系统工程,涉及到方方面面的问题,比如学校定位、学生来源、专业特点、师资结构等。我们所做的工作和将要进行的改革无论是课程设置、课程内容更新,还是教学方法的改革等,目标都是明确的,那就是为了提高我校计算机基础教学的教学质量、教学效果,最终使学生受益。
参考文献:
[1]冯博琴.非计算机专业计算机基础教育“白皮书”与教学改革实践[A].大学计算机基础课程报告论坛论文集[C],2005.
[2]龚培增.大学计算机基础课程体系建设与教学改革实践[A].大学计算机基础课程报告论坛论文集[C],2005.
当前社会职业的多样化,学生就业的需求,高等教育中非计算机专业的计算机基础课程体系也应该有相应的改革,使得新的课程体系,可以提供给理科、工科、文科、艺术类等其他不同的专业进行计算机基础教育时更丰富的选择。使各个专业的毕业生将来在择业时在计算机教育上能够更贴近用人单位的要求。《非计算机专业计算机公共基础课的教学改革与实践》的主要的目标针对我校非计算机专业计算机公共基础课教学进行课程体系改革的研究与实践,与此相应的教学方法、教学内容、教学模式、实验教学、教材、计算机基础课程考核方法应同步改革。
二、我校的计算机基础教育新旧课程结构的比较
根据高等教育的发展,对我校非计算机专业的计算机基础教学提出了新的要求,相应的课程体系改革为:计算机基础分为大学计算机基础、计算机技术基础和计算机应用基础三个层次,为必修课或选修课。其中:理工类建议选择C语言程序设计、java语言程序设计等,文科类选择VB程序设计、web程序设计等;第四、五学期各专业可根据专业培养需要选择。同时为了使同学们能更好的掌握知识,将《C语言程序设计》《java语言程序设计》《VB程序设计》《web程序设计》《动漫设计》课程分为两个学期完成,称为《C语言程序设计(1)》《C语言程序设计(2)》,其他课程以此类推。
三、教改具体措施以及效果
(一)全程机房教学,增强动手能力
教学方法是为实现教学目标、完成教学任务所采取的措施。传统的三中心(教师、教材、课堂)教学方法既不适应社会发展的需求,也不符合计算机教育的特色,必须改革。我校的《大学计算机基础》由原来的课堂教学,改为全程机房教学,使同学们在边听教师讲解的同时,可以直接上机进行操作,在学习理论知识的同时,可以立刻得到对计算机操作的感性认识。通过三个学期的教改实践,完善了全程机房教学模式,对同学们使用计算机的动手能力有很大的提高。
(二)配套教学软件,提高学习能力
本课程组为《大学计算机基础》课程开发了一个《大学计算机基础辅导练习系统》,该系统分为抽题模块、答题模块、判卷模块,本系统为C/S结构,当管理员在服务器端设置好本次模拟练习的题型比例后,系统自动生成一套模拟试卷;所有的同学们可以在客户端进行答题,当答卷完毕时,由服务器端自动进行判卷并将本次练习的结果反馈给同学们;该系统可以提供给学习本课程的同学们经过教师的指导后,在课堂内外自行进行练习。以便同学们完成练习后,自己可以评判自身的学习程度,并在下一阶段的课内外学习中调整自己的学习状态。本系统已经提供给2005级大一学生进行了初步使用,体现了较好的作用。
(三)开发网络平台,整合教学资源
本课程组在调研了周边各高校的计算机基础教育的情况,开发了一个本校的《计算机基础教育中心教学平台》,在本教学平台上,提供了基础部课程的相关介绍,教学信息的,教学资料的下载等等功能,可以提供给任课教师所任课程重点难点详细介绍。对课堂教学起到了很好的补充作用,方便了同学们在课余时间继续学习计算机基础课程。在本课题的后续时间里,拟设计开发计算机基础教学课程的基于校园网教辅系统,使得同学们可以开展课余时间自由学习。该平台具有以下优点:①发挥以计算机为基础的现代多种媒体的作用,使教学信息组织超文本化。多媒体的超文本特性可实现教学信息最有效的组织与管理。②在培养高级认知能力的场合中,因特网和校园网是协作学习的主要形式,实现了协作式教学。③教学过程的生动性是多媒体计算机的强大魅力之所在。在教学中可以同样重视教与学这两个部分。强调学生的参与意识,教与学成为两个相辅相成的部分。调动学生学习的主动性,培养学生的“发现式”学习能力,使学生不仅学会,而且会学。④在短时间里要获得大量的信息与知识,这在传统的教学模式中是可望不可及的,而以多媒体网络作为传播信息的渠道,使教师与学生、学生与学生之间,可以同时传播大量的信息,大大提高教学效率。
(四)编制多媒体课件,增加课堂吸引力
根据我校计算机基础教学的实际情况,我们重新编制了《大学计算机基础》《计算机程序设计A》《计算机程序设计B》的电子课件,使之更符合我校的实际教学情况,更符合浙江省计算机等级考试的要求。其中《计算机程序设计A》课件获得中国计量学院首届多媒体课件竞赛二等奖。改编后的课件具有以下优点:界面清晰、美观,结构清晰,例题丰富、并附有书本外的课后习题。
(五)出版教辅材料,同步教学改革
根据高等教育中对计算机基础教学提出的新要求,和结合浙江省计算机等级考试的要求,本课题组编制了《C语言程序设计实验与习题指导》面向21世纪高等院校计算机系列规划教材,该教材由“科学出版社”出版,并于2005~2006学年第二学期开始投入我校、浙江工业大学等高校使用;根据我校学生应考浙江省计算机等级考试的需要,本课题组编制了《C语言辅导与讲义》、《VB程序设计辅导与讲义》,并与2005~2006学年第一学期开始投入使用,学生们反映良好。
(六)开发考试系统,改革测试手段
计算机基础课程是一门应用技术学科,主要凭试卷来检测大学生的学习效果,并不能完全反映出学生的实际能力。而且试题类型目前多是测试学生对所学知识是否了解,不是考核学生解决问题的能力,并没有挣脱应试教育的樊笼,严重影响了创新型人才的培养。现在这种考试方法,使得学生为了考试而学习,不能提高学生学习的积极性,不能发挥学生的创造力,这种考试方法与素质教育大相径庭。本课题组开发了《大学计算机基础上机考试系统》,本系统具有抽题功能、答题功能、判卷功能、存储功能、输出功能,对其中的实践部分从以前的“纸上谈兵”改为“上机实战”。其中的判卷功能、存储功能、输出功能也使得该课程实现无纸化考试,该考试系统于2004~2005学年第二学期开始投入使用。新的考核方法给了学生一个发挥才能的空间,变被动的死记硬背为灵活的实践操作,使学生成为知识的主人。
四、实际作用与效果
通过对非计算机专业计算机公共基础课的教学改革与实践,对提高教学质量,效果明显。我校非计算机专业学生在学习C语言和准备迎接浙江省计算机二级考试中,选择了我校自行编制的《C语言程序设计辅导与讲义》《VB程序设计辅导与讲义》,取得了较好的成绩。 在该完成该课题的过程中,陆慧娟老师等于2005年11月在“首届大学计算机基础课程报告论坛”发表了《多科性大学计算机基础教学课程体系的改革与实践》教改论文,该文以本校的计算机基础教学为背景,探讨了非计算机专业计算机基础教学课程体系的设置、教学方法的改进和师资队伍建设等问题。黄俊老师等于2005年11月在“首届大学计算机基础课程报告论坛”发表了《配对编程教学模式在程序设计课程教学中的探索与实践》教改论文,配对编程方法是两学生并排在一台计算机上工作,协同完成一个设计、代码编写和调试的新的程序设计学习方法,该文对配对编程教学模式在计算机基础课程教学的应用进行了探索与实践,提出了配对编程在程序设计基础教学过程中存在的问题和解决的办法。
【关键词】计算思维 Visual Basic 能力培养 教学研究
0 绪论
在信息时代的今天,掌握和应用好计算机知识无疑是当代大学生都必须具备的基本条件。因此,教育部要求所有文科专业学生也都要开设计算机基础课程,目的就在于要培养学生的计算思维能力。如今,很多高校把Visual Basic程序设计语言当作非计算机专业的首选编程语言,Visual Basic程序设计语言具有易学易用,可视化编程,面向对象编程思想等特点,特别适合非计算机专业学生作为入门编程语言学习。很多非计算机专业学生认为:Visual Basic程序设计语言不是自己的专业课,和自己专业又没有很大关系,因此,出现了厌学或者不学的态度。甚至有少数教师都没有给予计算机程序设计课程足够的重视,认为只要把专业课学好就可以了。老师和学生的这种态度极大的影响了Visual Basic的教学效果。计算思维概念的引入能够让人们更好地认识到非计算机专业学生学习计算机程序设计的重要性。
1 计算思维
计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解的涵盖计算机科学之广度的一系列思维活动。计算思维的本质是抽象和自动化。如同所有人都具备“读、写、算”(简称3R)能力一样,计算思维是必须具备的思维能力。为便于理解,在给出计算思维清晰定义的同时,周以真教授还对计算思维进行了更细致的阐述:计算思维是通过约简、嵌入、转化和仿真等方法,把一个困难的问题阐释为如何求解它的思维方法。
计算思维是一种根本技能,是每一个人为了在现代社会中发挥职能所必须掌握的。计算思维是人类求解问题的一条途径,但决非要使人类像计算机那样地思考。计算机枯燥且沉闷,人类聪颖且富有想象力。是人类赋予计算机激情,反过来,是计算机给了人类强大的计算能力,人类应该好好利用这种力量去解决各种需要大量计算的问题。计算思维是思想,不是人造品。计算机科学不只是将软硬件等人造物呈现给我们的生活,更重要的是计算的概念,它被人们用来求解问题、管理日常生活以及与他人进行交流和互动。计算机科学在本质上源自数学思维,它的形式化基础建筑于数学之上。计算机科学又从本质上源自工程思维,因为我们建造的是能够与现实世界互动的系统。
中国科学院计算技术研究所研究员徐志伟总工认为:计算思维是一种本质的、所有人都必须具备的思维方式,就像识字、做算术一样;在2050 年以前,让地球上每一个公民都应具备计算思维的能力。
2 计算思维教学现状
教育部高等学校计算机基础课程教学指导委员会颁布的《关于进一步加强高等学校计算机基础教学的意见》、《计算机基础课程教学基本要求》等有关文件虽然没有明确提出计算思维,但是贯穿了计算思维思想。《关于进一步加强高等学校计算机基础教学的意见》提出:计算机基础教学的目标是培养学生掌握一定的计算机基础知识、技术与方法,以及利用计算机解决本专业领域中问题的能力。大学计算机基础的课程目标是“使他们在各自的专业中能够有意识地借鉴、引入计算机科学中的一些理念、技术和方法利用计算机、认识并处理计算机应用中可能出现的问题”。简单地说,是使用计算机科学技术和方法处理问题,这是计算思维的目标。
“Visual Basic程序设计”是一门关于计算思维方法的课程,是典型的计算思维课程。它涉及大量的算法,像枚举、递归、回溯等都是毫无争议的典型的计算思维典型案例;面向过程和面向对象程序设计也都是计算思维。目前Visual Basic程序设计中关于计算思维培养的教学存在以下几个问题:
(1)基本上都是潜意识的培养,没有明确提出或者重视计算思维的培养;
(2)对计算思维的概念还没有彻底理解,计算思维的培养的重视程度不够;
(3)教学中注重技能和知识的培养,缺乏对编程思想的培养。
3 Visual Basic教学中计算思维的培养方法及实施
VB程序设计教学过程中要求学生结合经典算法、图形技术、生活趣味问题或专业问题设计应用程序。目标都是引导学生探究问题求解的思路和方法,提高计算机素质。VB程序设计基本包括语言基础、代码编写和算法设计,其中算法设计是计算思维培养的重点部分,但是由于这部分教学课时比较少,老师上课讲授完毕,学生只是理解了某种算法,而没能认真思考这个算法中的思想和方法论,没能上升到思想层面上。
(1)理论课程改革
理论课程讲授中,教师要有意识的,讲完某种算法的理论之后,要能够结合学生能够理解的案例,将算法与实际解决问题的方法和思想相结合。要注重体现计算思维和一般思维解决同一个问题的不同和优点。例如:在讲解某一个算法时,要注意算法的优化,以达到锻炼计算思维的目的。
(2)实验课改革
实验课程中要尊重每一位学生不同的认知方式,鼓励学生设计不同的算法去解决同一个问题。实验内容要把设计性实验的比重提升,并且尽量选取与本专业或生活贴近的问题作为实验内容,这样学生可以发挥主动性和积极性,有意识的锻炼了自己的思维能力。
(3)课程考核方式改革
改变以往的笔试考试方式,选用更加灵活多样的考核方式。比如:课程设计、综合实验+笔试、课程总结论文等多种考核方式。可以选取一个或几个与授课对象联系紧密的实际问题作为课程设计题目,在学期中间就布置下去,让学生们自由结组进行课程设计的制作,最后让学生们进行课程设计作品上交并且答辩,这样避免了以往学生只是在期末进行死记硬背,应付考试,而真正让学生能够有时间去总结本学期本门课到底学了什么,怎么用,能够真正的对学生以后的生活和工作有帮助,学有所用。
关键词:数理逻辑;命题逻辑;一阶逻辑;推理理论
离散数学是现代数学的重要分支,是研究离散量的结构及相互关系的学科,它在计算机理论研究及软、硬件开发的各个领域都有着广泛的应用。其内容大致包含数理逻辑、集合论、代数结构、组合数学、图论和初等数论6部分,这6部分从不同的角度出发,研究各种离散量之间数与形的关系。本文主要研究数理逻辑部分在计算机科学领域中的应用。
1.为计算机的可计算性研究提供依据
数理逻辑分为命题逻辑和一阶逻辑两部分,命题逻辑是一阶逻辑的特例。在研究某些推理问题时,一阶逻辑比命题逻辑更准确。数理逻辑中的可计算谓词和计算模型中的可计算函数是等价的,互相可以转化,计算可以用函数演算来表达,也可以用逻辑系统来表达。
某些自然语言的论证看上去很简单,直接就可以得出结论,但是通过数理逻辑中的两种符号化表达的结果却截然不同,让人们很难理解,这就为计算机的可计算性研究埋下伏笔。下面举一个简单例子加以说明。
例1 凡是偶数都能被2整除。6是偶数,所以6能被2整除。
可见,一个复杂的命题或者公式可以利用符号的形式来说明含义,来判断正确性,这使得计算机科学中的通过复杂文字验证的推理过程变得简单、明了了。
2.为计算机硬件系统的设计提供依据
数理逻辑部分在计算机硬件设计中的应用尤为突出,数字逻辑作为计算机科学的一个重要理论,在很大程度上起源于数理逻辑中的布尔运算。计算机的各种运算是通过数字逻辑技术实现的,而代数和布尔代数是数字逻辑的理论基础,布尔代数在形式演算方面虽然使用了代数的方法,但其内容的实质仍然是逻辑。范式正是基于布尔运算和真值表给出的一个典型公式。
下面以计算机科学中比较典型的开关电路的设计为实例说明数理逻辑中布尔代数和范式的应用。整个开关电路从功能上可以看做是一个开关,把电路接通的状态记为1(即结果为真),把电路断开的状态记为0(即结果为假),开关电路中的开关也要么处于接通状态,要么处于断开状态,这两种状态也可以用二值布尔代数来描述,对应的函数为布尔函数,也叫线路的布尔表达式。接通条件相同的线路称为等效线路,找等效线路的目的是化简线路,使线路中包含的节点尽可能地少。利用布尔代数可设计一些具有指定的节点线路,数学上既是按给定的真值表构造相应的布尔表达式,理论上涉及到的是范式理论,但形式上并不难构造。
例2 关于选派参赛选手,赵,钱,孙三人的意见分别是:赵:如果不选派甲,那么不选派乙。钱:如果不选派乙,那么选派甲; 孙:要么选甲,要么选乙。以下诸项中,同时满足赵,钱,孙三人意见的方案是什么?
解答:把赵,钱,孙三个人的意见看做三条不同的线路,对三条线路化简得到接通状态(既使公式结果为1)。
可见,这类选择问题应用数理逻辑来解决,不但思路清晰、运算结果准确,而且省时、省力。
3.为计算机程序设计语言提供主要思想
专家系统和知识工程的出现使人们认识到仅仅研究那些从真前提得出真结果的那种古典逻辑推理方法是不够的,因为人类生活在一个充满不确定信息的环境里,进行着有效的推理。因此,为了建立真正的智能系统,研究那些更接近人类思维方式的非单调推理、模糊推理等就变得越来越必要了,非经典逻辑应运而生。非经典逻辑一般指直觉逻辑、模糊逻辑、多值逻辑等。这些也可以用计算机程序设计语言来实现。计算机程序设计语言的理论基础是形式语言、自动机与形式语义学,数理逻辑的推理理论为二者提供了主要思想和方法,程序设计语言中的许多机制和方法,如子程序调用中的参数代换、赋值等都出自数理逻辑的方法。推理是人工智能研究的主要工作。逻辑的思想就是通过一些已知的前提推理出未知的结论。
例3 著名的n皇后问题是:是否可以将n(n为正整数)个皇后放在的棋盘上,使得每行每列都有且仅有一个皇后,并且每条对角线上如果有皇后且仅有一个。
通过上述几个实例的验证,会发现数理逻辑在计算机科学中的应用非常广泛,可以把计算机科学中表面上看似不相干的内容通过找出其内在的联系作为前提,利用数理逻辑中的推理理论得到结论。
参考文献:
关键词:ACM竞赛;计算机;应用型人才;培养模式
1.引言
近年来,随着科学技术的迅速发展和高等教育大众化的快速推进,计算机及相关专业毕业生就业形势严峻,就业难现象日益突出,而行业企业却难以找到所需的大量计算机人才。计算机专业人才培养与行业企业需求出现了错位,让我们反思现有计算机专业培养模式存在的问题。
2014年6月刀日,国务院颁布了《关于加快发展现代职业教育的决定》,指出采取试点推动、示范引领等方式,引导一批普通本科高等学校向应用技术类型高等学校D型。随后,湘南学院加入“中国应用技术大学联盟”。2014年11月,湘南学院成为湖南首批两所转型发展应用技术大学试点高校之一。计算机科学与技术专业作为地方本科高校应用性较强的专业之一,转型发展符合国家和学校的转型政策,培养面向行业企业需求的应用型人才刻不容缓。
本文通过我校参与ACM竞赛的历程,以赛促学,提高学生自主学习的积极性、团队协作能力和实践操作能力,培养适合行业企业需求的应用型人才。
2.地方本科高校计算机人才培养模式存在的问题
随着计算机与通信技术的快速发展,行业企业需要大量的计算机人才,但是地方本科高校计算机毕业生的就业率和就业质量却逐年降低。
第一,由于本科办学时间较短、财政投入偏少等原因,地方本科高校计算机专业实践训练场地有限,实验设备较为落后,受传统培养方式的影响,偏重理论教学,对实践操作重视程度不高,影响了学生创新实践能力的培养。
第二,地方本科高校的计算机人才培养方案更新较慢,计算机技术发展与应用又日新月异,新的知识与理论未能及时引入到计算机教学中来,出现了授课内容与计算机应用新技术脱节现象。
第三,计算机是应用性比较强的学科,由于专业课时有限,实践训练有待加强,实践教学模式陈旧,缺乏一种学生课外自主学习的激励机制。
第四,教师教育学生的方式仍停留在应试教育阶段,学生学习积极性不高,以致教师所讲授的知识学生未能很好地理解与掌握。
第五,传统的实验考核、作业批阅都由教师人工完成,受限于教师的知识水平和经验,缺乏严谨的数据进行测试,降低了实践与练习效果。
第六,计算机专业课程的考核还停留在纸质试卷上,学生只需通过死记硬背便能获得高分,但遇到实际问题却不能运用所学专业知识来动手解决,出现了高分低能现象。
3.ACM竞赛简介
ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,ACM/ICPC)是由国际计算机学会(Assoeiation for ComputingMachinery,简称ACM)的世界公认的规模最大、水平最高的国际计算机竞赛田,也是全球大学生计算机程序设计竞赛活动中最具影响力的赛事,被誉为计算机界的“奥林匹克”。ACM竞赛从1970年开始举办至今已40届,备受世界著名行业企业高度关注,ACM获奖者成为各大行业企业争抢对象。IBM公司是ACM国际大学生程序设计竞赛长期赞助者,亚洲(中国)区域赛则由国内著名公司华为、阿里巴巴等领衔冠名。ACM竞赛成绩成为百度、腾讯等著名行业企业招聘的重要参考条件。
ACM竞赛是各高校计算机人才培养成果的直接体现,有利于提高计算机及相关专业的教学水平。ACM竞赛旨在使大学生通过计算机来充分展示其分析问题和解决问题的能力。竞赛涵盖的内容很广,主要考查学生的逻辑思维能力、策略设计能力、团队协作能力和运用交叉学科知识解决问题的能力。ACM竞赛提倡创新和团队协作,鼓励学生在构建全新的软件程序时尽情发挥创意,帮助学生检验自己在强压力下的实践操作能力。
4.建立依托ACM竞赛的计算机应用型人才培养新模式
计算机应用型人才培养主要由专业教育、素质教育组成。专业教育分为专业教学、实践教学。素质教育包涵其它学科综合教育。依托ACM竞赛优势,将其融入计算机人才培养,可以弥补地方本科高校计算机应用型人才培养模式的不足。
1)ACM在线评测系统开发培养学生创新实践能力
湘南学院ACM在线评测系统设计与实现为湖南省大学生创新性实验计划项目,为学生学习C/C++语言程序设计、数据结构、算法分析与设计、Java等程序设计类课程提供一个学习、练习和交流的平台。学生在项目开发过程中,团队合作、协作分工,巩固了所学的理论知识,系统学习了软件开发理论,并将之贯穿于实践,激发了学生的创新思维和创新意识,促进了学生对科研项目兴趣,提高了学生软件开发水平和学术水平,充分锻炼了学生的创新实践能力、应用开发能力和科技论文写作能力,培养了学生的专业能力。项目实践让学生在提高专业能力的同时,获取了开发实际软件项目的成就感,有利于学生积累项目开发经验,培养学生自信心和价值感,提升学生适应培养行业企业需要的就业竞争力。
2)以赛促教,提高学生的专业教育和综合素质教育水平
培养计算机应用型人才,主要培养学生的动手实践能力。将ACM竞赛引入程序设计类课程日常教学中,可以改革传统实践教学模式和以笔试为主的课程考核体系,学生通过ACM在线评测系统进行实践训练,教师通过答题情况来反馈学生对讲授知识的掌握程度,采用ACM在线测评系统考核结束后的最终排名为主和平时成绩及实验成绩为辅进行课程评价。程序设计类课程作业和实验,随意性大,题意模糊,解答也模糊。而ACM在线评测系统要求非常严格,题意清晰,解答精确。ACM竞赛虽然要求程序运行结果与题意完全符合,但并不限制用何种算法去实现,学生可以尝试各种可以实现的算法,充分锻炼了学生的动手操作能力,提高了实践教学水平。通过实践来巩固理论教学,提高了学生的专业教学水平和质量。ACM竞赛涵盖计算机、数学、英语、心理学等学科,有利于学生的综合素质教育的培养。
3)以赛促学,建立四级竞赛学习机制
第一级是程序设计类课程的学习与练习。程序设计类课程任课教师在ACM在线评测系统布置作业和实验,根据做题情况的动态排名来确定学生的平时成绩和实验成绩,激发学生对程序设计类课程的兴趣,培养学生独立分析和解决问题的能力。第二级是每年五月定期举行湘南学院ACM程序设计竞赛,吸引计算机及相关专业的学生参与ACM竞赛,选拔优秀学生组建ACM集训队,利用晚上和周末进行系统学习与集训,通过ACM集训队员带动其他学生提高编程水平。第三级是积极参加每年湖南省教育厅举办的湖南省大学生计算机程序设计竞赛。让学生走出去同全省各高校学生进行竞争,大力宣传所获成果,吸引更多学生参与。第四级是积极参与行业企业组织的程序设计比赛。一些著名行业企业通过举办竞赛来选拔人才,如Google公司举办的Google Code Jam程序O计竞赛、百度公司举办的百度之星程序设计大赛、计蒜客在线教育举办的计蒜之道程序设计大赛等。学生通过参与竞赛,可以更加了解企业的需求和自己的不足之处,激发学习动力,尽快弥补短板,提高就业能力。
4)建立ACM竞赛与人才培养共赢机制
为了充分调动学生、教师的积极性,克服各种困难,取得理想成绩,应建立ACM竞赛与人才培养共赢机制,既可以为ACM竞赛提供源源不断的动力,又能为培养应用型创新人才可持续发展提供保障。具体的举措建议如下:建立ACM在线评测系统,为学生提供学习、训练和交流的平台;成立校ACM协会,通过协会来推动学生的参与,培养学习兴趣;培养学生梯队,实行老队员带新队员,形成互相学习、竞相赶超的学习氛围;完善ACM竞赛激励机制,对获奖的学生按获奖级别及时给予现金奖励和学分减免,对指导教师给予工作量补助和现金奖励、职位晋升、评优评先和职称评定时给予政策倾斜用,对组织参赛的二级学院给予肯定和奖励。
5.依托ACM竞赛,培养应用型人才
依托ACM竞赛建立的应用型人才培养新模式,主要从以下几个方面来培养应用型人才。
1)更新人才培养观念
地方本科高校计算机专业需要更新人才培养观念,将ACM竞赛制度纳人教学体系,成为常规性、制度化的工作,积极探索“以赛促教、以赛促学”的应用型创新人才培养新模式。
2)搭建ACM学习平台,建设ACM开放性实验室
构建ACM在线评测系统,学生可以在校园内随时随地使用电脑在线做题,系统自动返回做题评测结果,有利于学生的自主学习。实验室是培养学生实践能力的重要场所。建设ACM开放性实验室,配备专业素质过硬、动手能力强的指导教师给予适时指导,以开放和包容的态度来满足学生的学习热情和求知欲望,学生通过ACM在线评测系统,自主练习,采用算法分析、程序优化、归纳总结等方式提高学生的实践能力和逻辑思维能力。
3)扩大ACM竞赛的受益面,营造浓厚的学习氛围,
ACM竞赛已经培养了一批高素质应用型创新人才,将ACM竞赛内容列入程序设计类课程作为教学案例,扩大赛后的延伸效益,把ACM竞赛融入程序设计类课程实践教学,培养学生创造性思维和实际设计能力,提高教学质量,促进计算机专业改革和建设。在四级竞赛学习机制中,无论是作业、实验,还是校赛、省赛、企业赛,由于均采用动态排名,客观公正,因此可以激发ACM队员编程兴趣和积极性,逐渐形成良好的学风,营造浓郁学习氛围。
4)锻炼学生的竞争能力,培养良好的心理素质
在四级竞赛机制中,无论是练习还是竞赛,参赛队员都能看见即时动态排名和做题情况,这样给学生带来了较大的心理压力,能否及时调整心态将会起到至关重要的作用。通过平时训练和不同级别的竞赛,可充分锻炼学生的心理承受能力,提升其适应行业企业需求的竞争优势。
5)通过ACM组队集训,培养学生的团队协作能力
为了适应行业企业开发应用软件的需求,按照ACM竞赛规则,采用3人一组共用一台电脑进行组队训练模式,组员之间分工协作,默契配合,有利于提高学生的团队开发能力。
6)提升学生的英语应用能力
由于计算机专业资料大多数是英文资料,按ACM/ICPC规则组织的竞赛基本上是英文题目,这让参加ACM竞赛的学生长期进行英语学习,极大提升了学生的英语应用能力。
6.应用效果
2005年开始,湖南省教育厅每年都主办湖南省大学生计算机程序设计大赛,我校每年均组队参赛,我们将基于ACM竞赛的人才培养新模式逐步应用到计算机及相关专业学生的教学过程中,取得了较好的效果。近三年我校在省赛获奖率和获奖级别一直居省内地方本科高校前列。2014年获得湖南省十届大学生计算机程序设计竞赛二等奖1个,2015年获得湖南省十一届大学生计算机程序设计竞赛一等奖1个、二等奖3个,2016年获得湖南省十二届大学生计算机程序设计竞赛一等奖1个、二等奖2个、三等奖2个。这些成绩足以说明本文提出的人才培养新模式是适合地方本科高校培养应用型人才要求。
1计算机类课程的教学现状
电子信息类是综合性极强的交叉性的学科,电子和计算机技术是该专业的两大基础。根据专业的培养方向,我们在培养计划中设置了三个层次的计算机类课程:(1)计算机文化基础层次,包括“大学计算机基础”、“计算机程序设计基础(C语言)”;(2)计算机技术基础层次,包括“计算机网络”、“微处理器与微控制器原理”、“数据结构与算法”、“面向对象程序设计”、“关系数据库与SQL”、“软件工程”;(3)计算机应用基础层次,包括“微处理器与微控制器应用”、“MATLAB仿真与应用”、“电子线路辅助设计”、“可编程逻辑器件”、“图像处理”等课程。这三个层次的课程都包含了大量的计算机实验和实践操作,但大部分实验项目是针对章节知识点进行设计的实验,实验学时较少,实验进度随着理论课程的进度而进行。因为实验学时少,所以只能完成验证性实验,无法进行考查学生综合能力的设计综合性实验,导致很难让学生深入研究和探索。同时,计算机知识更新快,计算机实验教学内容也需要随着课程理论知识的更新不断变化。但是目前的实验大纲往往不能与时俱进,实验项目多年不变和出现了明显的滞后,没有使用最新技术解决实际问题,最终不能吸引学生的兴趣。其次,当前学校正在实施学分制,这使得教学过程中对同一年级的教学进度有差别,为实验项目的开设和开放性实验的进行增加了难度。同时,从学生考研、面试和就业的反馈信息来看,学生参与结合科学研究的实验实践项目的次数和质量直接决定了学生动手操作能力和创新实践能力的高低,而实际情况是学生很少有机会参与此类实验实践项目。因此,本项目以我校物理系两个电子信息类本科专业的学生培养为对象,结合三个层次的计算机类课程的需求,开展计算机类课程理论、实验实践的教学模式和教学方法的改革研究,形成以理论教学、实验和实践有机结合、充分发挥实验实践教学的作用、激发学生的好奇心和求知欲、培养学生动手创新能力为目的的实验实践教学模式。
2计算机类课程体系的构建
我们在保证坚实基础的核心课程建设、保证不断创新的实验实践体系建设的基础上,不断整合课程内容,优化课程结构,构建了理论教学与实验实践教学并重,在知识培养上强调基础性、宽广性、实用性,在能力培养上突出创新性、综合性的课程体系。在原有的三个层次的计算机类课程体系的基础上,为了将计算机课程知识和相应的应用结合起来,后继开设了第四层次课程,如“嵌入式系统及其应用”、“DSP原理与应用”、“平板显示原理与应用”、“数字电视传输技术”、“FPGA及数字系统设计”等,真正做到学以致用。同时,按若干门内容紧密联系的课程组建系列课群,对各个课群中的每门课程进行合理定位,根据课程间的内涵与外延,按照前沿性、先进性和交叉性的原则组织课程教学。在课群建设中,依据电子信息类的专业特点对课群及其课群中的课程进行合理定位,按照“基础”、“学科”和“应用”三个层次组织教学,充分体现“厚基础、宽口径、显特色、富创新”的人才培养目标。具体为:(1)基础层:计算机基础课群(包括大学计算机基础、计算机程序设计基础、C语言综合实验等)。(2)学科层:计算机控制课群(包括微处理器与微控制器原理和应用、计算机网络、面向对象程序设计等)和数据处理课群(包括图像处理、数据结构与算法、关系数据库与SQL、软件工程等)。(3)应用层:计算机工具课群(包括MATLAB仿真与应用、电子线路辅助设计、可编程逻辑器件等)和计算机应用课群(包括嵌入式系统及其应用、DSP原理与应用、平板显示原理与应用、数字电视传输技术、FPGA及数字系统设计等)。
3建立分层次、多模块的实验教学体系
目前,计算机类课程的传统实验和实践教学过程存在诸多问题,如:在进行计算机类课程的实验教学时,实验内容安排较随意,缺少对学生规范化的指导;教学效果的优劣很大程度上依赖教师的个人教学经验;教学手段比较单一和落后;验证性实验多、设计性综合性实验少;教学内容与实际的应用脱节;学生普遍重理论而轻实验等。众所周知,计算机实验教学是理论与实践相结合的教学过程,又是课程理论知识的验证、完善、补充和深化,还是培养学生综合素质及创新能力的重要手段。因此,要解决存在的各种问题,我们需要重新构建合理的实验教学体系。我们依托“武汉•光谷”地域经济特点和我系学科的发展,构建了“一个核心、三个平台、六大模块、三个层次”的实验教学体系。(1)一个核心:以创新能力培养为核心。(2)三个平台:包括计算机基础课程实验平台,计算机专业课程实验平台和个性化研究性实验平台。依据电子信息类的学科结构、学生个性化的需求,构建可个性化选择的六大课程模块。(3)六大模块:包括计算机基础实验模块(包括计算机程序设计基础、C语言综合实验、数据结构与算法等课程实验)、计算机技术实验模块(包括微处理器与微控制器原理和应用、面向对象程序设计、关系数据库、软件工程等课程实验)、计算机应用实验模块(包括MATLAB仿真与应用、电子线路辅助设计、嵌入式系统等课程实验)、拓展实验模块、开放性实验模块和研究创新性实验模块。通过六大模块的个性化选择,使得学生的知识结构不断更新和完善、动手实践能力不断提高。(4)三个层次:根据知识结构、人才能力培养的梯形结构,按照知识需求、能力需求从低到高的原则,建立“基础性实验”、“综合设计性实验”、及“个性化研究创新性实验”的三层次实验教学模式,突出创新能力培养。基础性实验:以深入理解计算机操作和计算机程序设计语言(C语言)基本概念,增强程序设计语言的直观认识,了解C语言解决实际问题为目的。这类实验项目将课程的基本理论知识作为实验内容,主要起到验证理论知识的作用。注重实验的启发性和兴趣性,充分调动学生参与实验的积极性。综合设计性实验:由教师提出问题或学生在教师的指导下自主选题,学生综合运用本课程的综合知识或与本课程相关课程知识,自行设计实验方案,自主完成实验项目。在整个过程中,学生完成从选题、实验设计、亲自动手操作到结果分析和论文撰写全过程。强调实验的自主性,注重实验的设计性和综合性,培养学生的学习主动性、积极性和创造性,锻炼学生运用一系列计算机类的知识解决实际问题的能力。个性化研究创新性实验:一方面,由教师提出可能转化为实验教学的科研成果,选拔善于独立思考、实践动手能力强的优秀学生。由优秀学生和这些教师组成小组,实施并完成这种转化。这类实验让学生掌握思考问题,解决问题的方法,提高创新能力和实践能力,实现个性化培养。另一方面,让对科学研究、科技活动或社会实践有浓厚的兴趣、具有一定的创新意识和研究探索精神的学生进行独立探索,自主选题设计,在现有条件下提出解决办法和实施方案,并在教师的指导下进行实施或独立组织实施。以项目为载体,激发学生的创新思维和创新意识,提高学生提出问题、分析和解决问题的能力,培养学生的独立工作能力。实际操作中,通过课程设计、开放性实验、本科生自主创新项目、大学生创新训练项目加以实现。在实验教学过程中,强化科研引领实验教学的理念,将科研成果积极转化为实验教学内容,组织开放实验、电子设计大赛、软件设计大赛以及大学生科技创新计划项目等活动,形成多形式、立体化的实验教学形式。
4结束语
计算机程序设计教学
[论文摘要]项目教学法是师生通过共同实施一个完整的项目工作而进行的教学活动。在计算机程序设计教学中采用项目教学法的目的是在课堂中把理论与实践教学有机地结合起来,充分发掘学生的创造潜能,提高学生用计算机语言解决实际问题的综合能力。
中等职业学校是培养高素质专门技术人才的基地,肩负着向特定的行业和岗位培养合格的操作技能型人才的使命。现代科学技术的迅速发展,促使社会体系、经济体系和教育体系不断地变化,社会对技术人才的需求也在变化,要求越来越高,从过去的对相对单一型人才的需求转变为现在的对多元化、复合型人才的需求。尤其是计算机专业的毕业生,知识结构与能力更是难以满足现代企业的需求,大量的毕业生在社会上找不到与所学专业相吻合的工作。因此,面对严峻的就业形势,教学必须适应社会对人才的需求变化,改变传统的以“知识为本位”的教学目标,代替以“能力为本位”,以“就业为导向”的教学目标,教师应改变传统教学方法,重视对学生能力和创造性的培养,以适应培养学生综合能力的要求。而因地制宜的运用项目教学法就能够培养学生的动手能力、解决实际问题的能力。
一、项目教学法的必要性
程序设计课程是计算机专业课程体系中重要组成部分,也具有较大难度。我校计算机专业开设的程序设计课程主要包括QBASIC、C、VFP、VB、数据结构等。QBASIC是低年级的入门语言,主要是引导学生从算法语言层面逐步认识计算机处理问题的方法,C语言是一种概念复杂,理论性和实践性均很强的程序设计语言,要求学生有较好的程序设计基础。不管是哪一门课程,程序设计教学的最终目的都是要培养学生分析和设计程序的思维方法和能力,也就是要会用语言这个工具去解决实际问题。传统的教学方法大都是从理论入手,虽然能系统完整地讲解各章各节各个知识点,但由于内容比较枯燥,对于基本素质、自学能力和自控能力都停留在比较低的层次上的职校学生来讲,仅能够灌输到一点基本概念和理论,根本谈不上能用语言这个工具去编写实际的程序。笔者在多年的计算机程序设计教学实践中,结合教学内容和教学对象的实际情况,逐步总结出采用项目教学法能够极大地提高学生学习的积极性和主动性,使他们的动手能力、解决实际问题的能力得到很大的提高。
项目学习法是一种教和学的模式,它集中关注于某一学科的中心概念和原则,旨在把学生融入有意义的任务完成的过程中,让学生积极地学习、自主地进行知识的建构,以现实的学生生成的知识和培养起来的能力为最高成就目标。项目学习可以成为概念的教与学所赖以存在的中心环节,而不仅仅是在努力学习过程之后进行的一种辅的充实。
项目教学法是符合建构主义理论促进学生全面发展的科学教学方法。建构主义学习理论认为,知识不是通过教师传授得到的,而是学生在一定的情景下,借助他人(包括教师和同学)的帮助,利用必要的学习资料。通过意义建构的方式而获得。基于建构主义的教学法要求,在学习过程中,要以学生为中心,教师应起帮助者角色,利用情景、协作、会话等学习环境要素,充分发挥学生的主体性和创新精神,使学生有效地达到对当前所学知识的意义建构。
二、项目教学法的实施
项目教学法是师生通过共同实施一个完整的项目工作而进行的教学活动。通过选取工程项目来创设情境,通过协作学习的方式开展学习,通过完成工程项目来达到意义建构。它突破了传统的教学模式,通过解决学生身边的一些现实问题来实现学生对知识的掌握,大大提高了学生学习的积极性和主动性。通过项目教学法学习的学生,他们的动手能力、解决实际问题的能力有很大的提高。这种方法不但适合职业学校的计算机程序设计课程教学,尤其适用于学生水平参差、学生自控能力比较薄弱、课程的应用性比较强的教学。
项目教学法是从职业学校计算机程序设计课程教学中总结出来的,与程序设计模块化的思想相吻合,所以特别适用于培养“软件蓝领”专业的教学。
下面以《C程序设计》课程中函数这一章采用项目教学法教学为例,具体说明该方法基本的教学步骤。
C语言中的函数相当于其他高级语言中的子程序,是C语言中实现模块化编程的基础,也是学生初步形成模块化开发软件的基础。在未学函数这一章之前,学生已经编写了一个成绩处理程序,该程序的主要功能有成绩的输入、输出、求总分、求平均分、求最高分、排序等。在花了5课时讲解了函数的基本知识及概念后,要求学生用所学函数知识将前述程序改写成一个完全模块化的程序。
1、情境设置。创设学生当前所学习的内容与现实情况基本相接近的情境-给出原先所编的学生成绩处理程序,要求用函数部分的知识将该程序进行模块划分,把学生引入到需要通过函数来解决现实问题的教学环境。我所选取的学生成绩处理项目中,有成绩的输入、输出、求总分、求平均分、求最高分、排序等。这是一个贴近实际,学生比较熟悉,难度适合的项目,这样容易调动学生解决问题的积极性。
2、操作示范。围绕当前学习的知识点,以便于学生“知识迁移”的要求,选择合适的小项目,并示范完成项目的过程。我选择成绩输入这个小项目,示范用自定义函数来实现该模块的功能。
3、独立探索。让学生独立思考,对知识点进行理解,消化成绩输入这个示范项目的解决要点,为解决练习项目打下基础。要消化的要点主要有函数定义部分的参数定义、返回值的确定,以及函数的调用,函数的原型声明等。
4、分组并确定各小组的项目。小组通过研究讨论,并在教师的指导下,将成绩的输出、求总分、求平均分、求最高分、排序等划分好的小项目分配给各小组。
5、协作学习。各小组开展交流、讨论,组员分工协作,调试运行,完成项目。采取分组协作学习的方式时,每组人数应适中,组员的个性、能力方面应采取互补方式搭配好,设立一小组长,协调组内成员分工,有利于同学之间互相学习。最后各小组充分运用其他小组已编写好的模块集成出一个完全模块化的程序。因为本项目中的各个模块即小项目是由各小组分别用函数完成的,最后必须将各小组编写的集成起来才能得到一个完全模块化的程序。
6、学习评价。学生学习的效果直接由完成工程项目的情况来衡量,包括教师评价、学习小组评价和自评三部分。分三级来考核:第一级是由教师对小组完成项目情况进行评定:能否共同协作,实现预定功能;程序的优化;是否具有创新意识。第二级是由各小组成员根据各组员对本小组贡献的情况进行互评,组员的参与意识;第三级是由学生本人进行自评,是否在原有基础上有所提高。综合三级评定情况来确定每一名学生的学习成绩。
三、项目教学法应用注意点
项目教学法是行为引导型教学方法中的一种。在整个教学过程中既发挥了教师的主导作用又体现了学生的主体作用,使课堂教学的质量和效益得到大幅度的提高。但在具体使用时还应重点注意以下几点:
1、项目的选择与教材的处理
项目的选取是学习的关键。选取项目要以教学的内容为依据,可大可小,既要包含基本的教学知识点,又能调动学生解决问题的积极性,让学生既能运用学过的知识,又可以创造发挥。教师和学生可以共同参与项目的选取。作为教师对知识点进行讲解的实例,所选取的项目必须简单和典型,以此实例作为学生初始学习的例子,便于学生对知识的迁移;另外一个项目要有一定的难度,可促使学生学习和运用新的知识、技能,解决过去从未遇到过的实际问题。
教材是一个问题。由于现行的教材基本根据学科知识系统进行编写,教师实施项目教学法时,不能够完全按照教材一章一节地讲授,所以要求教师在设计教学时,必须重点选好示范项目,紧密结合教材内容,适当编写讲义,甚至编写教材。
2、正确处理项目教学法与传统教学法的关系
项目教学法并不是日常教学的全部,它只是教学环节中一个非常重要的部分却不可能替代全部的正规教学,它侧重于对学生能力的培养,在应用性比较强的程序设计课程教学中表现出一定的优势;而传统教学法具有完整的理论体系,所以学生对知识点和知识体系的掌握都比较牢固,这在理论课表的教学中表现出一定的优势。在具体运用中中两者可以交叉使用,重视项目的完成,但不能忽略基础知识的掌握;注意吸取传统教学法的长处,把总目标细分成一个个小目标,每个小目标体现在项目中的小模块上,从而让学生建构一个系统的、全面的知识框架
3、教师的角色定位
在教学过程中,教师的地位是经常变化的,当学生学习新技能时,教师是知识的传授者,当学生运用已学技能时,教师是导航员,当学生自主活动时,教师是观察员,当学生以小组进行活动时,教师又需要充当协调员。
教师应当创设学生学习的资源和协作学习的环境,让学生有多种的机会在不同的情景下来应用所学习的知识,充分运用现代教育技术的手段给学生提供多种学习的资源;协商解决各个难关,使学生群体的思维与智慧为每个学生所共享,从而达到全体学生共同完成意义的建构。教师应当做好对各项目的评估总结,在评估中要指出问题的所在及解决的方法,要总结比较各组的特点,引导他们学习别人的长处来改进和提高自己的设计,使学生的各种能力在评估中得到提高。教师应当发挥好协助作用,让学生根据自身行为的信息来实现自我反馈。
通过项目教学法在计算机程序设计课程教学中的应用与实践,笔者深刻体会到:项目教学法把理论教学与实践教学有机的结合起来,不仅有利于学生加深理解和掌握书本的理论知识,更使他们懂得怎样灵活应用这些知识。项目教学法充分发掘了学生的创造潜能,全面培养了学生分析问题和解决问题的思想和方法,提高了学生对程序设计的意义建构,充分地展示了中等职业学校教学“以能力为本位”的价值取向。
[参考文献]
[论文摘要]项目教学法是师生通过共同实施一个完整的项目工作而进行的教学活动。在计算机程序设计教学中采用项目教学法的目的是在课堂中把理论与实践教学有机地结合起来,充分发掘学生的创造潜能,提高学生用计算机语言解决实际问题的综合能力。
中等职业学校是培养高素质专门技术人才的基地,肩负着向特定的行业和岗位培养合格的操作技能型人才的使命。现代科学技术的迅速发展,促使社会体系、经济体系和教育体系不断地变化,社会对技术人才的需求也在变化,要求越来越高,从过去的对相对单一型人才的需求转变为现在的对多元化、复合型人才的需求。尤其是计算机专业的毕业生,知识结构与能力更是难以满足现代企业的需求,大量的毕业生在社会上找不到与所学专业相吻合的工作。因此,面对严峻的就业形势,教学必须适应社会对人才的需求变化,改变传统的以“知识为本位”的教学目标,代替以“能力为本位”,以“就业为导向”的教学目标,教师应改变传统教学方法,重视对学生能力和创造性的培养,以适应培养学生综合能力的要求。而因地制宜的运用项目教学法就能够培养学生的动手能力、解决实际问题的能力。
一、项目教学法的必要性
程序设计课程是计算机专业课程体系中重要组成部分,也具有较大难度。我校计算机专业开设的程序设计课程主要包括QBASIC、C、VFP、VB、数据结构等。QBASIC是低年级的入门语言,主要是引导学生从算法语言层面逐步认识计算机处理问题的方法,C语言是一种概念复杂,理论性和实践性均很强的程序设计语言,要求学生有较好的程序设计基础。不管是哪一门课程,程序设计教学的最终目的都是要培养学生分析和设计程序的思维方法和能力,也就是要会用语言这个工具去解决实际问题。传统的教学方法大都是从理论入手,虽然能系统完整地讲解各章各节各个知识点,但由于内容比较枯燥,对于基本素质、自学能力和自控能力都停留在比较低的层次上的职校学生来讲,仅能够灌输到一点基本概念和理论,根本谈不上能用语言这个工具去编写实际的程序。笔者在多年的计算机程序设计教学实践中,结合教学内容和教学对象的实际情况,逐步总结出采用项目教学法能够极大地提高学生学习的积极性和主动性,使他们的动手能力、解决实际问题的能力得到很大的提高。
项目学习法是一种教和学的模式,它集中关注于某一学科的中心概念和原则,旨在把学生融入有意义的任务完成的过程中,让学生积极地学习、自主地进行知识的建构,以现实的学生生成的知识和培养起来的能力为最高成就目标。项目学习可以成为概念的教与学所赖以存在的中心环节,而不仅仅是在努力学习过程之后进行的一种辅的充实。
项目教学法是符合建构主义理论促进学生全面发展的科学教学方法。建构主义学习理论认为,知识不是通过教师传授得到的,而是学生在一定的情景下,借助他人(包括教师和同学)的帮助,利用必要的学习资料。通过意义建构的方式而获得。基于建构主义的教学法要求,在学习过程中,要以学生为中心,教师应起帮助者角色,利用情景、协作、会话等学习环境要素,充分发挥学生的主体性和创新精神,使学生有效地达到对当前所学知识的意义建构。
二、项目教学法的实施
项目教学法是师生通过共同实施一个完整的项目工作而进行的教学活动。通过选取工程项目来创设情境,通过协作学习的方式开展学习,通过完成工程项目来达到意义建构。它突破了传统的教学模式,通过解决学生身边的一些现实问题来实现学生对知识的掌握,大大提高了学生学习的积极性和主动性。通过项目教学法学习的学生,他们的动手能力、解决实际问题的能力有很大的提高。这种方法不但适合职业学校的计算机程序设计课程教学,尤其适用于学生水平参差、学生自控能力比较薄弱、课程的应用性比较强的教学。
项目教学法是从职业学校计算机程序设计课程教学中总结出来的,与程序设计模块化的思想相吻合,所以特别适用于培养“软件蓝领”专业的教学。
下面以《C程序设计》课程中函数这一章采用项目教学法教学为例,具体说明该方法基本的教学步骤。
C语言中的函数相当于其他高级语言中的子程序,是C语言中实现模块化编程的基础,也是学生初步形成模块化开发软件的基础。在未学函数这一章之前,学生已经编写了一个成绩处理程序,该程序的主要功能有成绩的输入、输出、求总分、求平均分、求最高分、排序等。在花了5课时讲解了函数的基本知识及概念后,要求学生用所学函数知识将前述程序改写成一个完全模块化的程序。
1、情境设置。创设学生当前所学习的内容与现实情况基本相接近的情境-给出原先所编的学生成绩处理程序,要求用函数部分的知识将该程序进行模块划分,把学生引入到需要通过函数来解决现实问题的教学环境。我所选取的学生成绩处理项目中,有成绩的输入、输出、求总分、求平均分、求最高分、排序等。这是一个贴近实际,学生比较熟悉,难度适合的项目,这样容易调动学生解决问题的积极性。
2、操作示范。围绕当前学习的知识点,以便于学生“知识迁移”的要求,选择合适的小项目,并示范完成项目的过程。我选择成绩输入这个小项目,示范用自定义函数来实现该模块的功能。
3、独立探索。让学生独立思考,对知识点进行理解,消化成绩输入这个示范项目的解决要点,为解决练习项目打下基础。要消化的要点主要有函数定义部分的参数定义、返回值的确定,以及函数的调用,函数的原型声明等。
4、分组并确定各小组的项目。小组通过研究讨论,并在教师的指导下,将成绩的输出、求总分、求平均分、求最高分、排序等划分好的小项目分配给各小组。
5、协作学习。各小组开展交流、讨论,组员分工协作,调试运行,完成项目。采取分组协作学习的方式时,每组人数应适中,组员的个性、能力方面应采取互补方式搭配好,设立一小组长,协调组内成员分工,有利于同学之间互相学习。最后各小组充分运用其他小组已编写好的模块集成出一个完全模块化的程序。因为本项目中的各个模块即小项目是由各小组分别用函数完成的,最后必须将各小组编写的集成起来才能得到一个完全模块化的程序。
6、学习评价。学生学习的效果直接由完成工程项目的情况来衡量,包括教师评价、学习小组评价和自评三部分。分三级来考核:第一级是由教师对小组完成项目情况进行评定:能否共同协作,实现预定功能;程序的优化;是否具有创新意识。第二级是由各小组成员根据各组员对本小组贡献的情况进行互评,组员的参与意识;第三级是由学生本人进行自评,是否在原有基础上有所提高。综合三级评定情况来确定每一名学生的学习成绩。
三、项目教学法应用注意点
项目教学法是行为引导型教学方法中的一种。在整个教学过程中既发挥了教师的主导作用又体现了学生的主体作用,使课堂教学的质量和效益得到大幅度的提高。但在具体使用时还应重点注意以下几点:
1、项目的选择与教材的处理
项目的选取是学习的关键。选取项目要以教学的内容为依据,可大可小,既要包含基本的教学知识点,又能调动学生解决问题的积极性,让学生既能运用学过的知识,又可以创造发挥。教师和学生可以共同参与项目的选取。作为教师对知识点进行讲解的实例,所选取的项目必须简单和典型,以此实例作为学生初始学习的例子,便于学生对知识的迁移;另外一个项目要有一定的难度,可促使学生学习和运用新的知识、技能,解决过去从未遇到过的实际问题。
教材是一个问题。由于现行的教材基本根据学科知识系统进行编写,教师实施项目教学法时,不能够完全按照教材一章一节地讲授,所以要求教师在设计教学时,必须重点选好示范项目,紧密结合教材内容,适当编写讲义,甚至编写教材。
2、正确处理项目教学法与传统教学法的关系
项目教学法并不是日常教学的全部,它只是教学环节中一个非常重要的部分却不可能替代全部的正规教学,它侧重于对学生能力的培养,在应用性比较强的程序设计课程教学中表现出一定的优势;而传统教学法具有完整的理论体系,所以学生对知识点和知识体系的掌握都比较牢固,这在理论课表的教学中表现出一定的优势。在具体运用中中两者可以交叉使用,重视项目的完成,但不能忽略基础知识的掌握;注意吸取传统教学法的长处,把总目标细分成一个个小目标,每个小目标体现在项目中的小模块上,从而让学生建构一个系统的、全面的知识框架
3、教师的角色定位
在教学过程中,教师的地位是经常变化的,当学生学习新技能时,教师是知识的传授者,当学生运用已学技能时,教师是导航员,当学生自主活动时,教师是观察员,当学生以小组进行活动时,教师又需要充当协调员。
教师应当创设学生学习的资源和协作学习的环境,让学生有多种的机会在不同的情景下来应用所学习的知识,充分运用现代教育技术的手段给学生提供多种学习的资源;协商解决各个难关,使学生群体的思维与智慧为每个学生所共享,从而达到全体学生共同完成意义的建构。教师应当做好对各项目的评估总结,在评估中要指出问题的所在及解决的方法,要总结比较各组的特点,引导他们学习别人的长处来改进和提高自己的设计,使学生的各种能力在评估中得到提高。教师应当发挥好协助作用,让学生根据自身行为的信息来实现自我反馈。
通过项目教学法在计算机程序设计课程教学中的应用与实践,笔者深刻体会到:项目教学法把理论教学与实践教学有机的结合起来,不仅有利于学生加深理解和掌握书本的理论知识,更使他们懂得怎样灵活应用这些知识。项目教学法充分发掘了学生的创造潜能,全面培养了学生分析问题和解决问题的思想和方法,提高了学生对程序设计的意义建构,充分地展示了中等职业学校教学“以能力为本位”的价值取向。
[参考文献]
1.充分考虑各专业差别,开展计算机基础教学。
根据各专业的不同需求和学生的自身发展需求以及国家信息化的要求,笔者所在的黑龙江科技大学为不同专业的学生开设了《计算机程序设计基础(VB)》课程和《计算机程序设计基础(C)》课程。例如,对电子信息类专业,开设《计算机程序设计基础(C)》课程;对信息管理类专业,开设《计算机程序设计基础(VB)》课程。
2.理念先进,服务人才培养定位,教学目标明确。
以我校应用型人才培养为目标,在教学过程中,始终坚持“以学生为主体、以教师为主导”的教学理念,提倡“自主、合作、探究、创新”,不断改革教学方法和手段,鼓励学生进行研究式学习、自主式学习、资源式学习和协作式学习,注重对学生四个方面的能力培养:通过计算机、网络及信息技术基本原理、基本知识的讲授,掌握计算机分析问题、解决问题的基本方法,培养学生对计算机的认知能力;通过计算机数据处理、多媒体技术及程序设计知识的讲解,培养学生应用计算机解决问题的能力;通过熟练掌握与运用计算机与网络技术,有效地表达思想,掌握基于信息技术的团队协作方式,接受信息社会道德规范的约束,并自觉承担相应的社会责任,培养学生依托信息技术的共处能力;通过对信息的获取、分析、评价和吸收,培养学生的自我学习能力。
二、课程服务专业思想的实施
根据我们多年在计算机基础教育改革实践过程中积累的经验,改革的核心在于“以学生为主体,以教师为主导”和为专业服务的“计算机应用能力培养”的教学模式和方法。我校计算机基础教育与学生专业结合的做法是在教学手段和模式富有建设性成效的基础上积极主动思考,结合了我校办学的主导思想和特色并有了创新性发展。从几年的实践过程看,做法日渐科学,效果积极显著。具体做法:“积累、实践、服务”相结合。
1.及时与专业负责人进行沟通,与专业对接。
第一学期开学前,通过与学生所在院系教学负责人、专业建设负责人沟通等方式,实现课程内容与专业需要的对接,重新定位,按照专业需求调整教学内容,使课程内容满足专业培养目标的需要。即每学期在制定计算机基础课程授课计划时,请专业负责人或骨干教师参与,根据各专业需要提出合理的意见和建议,充分了解各专业学生对计算机应用技能的需求,从而对课程内容及时做出调整和修订。
2.提高课程组教师的计算机能力培训。
课程组的教师积极参与实习、实训、毕业设计和实践锻炼等环节,不断提高自身的实践水平,实现教学水平与专业能力培养的需要对接。同时,课程组的多名教师通过到企业挂职锻炼及时了解社会对计算机能力的实际需要,也了解到学生将来的就业趋势,在提高自身能力的同时,也保持了计算机教育的实用性和先进性,为培养学生的计算机能力作出了充分的准备。
3.为学校各专业的大四学生,进行毕业论文排版指导,发挥服务作用。
随着用人单位对大学毕业生计算机能力的要求有增无减,计算机水平高低已经成为衡量大学生业务素质与能力的突出标志之一。因此,我校计算机基础教育“课程服务专业”的理念和做法既符合教育部对普通本科院校提出的“应用型本科教育”的内涵所指,也符合我校的三大教育理念。作为我校的特色项目,必定对于促进学生终身学习和主动应用计算机起到积极的推动作用。
4.根据专业需要重新整合教学内容,探索为专业课服务的途径与方法。
在计算机教学过程中,我们打破了原有的学科体系,按照学生能力培养体系重新组织教学内容和教学方法,将相关的理论课程重新整合、重组。如在讲计算机程序设计时,重点针对专业的实际问题进行程序分析。新体系淡化了基础课与专业课的界线,实际了知识整合、交叉安排,加强了针对性和实用性,目的是更好地为学生专业技能培养服务。
5.加大实践教学环节,提升学生实际操作能力,为专业服务奠定基础。
计算机基础教学建立了相对独立的实践教学环节,加大了实践教学在教学计划中所占的比例,强调实践与实习,实验的目的不是为了验证理论,而是为了培养学生的技术应用和实际动手能力。同时,在授课计划中还安排了多项相对独立、逐步提升的阶段性技能与综合性实验与训练,不断提高学生的实践操作能力。
6.课程组教师需要了解相关专业课教学重点,积极主动地为专业课服务。
课程组教师通过与相关专业负责人及骨干教师的沟通,以及与专业课教师之间相互听课,及时地了解了专业急需用计算机解决的相关知识与问题,在备课和授课过程中都会将此部分内容作为重点进行讲解,为今后学生利用计算机解决专业知识打下了坚实的基础。
7.开发了自主学习,课程服务专业的网站。
为了提高学生的自主学习能力,课程组开发了计算机基础系列课程网站,网站中包括了课程的大纲、授课计划、课件、习题、名师视频等资料,方便了学生资料的获取。同时,网站还重点设置了“专业学习模块”,针对不同的专业,根据各个专业对计算机能力的需要设置了不同的模拟试题,极大地调动了学生的学习主动性,激发了学生的学习兴趣。
8.适应专业特点,精心设计案例。
案例式教学方法的实施是提高计算机基础课程教学质量的有效途径之一。为了更好地做到课程服务专业,需要授课教师在案例设计之前需要与专业知识进行对接,对案例进行反复斟酌、思考与设计,好的案例可以帮助学生更好地记忆基本概念,理解所学知识,掌握基本技能。如在对会计专业进行案例设计时,要尽可能将具有专业特色的案例融入教学过程中。在安排案例教学时有意识穿插更具会计专业特色的实例,在学习Word时,可以设计“财务报表”、“月份财务分析表”、“资产负债表”等案例,使学生在练习了表格排版的同时,了解了财务报表、财务分析表及资产负债表应包含的基本信息,与会计专业基础课有了更好的结合。在讲解Excel时,可以重点与财务相关的公式与函数。在讲授PPT时,可以利用PPT内容提示向导、母版的改造、PPT中表格和图表的插入等操作,制作财务报告幻灯片,向股东和投资人介绍公司的财务状况等。通过这些有针对性的、与专业知识相结合的案例讲解,并结合布置一些有挑战性或应用性或有乐趣的任务、习题,使学生对计算机基础课的学习兴趣大大提高。
三、结论
摘要:本文以科学发展观为指导,对大学计算机基础教学的改革问题进行了深入的探讨,并对课程改革提出了具体措施。
关键词:科学发展观;基础教学;课程建设;教学改革
中图分类号:G642
文献标识码:B
1课程体系建设
我们将计算机基础的知识结构划分为以下四个领域:
计算机系统与平台:涉及计算机硬件结构、操作系统、网络工作平台等方面的基础知识的应用技能;
计算机程序设计基础:涉及程序设计语言,程序设计基本方法、数据结构与算法基础等;
数据分析与信息处理:涉及应用计算机系统进行数据分析与信息处理的技术与方法,包括数据库技术、多媒体与人机交互技术、计算机接口与控制技术、辅助设计技术、数值计算与处理技术等方面的内容;
信息系统开发:涉及较大型信息应用系统的设计方法(特别是网络应用软件的架构技术),以及软件开发过程等方面的内容。
围绕知识结构的四个领域,将其所涉及的一些理论与技术系统的划分成三个阶段:
第一阶段要求基本概念的“博学”“审问”,即需要牢固掌握大学生必备的计算机通识性基础知识。主要有计算机硬件技术基础、计算机软件技术基础、操作系统概述、网络与分布式计算机介绍、信息系统安全基础。
第二阶段要求技术与方法的“慎思”“明辨”,即需要深刻理解具有共性的知识领域中的一些技术与方法,主要有程序的控制结构、基本数据类型与数据结构、面向对象程序设计方法等。
第三阶段要求应用技能的“笃行”,即要求熟练使用一些可视化编程环境以及掌握程序的测试与调试等技能。
2以学生为中心进行课程设置
由于不同专业所涉及和要求的计算机信息处理技术的不同,在课程设置上采用“1+X”方案,即计算机应用基础+若干必修、选修课程。每门课程的总学时数可划分三部分:理论课学时、课内实验学时、课外实验学时。理工类非计算机专业学生四年课内外上机学时(不含毕业设计(论文)上机)不低于400学时,人文、管理、外语类专业学生不低于200学时。在规划必修、选修课程时,可根据学生所在专业的不同需求,采用以下不同方案:
(1) 电子/控制类专业
需要有较强的程序设计能力;在“计算机系统与平台”方面,偏向于计算机硬件结构以及网络与通讯等,同时需要掌握软件平台方面的基本知识;在“数据分析与信息处理”方面重点掌握计算机接口与控制技术等。具体方案如表1所示。
(2) 科学计算类专业
需要有较强的程序设计能力;在“计算机系统与平台”方面,掌握计算机软、硬件以及网络方面的基本知识,重点掌握软件平台方面的应用技能;在“数据分析与信息处理”方面重点掌握数值计算与处理技术和多媒体与人机交互技术等。具体方案如表2所示。
(3) 信息管理类专业
对一般程序设计知识和技能有较好的理解,在数据库应用系统设计方面有较强的能力;在“计算机系统与平台”方面,掌握计算机软、硬件以及网络方面的基本知识,重点掌握软件平台方面的应用技能;在“数据分析与信息处理”方面重点掌握数据库应用以及多媒体技术等方面的知识与技能。具体方案如表3所示。
(4) 辅助设计类专业
具有较好的程序设计知识和技能;在“计算机系统与平台”方面,掌握计算机软、硬件以及网络方面的基本知识,重点掌握软件平台方面的应用技能;在“数据分析与信息处理”方面重点掌握辅助设计技术以及多媒体与人机交互技术等方面的知识与技能。具体方案如表4所示。
(5) 基本应用类专业
在“计算机系统与平台”方面,掌握计算机软、硬件以及网络方面的基本知识,重点掌握常用软件的使用方法;在“数据分析与信息处理”方面重点掌握信息检索与分析方法。具体方案如表5所示。
3题库建设
题库建设是一项长期、复杂的工作,技术要求高,工作难度大。教师在设计题库时根据不同专业学生的培养目标,应用现代教育测量理论和技术,合理制定课程考试标准,科学把握考试的合格标准,引导学生按照专业、课程要求,全面、准确地理解、掌握和应用所学知识。
众所周知,考试是检验学生学习效果的常规手段,所以每到考试前出试卷时,教师总是为出一套好题费尽心思,既要几乎覆盖全部知识点,又要每个层次的题目都有,还要难易程度比例适中。为了使考题真正能检验教师的授课水准与学生的掌握程度,更为了严密考试程序及提高组卷的效率,学院及时开发了“大学计算机基础”电子题库管理系统。此题库设计实现了实用性与科学性相统一,并具有开放性、安全性和动态发展等特性。在课程考核标准的把握、命题质量的控制、参数估计和试卷生成模型上形成自己的特色。入库的题目在内容考核点、重要性、认知层次、难度层次和题型等方面的分布要有合理的结构,以保证生成多套平行试卷。该系统采用了高性能的快速算法具有高效的组卷能力,并具备对所组成的试卷自动进行分析的功能,同时为教员提供了试卷批改后的试卷分析功能。
参考文献
[1] 黄国兴. 中国计算机科学与技术学科教程[M]. 北京:清华大学出版社,2002.
摘要:本文多方面系统论述了学习“计算机图形学”课程的必要性,分析了该课程的学习没有受到人们重视的原因,指出系统学习该课程是读者掌握数据计算类型的程序系统设计基本方法与计算机仿真入门的有效途径,使读者对“计算机图形学”课程的学习有一个正确的认识。
关键词:计算机图形学;计算机仿真;科学计算;程序设计基本方法;可视化
中图分类号:G642
文献标识码:B
1 “计算机图形学”的学科特性
所谓“计算机图形学”是计算机仿真(即按模型计算以生成图像)与科学计算(即通过在计算机上建立模型并模拟物理过程来进行科学调查和研究)的一种基本形式,是研究图形数据模型在计算机内部的产生、设计与构造过程,它是显示图形不可分割的前提(这相当于画家作画之前,对绘画作品的设计思想、表达方式、绘画构思、作品内容与结构等的创作与思考过程;只有当这个绘画作品设计方案成熟之后,画家才动笔绘画);而图形显示是用点、线、面、色彩、纹理等可视化的数学方式表达这种数据仿真计算结果的数学含义、或表达仿真过程中各种实体仿真模型与场景效果的物理含义的一种直观表达方式。参考文献[1,2]已向读者证明这一结论,只有这样,才能较好的理顺“计算机图形学”课程的授课关系,使读者建立用计算机生成图形的完整概念。
我们用这一指导思想主导“计算机图形学”教育20多年,并用“计算机图形学”的授课内容解决了多年来国内计算机程序设计课程没有解决好的计算可行性(可计算性的实现前提)这一教学难题,使该课程成为初学者学习计算机程序设计基本方法、认识图形数据模型构造与显示的一般规律、进行可视化应用程序开发三位一体教学目的的最佳选择,并有效地弥补了从算法语言、数据结构到软件工程之间关于应用程序编程系统训练与计算机仿真等教学环节的缺失。这种教学方法使“计算机图形学”的教学内容完全纳入了计算机科学的教育体系,同时使“计算机图形学”与“数据库”、“网络通信”这三门课程成为现代计算机应用程序的三个基本特征(数据计算、数据存储与检索、数据联网通信)的典型代表,由此转变了“计算机图形学”课程的教育观念与教育思想。在教学过程中,作者曾遇到学生们提出的多种学习问题,今整理成文,以飨读者。
2学习“计算机图形学”的原因与重要性
为什么要学“计算机图形学”,这是计算机专业选修“计算机图形学”课程的读者关心的首要问题。众所周知,计算机科学是处理信息技术(IT)的一门学科,通信科学是传输信息技术的一门学科。对于信息技术而言,常用于表达信息数据含义的4种方式分别是①数字与字符方式表述;②图形方式显示;③播放声音表述;④用机械力表达(即把电信号转换成机械运动)。这4种表达信息数据含义的方式又称信息数据的多媒体表达方式(即多媒体技术)。其中,用图形显示这种方式表达信息数据的含义符合人们观察了解事物运动规律的习惯,而且信息容量大,直观方便,同时是人们获得外部世界信息来源的主要依据;也就是说信息数据的可视化是信息技术与计算机科学发展的一种潮流与必然趋势。随着计算机工业的发展与进步,实际应用课题与现代程序设计对信息数据的可视化处理要求已经越来越高,这就要求人们深入研究并掌握图形显示的一般规律,才能更好的为计算机信息数据的可视化服务。
按现代教科书对“计算机图形学”的新定义,“计算机图形学”代表了计算机应用学科的一个重要发展方向――科学计算、计算机仿真、计算机辅助设计、信息数据的可视化、动画与游戏、虚拟现实、数字娱乐,其编程应用还涉及程序设计方法。它们代表了当今计算机技术的发展潮流与应用水平,是解决计算机专业人才出路的有效途径之一;而“计算机图形学”是该方向的公共基础课程,是目前国内计算机本科教育应当加强的内容。显然,仅仅靠学习计算机程序设计语言、数据结构、编译原理、操作系统、数据库、软件工程、形式语言与自动机理论等课程还不能完全使学生的能力直接达到开发这些应用软件的目的,因为原则上这些课程是为用户使用计算机的计算功能而系统量身打造的软件使用工具(数据结构、软件工程除外),它们的教学目的是为用户掌握并研制这些软件工具服
务、而不是为用户使用这些软件工具系统地开发应用程序而开设的课程。计算机专业主要沿这条主线向前发展:研究、设计、制造计算机硬件设备,为用户使用计算机的计算等功能提供一切便利的手段、方法与软件辅助工具,这包括总结用户使用计算机的基本类型与模式,而对于复杂且很难全面概括使用计算机的方法等、则留给一般用户自己解决,这或许是计算机专业本科课堂教学没有介绍对数据计算类型的应用软件系统开发要遵循的基本规律与发展模式的原因之一,“计算机图形学”的教学正好可以弥补这个缺陷。
由于计算机教育本身并不能直接提供认识世界、改造世界的能力,加之我国没有掌握具有国际竞争能力的计算机硬件与系统软件的核心开发技术,这使中国大量的优秀人才在计算机专业上的最后发展受到了严重制约。而“计算机图形学”的仿真方法为计算机专业人员的发展提供了这样一种新的学习方法与重新选择的机遇,它能为计算机专业人员学习其他行业的专业知识(即学习新专业的物理、数学方法)、成为其他行业的专家助手,进行新行业系统仿真与系统设计以获得新生;由于各行业都有各自的研究领域与待解决的研究问题、研究方法与理论研究模型等,当用计算机仿真的方法对这些研究课题进行辅助研究,并用图形等可视化的方法表达计算机仿真研究的中间结果与最终成果时,这将使计算机的应用走向深入。
科学研究的目的就是探索未知世界、认识世界、改造世界、造福于人类自己,而“计算机图形学”的教育正是遵循这样一条主线:通过物理实验认识待解决问题的本质,并用数学模型的方法来描述这种物理现象的变化过程,从而达到用计算机程序设计的方法来仿真光线在自然界中的传播,以及光线在照相机中传播而生成图像效果,这类物理仿真过程是科学研究方法中的一种基本形式,这种科学研究方法的教育思想(包括人文精神)是国内计算机专业本科课堂教育所欠缺的(计算机专业往往专注于数理逻辑思想的基础训练)――即“计算机图形学”的教育,不仅拓展了计算机专业人才的知识领域,也为其毕业增加了就业渠道,同时能培养计算机专业人员的基本科学研究素养,这正是目前国内计算机教育改革所追求的目标之一。
需要说明,全日制普通本科教育是普适教育,它需要建立各专业自己的知识框架,学习基本的概念,了解基本的范畴,明确其发展方向,计算机专业也是如此。本科教育重在基础,提高本科教育质量与水平并非拔高与创新,而是要做到全面、均衡的发展,除要求学生掌握本学科专业已成熟的系统理论知识外,还需培养学生用学科的基本思想与方法独立自主分析问题、解决问题的能力,这种理论与实践相结合的教育方法,能确保学生今后得到稳步的发展。“计算机图形学”就是培养学生利用计算机、数学、物理等学科的系统知识解决实际应用问题能力的一种有效方法,这样培养的学生才能适应社会竞争与选择的需求;只有在研究生阶段,通过再次系统学习、阅读原著与相关论文并参与项目开发等活动,达到全面提升对学科的认识能力,并向某一个研究方向发展、去探索未知世界的变化规律、解决前人没有解决好的难题、逐步走入学术研究的殿堂(即创新教育);当然人们也能在日后的工作中慢慢积累这种工作能力。
文献[2,3]系统论述了“计算机图形学”课程在计算机科学教育中的作用与地位。目前很难找出一门具有像“计算机图形学”类似重要性与多样性的其它计算机本科专业基础课程,能使读者正确掌握数据计算类型的计算机应用程序设计的基本方法,并使计算机这一工具直接服务于社会,这是我们应该重视“计算机图形学”教育的根本原因。
3学习“计算机图形学”的方法
由于“计算机图形学”属于计算机应用软件的范畴,因此,数据计算类型的应用软件的设计方法就是学习“计算机图形学”应该遵循的原则。就“计算机图形学”课程的学习而言,它要求:
(1) 全面掌握程序设计语言的特性与数据结构的基本内容,是实现“计算机图形学”编程的基础。
(2) 掌握建立解决实际应用问题的数学模型与软件系统的概念,是计算机程序设计的两个关键点。软件系统是一个能自动运行的综合执行程序,它能从输入、存储、运算处理、输出等方面全面处理用户在某个领域中提出的诸多数学模型并完成其模型描述数据的加工任务,使用户很容易明确这种软件的组成、功能与使用范围。一般利用二维图形的简单性,可以较完整的介绍二维图形软件系统这一概念。软件系统的概念是目前程序设计语言与数据结构课程中所欠缺的关键内容。
(3) 正确的认识“计算机图形学”与计算机仿真的相互关系。“计算机图形学”的重点与难点在三维图形的数学模型研制(包括照相机模型,灯光模型,颜色模型,照明模型,物体的几何模型,物体表面的材质与纹理模型等)与模型描述数据的构造上;由于计算机图形学追求像照相机拍照一样的三维真实感图形显示效果,这决定了要在计算机中使用物理学仿真的方法(仿真光线在自然界中的传播所产生的显示效果或把这种传播效果映射至物体的表面上)才能达到这一目的,这自然需要读者对相应的物理知识有个基本的了解才能进行。
(4) 需要了解一些计算机仿真的基础知识,以确保“计算机图形学”的物理仿真教学过程不会出现偏差。
计算机仿真的主要过程分系统、模型、编程实现(仿真算法)、评估四个步骤。这里①系统是指相互关联又相互作用着的研究对象的有机组合,它决定了被研究考察对象的组成与边界范围。②计算机仿真一般可以用数学模型(简称模型)的方法代替实物研究对象,事实上模型也可以是对现实世界的事务、现象、过程或系统的简化描述,但它反映了实际问题最本质的特征和量的关系。目前“计算机图形学”所述的模型多限于对所研究对象的物理性质、运动变化规律等特性的一种数学描述,它使人们能解释那些难以直接观察到的事物的内部构造、事物的变化以及事物之间的关系――即模型描述了现实世界中有显著影响的因素和相互关系。但这种描述有一定的使用条件与限制范围,研究的目的不同,对该研究对象的数学模型的描述方法以及模型的种类会不一样。③仿真(编程实现)就是在模型上做实验,从理论上测试构建的理想系统的动态行为特性,以评估系统的效能。④系统的用途不一样,评估的方法也不同,人们往往用事先约定的一组指标来评估仿真系统的结果;当所得仿真结果没有达到预期的理想效果时,人们往往不断改进仿真模型与仿真算法。例如计算机图形系统,用途可以是显示三维图形,查看它的真实感逼真显示效果就是人们主要关心的问题;模型的运动与操作(如游戏),看它的操作性与故事情节等如何表达用户的情感与智能(简称好玩)就是人们关心的主要问题;机械设备的综合运动与仿真,考察所设计的复杂设备的工作性能就是人们关心的主要问题;电气系统的系统仿真,能考察系统工作参数如何设计以满足用户的不同需求;作战系统的仿真模拟,能考察作战人员的训练水平、武器性能、指挥作战方式对作战进程的不同影响与作战效能,等等。
(5) 努力把图形学所介绍的各种模型与算法(算法是对模型描述数据的加工与变换处理的步骤与方法,“计算机图形学”中的主要算法有各种线段图形的生成与实面积多边形的填充算法、着色算法、消隐算法、纹理映射算法、阴影算法,光线跟踪算法与辐射度算法)都编写成程序代码,这使读者能直接体验自己的学习效果,也是其它课程不容易做到的。编程时要考虑算法的复杂度,特别是按照软件系统的方法把编写的程序代码组成一个系统整体,这是形成成熟商品软件很重要的前提。显然,此时软件系统中的各种数学模型反映了仿真系统中研究对象之间的相互关系。
(6) 掌握“计算机图形学”打造的绘图工具,是可视化应用软件编程的重要基础。用“计算机图形学”知识研制的工具常用的有OpenGL与Direct3D等三维图形标准,虚拟现实建模语言VRML。而三维动画与CAD等软件可以看成是“计算机图形学”为影视制作、游戏建模与计算机辅助设计部门打造的专业计算工具。仅把图形标准与计算机绘图等应用当作“计算机图形学”很不完备,因为它不能在课堂教学中向读者正确、完整、系统地展示计算机图形学学科发展的基本规律,并人为地割裂了计算机图形数据模型的构造与显示这两个过程。
(7) 学会看中英文专业杂志等参考资料,这些参考资料记录了学科的发展历程与学科当前的研究热点(一本教科书不可能全部包含这些内容),且是一种更重要、复杂、深入的学习研究方法,也是目前国内本科教育的弱项(因为国际上最新的研究成果多用英文发表)。只有这样,才能跟踪计算机图形学的最新发展并站在学科发展的前沿、才能开阔人们的视野并有所鉴别,便于读者日后针对用户的多种需求展开开创性创新或针对已有成果的不足、提出修补与改进等渐进性创新等学术研究活动。
(8) 勇于参与课程实践与项目开发,是巩固、检验所学知识、提高实际动手能力的好方法。实际软件开发工作往往是多种知识的综合应用,它需要对实际处理事务有一个比较透彻的了解(用户需求报告)、并建立这些待解决问题的数学模型与系统流程后才能有效进行(按照软件工程的方法组织实施)。
只有把自己开发的软件做成有效商品、服务于社会,才能使所学的知识转变成生产力,才能使自己得到升华;同时也应注意把自己的心得与研究成果总结发表,与人共享;还应参加学术活动,注意留意不同学术流派之间的观点、思想、方法与学术动态,取长补短,形成自己的风格,广结人缘,相互交流,为学科建设添砖加瓦。
(9) 一本计算机图形学教科书的容量使其只能介绍计算机图形学发展历程中产生的最基本、最经典的模型与算法,这些内容是人们耳熟能详的物理原理与相对简单的数学知识在计算机中的综合应用,太复杂的计算关系因会影响图形的显示速度而一般不采用;目前计算机图形学教科书的理论体系已成熟且“计算机图形学”的教学内容已经构成了一个大系统,这使“计算机图形学”的教学过程变得简单、容易。
4目前国内“计算机图形学”教育未受到重视的原因分析
既然如此,为什么目前人们感觉“计算机图形学”教育的受重视的程度不如数据库与网络通信等计算机应用软件呢?笔者认为其原因之一在于:这是因为“计算机图形学”造就的工具即图形标准的特殊应用环境要求限制了它在很大一部分应用程序中的具体应用;三维图形标准目前仅仅在游戏领域获得了商业上的成功,一些应用软件不调用图形标准也能自己绘图;国内的计算机应用程序可视化的开发要求暂时还较低;关键是作为学科领头羊的美国人目前还没有把“计算机图形学”课程作为计算机本科专业的核心课程,这是因为他们对“计算机图形学”课程的本质与其在计算机学科中的作用与地位认识不到位所致,美国人图形学这种教育现状(目前多以图形标准的原理讲授为主)和局限性与美国人在3D游戏、计算机动画、计算机辅助设计等应用软件的开发上执世界牛耳之地位不相称。
当然,早期计算机图形学教科书编写内容、体系的不够成熟,也影响了人们对“计算机图形学”课程的认识与学习的积极性。例如仅停留在数学公式与算法的层面上介绍二维、三维图形的生成而不注重其建模思想与方法的介绍,且人为的把物体几何模型的构建与其图形显示分解成“计算机辅助几何设计”与“计算机图形学”这两门课程,这直接导致图形学课程教学内容缺少被处理的图形显示对象,加之计算机课程与图形学的教育又没有软件系统的概念,这样安排虽然能满足图形标准等商业软件的发展需求,但却很难让初学者全面掌握“计算机图形学”学科系统性的概念、思想和方法与学科发展的基本规律――用数学模型的方法指导编程实践,在计算复杂性可接受的条件下,针对已有成果中存在的不足,不断用新的数学模型与仿真算法等方法对其进行改进,使图形学的数学仿真过程不断的逼近现实物体模型(包括刚体、软体、流体、气体)的构造、运动、变形、切割和拼接与反光效果的显示这一真实的物理变化过程。即初学者没有用计算机生成图形的完整概念,这也是以往人们认为计算机图形学课程难教、难学的主要原因。
由于“计算机图形学”的绘图原理不像数据库软件那样,数据库的功能可以被所有的应用程序所调用;也不像通信软件那样,所有要联网的计算机都离不开通信技术与网络技术,而计算机显卡工业、3D游戏、计算机动画、计算机辅助设计等产业的市场份额小于数据库与计算机通信等产业的市场份额,即应用软件的商业价值决定了它们在人们工作与学习中的地位。
参考文献:
[1] 魏海涛. 计算机图形学(第2版)[M]. 北京:电子工业出版社,2007.
[2] 魏海涛. 科学的构建‘计算机图形学’的教学内容,促进计算学科的全面发展[J]. 计算机教育,2008,(10).