前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的计算机编程需要的知识主题范文,仅供参考,欢迎阅读并收藏。
一般进入大学后,学生才会逐渐的接触到计算机C语言,计算机C语言是一门新的计算机语言,其主要是进行计算机编程,这些计算机程序在实际工作中有很大的作用。虽然计算机C语言现已广泛流行,有很大的作用,但是对于学生而言仍然是一门很难的学科,学生很难对C语言进行掌握,不理解C语言,但是学生一旦学会C语言,就会进行各种程序的编写,发现C语言的魅力。在本文中,我们对C语言编写程序的技巧进行学习。
一、计算机C语言内容
想要学习计算机C语言并不是一件很难的事情,C语言编写程序是一件水到渠成的事情,C语言主要课可以分成这几个模块:(1)语言运算符和运行顺序。(2)C语言的基本程序结构,顺序、选择以及循环。(3)数组。(4)函数。(5)指针。(6)结构体和共用体。(7)文件。C语言的运算符和运算顺序是学习计算机C语言的基础,也是计算机C语言的独特之处,计算机C语言的运算非常的灵活,运用也非常的丰富,当一个运算中出现多种运算时,在组合运算表达式中,就会出现优先运算顺序和结合规则。计算机C语言是三种基本程序的结构,这三种程序结构是学习计算机C语言必须掌握的程序结构,所有的程序结构都是按照执行顺序进行的,在执行程序的过程中,会根据输入的任务选择结构,并不断的执行相关的任务指导满足选择结构的条件[1]。数组其实就是一组数据的有序结合,在计算机C语言编写程序中需要对有共同性质的数据进行处理,根据数组维数的不同,将其分为一维数组和多维数组,在计算机C语言编写程序中,对数组的引用,可以为某些编程提供更为方便的环境。函数是计算机C语言的重要组成部分,在计算机C语言中每一个函数都有特定的单一功能,通过函数模块的调用将其特定的功能实现。在计算机C语言编写程序时,引入函数主要是为了将其中出现的重复代码解决以及满足编写程序的结构化和模块化等需求,根据不同的使用方法可以将函数分成不同的种类,从定义上分,可以将函数分成有返回值函数和无返回值函数,从作用上分,可以将函数分成内部函数和外部函数,从使用上分,可以将函数分为用户函数和系统函数。在计算机C语言编写程序的过程中,应用作为广泛的一种数据类型就是指针,指针是计算机C语言的精华部分,指针也是计算机C语言编写程序的一个特征。通过指针变量获取各种数据结构,将数组和字符的使用简化。计算机C语言编写程序中经常使用的一种数据类型是结构体和共用体,主要是对多个不同的数据组成的实体进行描述,其中每一个数据项就是一个实体,将这些数据项结合在一起就形成了一个特定的单元,也就是结构体。结构体和共同体可以将计算机C语言编程中的数据类型和数组类型结合成一个整体。计算机C语言编程中文件是相关数据的有序结合,从用户的角度,可以将文件分为设备文件和普通文件,从储存方式上进行分类,可以将文件分成二进制码文件和ASCII码文件,当然从文件的读写方式进行分类,可以将文件分成非缓冲文件系统和缓冲文件系统[2]。
二、计算机C语言编写程序技巧
计算机C语言最好的学习方法就是练习,也就是说要多上机,只有在计算机上运行出来的程序,才是正确的程序,否则将是不正确的C语言编写程序,学习计算机C语言编写程序的主要技巧有:
1.根据示例程序,注重示例程序。从示例开始学习计算机C语言编程,是学习新知识的开始,通过对示例的练习,逐渐形成自己的思考模式。在进行数据结构编程时,需要对相关的程序进行编写,这时对每一种数据结构都有了一定的了解,这是运用数据结构进行编程的基础,熟练的运用数据结构是对数据结构有了深刻的理解和透彻的领悟。在学习计算机C语言编程之前,通过对示例的模仿,了解编程的基本步骤,帮助进行程序的编写。
2.多练习程序编写。程序编写不能停留在对理论知识的掌握上面,需要通过实践进行锻炼和提升,想要提高计算机C语言编程能力,就需要多进行上机练习。上机可以将学生的动手操作能力提升,在实践中将学习到的理论知识进行运用,通过上机,将自己在理论知识学习中的薄弱之处进行指出,然后进行改进,实现计算机C语言编程的效果,提高实际操作动手能力。
3.在编程时,注重综合知识的运用。计算机C语言编程需要大量的运用综合知识,包括C语言的7项基本内容,同时还要执行不同的程序结构。综合知识的运用,有利于编写出优秀的计算机C语言程序,将理论知识运用到实际的编程中,将编程效果提升。
4.掌握计算机C语言基础知识。编写的计算机C语言程序,虽然可以在计算机上运行,但是,掌握住扎实的理论知识是基础,在计算机C语言编程中应该明白掌握基础知识对于对于上机的重要性,没有基础知识作为上机的前提,上机操作编程工作是没有办法进行的,所以需要掌握住扎实的理论知识[3]。
三、小结
随着信息化脚步的加快,计算机C语言在生活中得到普遍的应用,在工作有着重要的意义,在计算机C语言编写程序中,掌握相应的技巧,是学习计算机C语言编程的基础也是可靠保证,掌握住基础理论知识,和上机技术,在计算机C语言编写程序中有不可替代的作用。
参考文献:
[1]任国英.计算机C语言编辑程序技巧探讨[J].赤峰学院学报(自然科学版),2012;01
[2]秦兴.探究计算机C语言编辑程序技巧[J].信息与电脑(理论版),2012;6
计算机科学的很多分支,比如:程序设计、信息技术、网络技术、信息安全等,基本上都要依靠一定的数学功底。因此对于一个计算机专业的学生来说,数学修养是非常重要的。推理、创新、逻辑思维、分析问题解决问题等方面的能力都得到了一定的体现。
一、数学在计算机图形学中的应用
1、三角学和代数
三角学和代数是计算机图形学中最基础的知识。高中时期所学的数学,最重要的内容就是三角学和代数了,它们可以帮助我们解决类似求几何图形边长等简单的问题,也可以帮助我们从方程中解答出一个或者多个的根。
2、线性代数
只要想在计算机图形学领域中工作,扎实的线性代数基础是必需的。而线性方程组与矩阵是其基础与核心。图形学自始至终离不开矢量,我们常常抽象出的几何数值表示法,比如坐标X\Y\Z,就被称之为矢量。一般我们也可以用矢量来描述平移、缩放或者旋转。在图形学里矩阵的表述也相当流行,许多问题都要用到矩阵方程组的数值解法。由此我们可以看出线性代数的思想贯穿于整个计算机图形学中。
3、微积分学
数学中的基础分支。内容主要包括函数、极限、微分学、积分学及其应用。求曲线的切线问题,求长度、面积、体积、重心问题等都需要用到微积分。它是一种很有用的工具,是高级计算机图形学的重要成分。也有许多研究者用微积分学的术语来描述他们的问题和解决方法。微积分学是一能为你打开计算机图形学与后继的数学学习之门的课程。
4、微分几何学
数学的一个分支学科,应用微分学来研究空间中的曲线、曲面等图形性质的数学分支。以光滑曲线、曲面作为研究对象,由曲线的弧线长、曲线上一点的切线等概念展开。讨论的重点内容则是平面曲线在一点的曲率和空间的曲线在一点的曲率等。如果需要建模,也就是说用曲线和曲面来创造形体,则微分几何学是基础。
5、概率论与统计学
概率论是研究随机现象数量规律的数学分支。统计学是通过搜索、整理、分析数据等手段,以达到推断所测对象的本质,甚至预测对象未来的一门综合性科学。概率论与统计学则涉足到计算机图形学的许多领域。比如:计算机图形学涉及人类学科等的相关领域,例如虚拟现实和人机交互(HCI),就需要统计学来分析数据。计算机描绘真实世界牵涉到各种未知事件的概率问题,就需要用到概率论进行分析。
二、数学在编程中的应用
关键词:VB编程土木工程学习 应用 浅谈
Abstract: with the development of society and the progress of science and technology, people in all walks of life from personnel of ability constantly increasing demand, for civil are no exception. In order to realize the safety of structures, practical, beautiful, economy, accurate, to the computer's dependence on civil engineering are getting more and more serious. Therefore, as a study of civil engineering in the school student, understand and master the computer technology is very important, especially in computer programming. This paper, the author will with computer programming of the Visual Basic programming (hereinafter referred to as VB programming) as an example on computer programming in civil engineering application of learning.
Keywords: VB programming civil engineering study on application
中图分类号: TP313文献标识码:A 文章编号
1.引言
VB(Visual Basic)是微软推出的基于Windows环境的软件开发工具。它的主要特点为:1)、可视化;2)、面向对象;3)、采用事件驱动的编程模式;4)、结构化程序设计语言。其编程过程中主要应用的是窗体(Form)和几种基本的控件,如命令按钮(Command)、标签(Label)和文本框(Text)并对其进行编程控制。在应用VB编程之前,首先分析问题,确定程序要完成什么任务,然后按下面的步骤创建应用程序:
1)、新建工程,并在工程中添加窗体
2)、设计窗体界面
3)、设置对象的属性
4)、编写程序代码
5)、运行、调试程序(重复3、4、5步)
6)、保存工程、窗体文件
7)、编译程序,产生EXE文件
VB编程是几种计算机程序中较为易学的一种,也是为大多数在校大学生所掌握的一种计算机编程。它的应用十分广泛,四则运算计算器、体彩模拟器、红绿灯系统及俄罗斯方块等小游戏都可以通过VB编程加以实现。基于它简单易学、方便实用的特点,我们可以将它应用到我们的日常学习当中,用程序语言去诠释我们的想法,解决难题。下文中,笔者就将以计算机编程中的VB编程为例浅谈计算机编程在土木工程学习中的应用。
2.计算机编程应用到土木工程学习中必要性
2.1、是提高学生学习能力的需要
对于土木学子来说,仅学好专业知识不再意味着能够走向成功,时代在改变,对我们的要求也在改变,学会使用计算机工具才能够事半功倍。在我们的课本当中,有很多数据表格,我们通过查表计算出最终结果。显然,表格中的数据都是约数,并且书中只列出了部分数据,其他的数据需要通过“内插法”求得,计算过程不仅复杂而且不够精准,这对一个小小的作业题目来说可能造不成多大的误差,但对于一个庞大的工程项目来说就可能造成巨大的误差,而运用计算机,将其计算过程编辑成程序,计算出来的结果精度和效率将明显提高,所造成的误差将大大的减小。在这个过程当中,学生既能够发挥自己的计算机水平,学以致用,又能够提高自身的动手能力和办事效率;其次,学生的学习积极性也得到了极大的提高,同时学生应用计算机编程解决实际问题的思维能力也能得到进一步的完善和提高。
2.2、是巩固专业知识的需要
计算机编程对于土木学子来说不仅仅是将公式写成代码的过程,还是一个对公式再认识的过程。在公式中,不同的字母具有不同的定义,同时也代表不同的运算规律。将复杂的公式转化成计算机能够识别的代码的过程中,我们对字母的具体含义会有个更加深刻的认识,这样有助于加深对知识的理解和应用,从而起到巩固知识的作用。
2.3、是提高就业竞争力的需要
随着社会的发展和科技的进步,各行各业对其从业人员的综合技能要求越来越高,土木从业人员也不例外。众所周知,当今学习土木工程的大学生就业形势依然严峻,不少学生毕业后找不到工作,自身能力不足,实难找到称心如意的工作。另一方面,很多工程单位又找不到理想的人才,它们需要懂土木工程的人才,更需要能够将计算机和土木工程融会贯通,能够用计算机语言解决工程问题的人才。为何我们不投其所好,抓住这个契机,学好专业知识的同时学好计算机。总的说来,会计算机编程的土木人不会找不到理想的工作。
2.4、是成就事业,取得成功的需要
土木行业是一个传统的行业,长久以来人们都是通过纸笔来进行各种数据的计算,这样的计算过程不仅繁琐,效率还相当低,并且计算出来的结果的正确性和精度难以保证,这就成为了行业发展和个人成功的极大阻碍。所以对于在校的土木学子,学好计算机编程,将其应用到学习当中,培养自己应用计算机编程解决问题的思维和能力,可以为将来的实际工作打下坚实的基础,提高办事精度和效率,打败竞争对手、成就事业、取得成功。
3.计算机编程在土木工程学习中的具体应用
VB编程的基本步骤在土木工程学习中的应用同引言叙述步骤相同,下面笔者就以土木工程学习中土力学教材《土力学地基基础》(第4版,清华大学出版社)中求解地基中的附加应力为例(例题3.1,P93)浅谈VB编程在土木工程学习中的应用。
例:已知某矩形地基,长度为l=2.0m,宽度为b=1.0m,作用有均布荷载p=100kPa,计算此矩形面积的角点下深度为z=1.0m处的附加应力σz。
首先,在理解题意的前提下,为了在VB中实现求解该问题的附加应力值,我们先通过已知条件设置一个窗体,并按要求预设好一系列所需要的控件:五个标签、五个文本框和两个命令按钮。
接着根据矩形面积受均布荷载作用下附加应力公式:“,m=,n= ”,对各按钮控件进行代码编辑,代码如下:
Private Sub Command1_Click()
p = Val(Text1.Text)
b = Val(Text2.Text)
l = Val(Text3.Text)
z = Val(Text4.Text)
m = l / b
n = z / b
t = (m * n / (Sqr(1 + m * m + n * n))) * (1 / (n * n + m * m) + 1 / (1 + n * n))
αc = (Atn(m / (n * Sqr(1 + m * m + n * n))) + t) / (2 * 3.1415926)
σz =αc * p
Text5.Text =σz
End Sub
最后,我们运行该程序,在对应的文本框中输入对应的已知数据:均布荷载值P=100kPa,矩形短边b=1,矩形长边l=2,点深度值z=1,点击确定按钮,就可以得到该条件下深度为1.0m处的附加应力值σz= 19.9941076008979kPa。
另外我们可按照课本上的方法,通过查表的方式,求出σz=19.99kPa。不难看出通过程序求解出来的附加应力要精确的多,同时,有了这样一个小程序,在解答类似问题时的效率会得到大大地提高。
4、结语
以上就是VB编程在土木工程学习中的一个简单应用,读者可以试着自己完成。VB编程在土木工程学习中还有很多的具体应用,再如土力学中的分层总和法计算地基沉降等,读者若有兴趣可以试一试,笔者在此就不一一列举了。作为一个土木学子,要想提高自己的就业竞争力找到理想的工作,要想赢得事业成就未来,掌握专业知识仅仅是一个前提,我们还要做的就是掌握一些能够为专业服务的工具。计算机作为新时代的产物,对各行各业从业人员来说都是举足轻重的。在校的我们应该努力学习计算机知识,掌握计算机编程,并将其应用到我们的学习及以后的工作当中,做一个懂计算机、懂计算机编程的土木人。
参考文献
【1】尹紫红,土木工程概论,西南交通大学出版社,2009;
【2】王晓敏,徐晓敏,Visual Basic程序设计(第二版),中国铁道出版社,2008;
【3】陈希哲,土力学地基基础(第4版),清华大学出版社,2003
作者简介
本文从作者的个人经历和教学实践出发,论述了计算机教学对统计学专业学生的重要性和必要性,希望能引起开设统计学相关专业的学校的重视,为应用型人才的培养提供理论依据和技术支持。
【关键词】
计算机;R语言;统计学
2013级以前我都是讲授《信息处理技术》这类大学计算机基础课程。随着教学的深入,发现学生的信息处理技术课上有很多题,无论是理论题还是操作题都涉及到了统计学的相关知识点。于是我很自觉的加入到统计学知识的学习中,从而也发现了统计学与计算机技术紧密结合的重要性。在我读大学的时候,也是整个中国计算机专业最热门的时候,几乎全国理工类大学或综合性大学都开设了计算机科学与技术这个专业。当时就听老师在争论计算机科学属于理学范畴,而技术属于工学范畴,两个合在一起命名的专业毕业时到底是拿理学还是工学的学位证书?反正我大四毕业时,学校认定的是工学学位。
据本人感觉计算机是一个工具,学好计算机的相关技术,对今后的工作有很大的帮助。计算机的技术又分两个方面,一个是硬件方面的技术,一个是软件方面的技术。计算机硬件我们俗称是计算机的“躯体”,计算机软件我们俗称计算机的“灵魂”。对于非计算机专业的学生而言不需要掌握很多计算机硬件方面的知识,但是与本行业相关的计算机软件是必须掌握的。虽说现今的软件设计的都比较人性化、智能化,甚至没有计算机基础知识的人只要动动鼠标就可以搞定。但是对于接受过大学教育的学生而言,掌握基本的计算机软硬件知识还是必要的。今天我们探讨的是计算机软件方面的技术,主要想说说计算机软件与统计学的结合。如何通过计算机技术让它在统计分析与预测中发挥作用。
统计学是以现象的数量特征为研究对象,利用自身特有的方法,探索现象发展规律的一门方法论科学。对于最基本的统计图表,微软公司办公软件Office中的Excel就可以完成。对于Excel2007以前的版本只能画简单的柱状图、饼图、圆环图、散点图等,还能运用统计函数做一些相关的计算,生成数据汇总表或数据透视表。Excel2007以后的版本在做统计分析前,要安装一个“数据分析”功能包,安装好后它会出现在数据菜单下的“分级显示”模块的右边。有了这个数据分析包就可以做时间数列分析(如:移动平均法、指数平滑法、趋势推测法)、假设检验(如:均值的假设检验、两样本方差的F检验、独立性卡方检验)、相关与回归分析等。
Excel是一个通用的办公软件,它有一部分的统计功能。而对于统计学专业的学生而言,他们可以使用SAS、SPSS、R。SAS全称STATISTICALANALYSISSYSTEM,它是由美国NORTHCAROLINA州立大学1966年开发的统计分析软件。SAS系统主要完成以数据为中心的四大任务:数据访问;数据管理;数据呈现;数据分析。但是由于它专业性强,需要一定的编程基础,而且要付费购买正版软件,所以只适用于大型公司或企业里进行统计分析。它是由美国IBM公司收购并继续研发的统计分析软件。它最突出的特点就是操作界面极为友好,输出结果美观漂亮。用户只要掌握一定的Windows操作技能,精通统计分析原理,就可以使用该软件为特定的科研工作服务。R语言给人的第一印象是免费开源,在某种程度上它与SAS,就像Linux和Windows的区别。它小巧好用,源代码开放,可以根据自己的需要进行更改,也可以在R的综合档案网络CRAN中下载安装不同的功能包。但是优点同时又是它的软肋,由于随意性大对于非常用函数还是自己写比较好,下载别人的函数包使用风险比较大。
下面我以一个班的学生成绩举例,从统计学的角度分析学生的文理科偏好,从而对R语言的编程步骤进行说明。这个例子首先把Excel表里的数据导入R,求出保留3位小数的样本相关系数矩阵,根据结果我们可以看出主成分的标准差,及相关矩阵的六个特征值和前两个主成分的累计贡献率为82.9%已经超过了80%。第一主成分对应的系数符号前三个(数理化)为负,后三个(语史英)为正,绝对值均在0.4左右,反映了理科和文科成绩的类别差异,有的学生是理科好文科差(如6,7,45号),有的理科差文科好(如30,49号);第二主成分对应的系数符号都相同,反映学生各科成绩的一种均衡特点,比如有的学生各科成绩均好(如26,33号)或者有的均差(如8号)。因此我们可以把第一主成分理解为课程差异因子,第二主成份理解为课程均衡因子。从这个例子中,我们可以看到计算机软件(R语言)对统计学分析起到了多么重要的作用。光掌握了统计学的原理不会用软件编程,靠自己手工计算的年代已过去,特别是大数据时代的到来,更应该借助计算机软件分析大数据背后的关联,为今后工作的安排和制定,提供预测依据。
因此就本人在高校工作十多年的经验来看,统计学专业的学生大一上学期需要开设计算机基础类相关课程,了解计算机的基本软硬件知识并且熟练掌握Office办公组件中的Word、Excel、Powerpoint。大一下学期再开设一门计算机编程语言,本人建议是C语言,在计算机众多编程语言中,C语言是基础,学好了它再学习其他的编程语言,只是写法上形容词的不同,算法思想是一致的。如果没有进行过编程语言的基础学习或编程思维的基本锻炼,想用好R语言进行统计分析也是不切实际的。而R语言是现今统计学界最流行的工具软件,作为统计学专业的学生应该很好的掌握并运用它。
关键词 程序设计;学习方法;编程实践
中图分类号:G642.4 文献标识码:B 文章编号:1671-489X(2012)28-0012-02
21世纪是信息时代,也是知识经济时代,计算机网络已经成为必不可少的交流工具,不懂计算机程序设计,就不能真正理解计算机的工作原理,进而无法充分有效地利用计算机这个工具解决学习和工作中的实际问题。大学生是社会发展的新生力量,绝不能落后于社会应用,而是应该高于社会的一般水平。大学生应该对自己提出更高的要求,学好程序设计是非常必要的。
1 学好程序设计的重要性
很多非计算机专业学生没有重视程序设计课程的学习,主要还是没有充分认识到其重要性。大家都知道办公软件是当今学习和工作中必不可少的应用软件,学生也能够认真对待,但是多数人仅限于基本操作和应用,没有研究其高级功能,所以很多人不知道办公软件也可以根据需要编程来实现更高层次的需要。另外,很多应用软件是非计算机专业的人员编写的,他们既掌握本专业知识,又懂得计算机应用,由他们来编写应用软件是非常有实际应用价值的。非计算机专业学生更应该重视程序设计的学习和应用。
总的来说,学好程序设计还有多个优点:1)可以作为今后工作和学习的一个辅助工具;2)更加深入地理解计算机的工作过程;3)能够培养学生严密的逻辑思维和抽象的思维能力;4)能够培养非计算机专业学生利用计算机解决本专业问题的能力。
2 非计算机专业学生学习程序设计的困难因素
2.1 动手能力不强
程序设计是高校非计算机专业学生的一门重要基础必修课程,该课程的教学目的是培养学生的严密逻辑思维能力,较深入地学习和理解计算机处理问题的思路和方法。学生在学习计算机程序语言过程中不仅要学习计算机语法知识,还要学会运用这些知识去编程,学会利用计算机解决本专业的实际问题。其逻辑性和实践性都很强,要求学生有较好的数学基础和较强的动手能力。而非计算机专业学生多数没有编程基础,同时计算机操作能力不强,所以学起来比较吃力。
2.2 缺乏主动性
非计算机专业学生开始学习程序设计时,感到新奇、好玩,听教师说明该课程的性质和用途后,都表示很有信心。但是随着学习的深入,陆续出现的语法规则与程序代码,让很多学生感到枯燥乏味,并产生畏惧心理,听课没有兴趣,缺乏主动性。
2.3 基础相对薄弱
学习程序设计需要较强的逻辑思维能力和一定的数学、英语基础。有的学生基础差,在学习程序设计时显得力不从心,不能掌握应用计算机解题的基本思维方式。尤其是所学外语非英语的学生,甚至连英文字母都不认识,记忆程序语言指令很吃力,对计算机程序设计产生畏惧感。
3 学好程序设计的方法
3.1 努力提高学习兴趣
兴趣是最好的老师,要学好程序设计,必须对编程产生兴趣。只有喜欢上编程,才有兴趣去研究它。实在没有兴趣的学生也不要灰心,尽量做到下面几点。
1)做好预习、记笔记和复习工作。课前预习,将不懂的知识点做好标记;课堂上带着问题听课,尽量理解教师所讲的重点内容,并有针对性和侧重点地做好笔记;课后要认真复习消化所学内容,完成作业。
2)主动编程实践。程序设计是高强度的脑力劳动,仅靠听和看是学不好的,必须加强练习。只有自己动手编写一些程序,才能对所学知识有更加深入的理解,同时会产生成就感,从而对编程产生兴趣,学起来才比较容易。实践出真知,在编写大量程序之后,你会发现很多新的问题,这些问题会指引你重新审视和理解程序结构等知识点。当你一一解决了这些问题,就会感到运用自如。
3)编程实践养成几个好习惯。实践前应认真将程序写在纸上,包括窗体界面需要哪些控件以及事件代码等,便于培养逻辑思维能力并节省上机调试时间;每次实践后要及时总结,把没有搞清楚的问题记录下来,请教老师或同学;多抽时间上机调试程序,遇到系统的提示信息,尽量独立思考加以解决,这一过程很重要。
3.2 以通过二级考试为目标
学习该课程后,可以参加全国计算机等级考试二级考试,拿到计算机资格证书,这样不但能够提高自身走向社会的市场竞争能力,同时也能极大限度地激发自己学习的积极性。
3.3 掌握良好的学习方法
有了编程的兴趣和目标,就有了动力,学习起来会事半功倍。同时还要掌握有效的学习方法,培养良好的学习习惯。下面介绍一下具体的学习方法。
1)打好基础。首先学好编程要具备一定的数学基础。这一点不难,有高中水平就差不多了。其次,学习程序设计要有一定的逻辑思维能力。逻辑思维需要长时间的锻炼,如果觉得自己在这方面有不足之处也没有关系,因为编写程序本身也是对逻辑思维的锻炼。逻辑思维能力的培养需要长时间的实践锻炼,需要反复的实践、观察、分析、比较以及总结,从而逐渐积累经验。在学习编程过程中,大家不必等所有知识都完全理解了才去实践,只要明白了大概,就可以动手去做。通过实践很多问题就迎刃而解了。
2)重要概念要理解。程序设计书中介绍的最基本的常量、变量、表达式、函数、条件语句、循环语句等概念,需要反复推敲,深入理解。在此基础上学会应用,不能机械地记忆语法、结构,而要明白其实际含义,针对这些语法、结构应用的小程序,应做到举一反三。
3)注重实践和研究。编程思想必须在实际的编程实践中去体会。编程初始阶段要经常自己动手设计程序,具体设计时不要拘泥于固定的思维方式,遇到问题要多想几种解决方案。另外可以和其他同学多交流多研究,每个人的思维方式不同、角度各异,通过交流可不断吸收别人的长处,有助于自己水平的提高。动手实践是创造性思维应用的体现,也是培养逻辑思维最有效的方法。
4)养成良好的编程习惯。编程入门相对容易,但入门后必须继续长时间地学习。在此期间要注意养成一些良好的编程习惯,编程风格的好坏很大程度会影响程序的质量。良好的编程风格可以使程序结构清晰合理,且使程序代码便于维护,如代码书写的缩进、变量命令的一致性、代码的注释等。
5)上网学习作为有益的补充。在网上可以学到很多不同的编程思想、方法、经验和技巧,有大量的工具和作品及相关的辅导材料供下载学习。很多网站提供的内容丰富而且实用,可以下载一些技巧性的文章、源代码等,课余时间慢慢研究,吸取经验,对于后续的学习是很有好处的。
6)学习应循序渐进。学习程序设计可采用“理论——实践——再理论——再实践”的方法,温故而知新,循序渐进地学习效果会更好。具有一定的程序设计基础知识后,就可以开始编程实践,从实践中发现问题,要及时加强计算机理论知识的再学习。再次研究之后,很多以前遇到的问题都会迎刃而解。因此在学习编程的过程中不能急于求成,要不断地针对应用中的困惑和问题进行深入学习,每一步都要稳扎稳打。这样经过反复地学习和实践,编程水平就会有很大的提高。
关键词 基础编程工具;初中信息技术;计算机技术
中图分类号:G633.67 文献标识码:B
文章编号:1671-489X(2017)07-0014-02
1 前言
过去在初中信息技术课程教学中,很多教师不敢尝试采用基础编程工具进行教学,但是从实际上看,基础编程工具有助于初中学生逐渐掌握一些基本的电子计算机操作方式,特别是基础编程工具对于学生的综合电子计算机的运用思维有着较为积极的辅助作用。未来电子计算机技术的发展会更加日新月异,初中生在接触信息技术方面的知识时,也应该适当地接触一些基础编程工具,这样才能够在学习过程中逐步提高应用技能,随之适应未来的社会需求。当前对于初中信息技术方面的教学,很多教师已经意识到综合运用多种信息化教学手段的重要性,克服过去在编程工具的应用上缺乏综合运用思维的缺憾。因此,应该重视初中信息技术与基础编程工具互相之间的结合,并有针对性地进行日常教学,只有这样,才能提高学生的计算机技能和应用水平。
2 基础编程工具概述
目前,电子计算机技术已经发展到一个相对比较深入的阶段,特别是信息化产品更新换代速度非常快,智能化的移动电话还有平板电脑等都已经得到广泛推广。在初中阶段,很多学生已经逐渐接触一些信息化的工具,他们对于信息化的认知也随着年龄的增长逐渐深入,并且也影响了他们在信息技术类课程学习时的学习偏好,他们对于电子计算机技术也有自己的兴趣,这些都会影响目前初中信息技术方面的教学方向。
针对初中信息技术教学的发展特点,基础编程工具的引入有一定的必要性。编程工具实际上是电子计算机千变万化技术的根源,对于当代的信息技术发展有着非常重要的推动作用。但是过于深奥的编程技术内容不利于学生了解和掌握,所以只有从简易的基础编程工具入手,引起学生的学习兴趣,在此基础上逐步深入相应的技术内容,并鼓励初中生学习电子计算机信息技术课程。当前基础编程类的工具主要包括以下几类。
第一种,Hopscotch技术类的编码编辑类软件。Hop-scotch技术主要是为每一个初步学习编程工具技术的人提供基本编程设计工具。运用Hopscotch这一类技术可以相对轻松地进行教学。Hopscotch可以拖曳各类代码的方式进行程序开发,其特色就是对于编程代码符号的个别控制,在运用上相对比较便捷。不过Hopscotch软件主要是依靠iPad平板进行编辑。而Scratch软件则是一种免费的编程编辑方式,其允许初学者对动画或者游戏等通过在线社区进行分享,可以帮助学生更进一步地理解基础编程工具的操作模式,帮助学生更深入理解编程的基础概念,而且也以分享的方式提高学生学习编程的兴趣[1]。
第二种,Alice等基础的动画编程工具。Alice软件是一种免费的3D动画编程软件,这样的一种软件可以在互联网上进行交流和互动,可以让学生接触到电子计算机的动画编程模式。学生通过Alice软件能够进行简单的视频动画编辑,体会动画编辑的乐趣,掌握基本的立体3D编辑模式等。Tynker软件与上述软件也相仿,这种在线编程软件也主要是让学生参与动画的编辑过程。因为Tynker软件是基于可视化的编程语言,这样也就不需要学生掌握相对比较复杂的编程语法,只需要学生将这些可视化的代码组合在一起,就能构成一个具体的项目。
第三种,Hackety Hack软件类的编程教学工具。Hackety
Hack这一类的编程工具主要对学生进行基础编程教学,使用Hackety Hack软件的学生不需要掌握编程经验,而是以开发型的简易编程语言进行桌面应用开发,而且更侧重于进行教学和引导,对学生编程能力的发展有比较大的推动作用。这类软件与Kodable软件类似,主要是让学生以游戏的方式掌握编程的方法,特别是游戏和编程的指令互相之间结合,并且提供不同层次和课程的编程教学内容。
第四种,RoboMind软件等属于游戏编程教学类的软件。RoboMind主要是让W生在操作游戏界面之中逐渐学习基础编程的工具和方法等。从RoboMind软件的内部结构上看,其对于编程代码采用如同积木的方式,让学生逐步学习基础编程的方法,这种方式也是以游戏作为主要的引导模式。而类似Etoys和Waterbear等编程软件工具包,也是让学生采用拖曳游戏的方式,以可视化的编程语言作为基础,让学生在不需要编程语法的基础上创建一些新的文件,根据自己的实际状况进行操作[2]。
从上述四种类型中可以看出,不同的编程教学软件和工具,都具备各自的特色,其出发点都是让日常的教学更加便捷,帮助学生更进一步掌握日常的编辑方式,让学生更好地参与编程学习。这种学习有其便捷性,也有助于初中学生提高学习编程方面的兴趣,实际上有助于带动学生更进一步地学好信息技术方面的课程知识。
3 基础编程工具在初中信息技术课程中的应用
从上述分析中可以看出,基础编程工具是多元化的,初中信息技术教师在进行教学过程中,应该把握当前基础编程工具的各种类型所呈现出的特性,有的放矢地鼓励学生运用这些编程工具,更好地进行初中信息技术课程教学。特别是当前初中学生普遍缺乏电子计算机编程的基础,在语法的掌握上基本处于空白阶段,因此,初中信息技术教师应该抓住学生在学习信息技术方面的主要难点和重点,用好基础编程工具进行教学,让学生真正学会运用基础编程工具探索和解决问题。
从当前的实践状况看,基础编程工具在初中信息技术课程中的应用主要从以下几个方面着手。
1)采用游戏类的编程教学软件,引导初中生逐渐形成学习信息技术的兴趣。初中生还处于一个年龄相对较低的阶段,他们往往好奇心比较强,喜欢玩一些游戏。初中信息技术教师应该抓住初中生的这种普遍爱玩的心理,通过游戏类的编程工具进行逐步引导,让学生通过拖动编程代码的一些模块,或者在游戏当中体会电子计算机编程的基础知识。
初中信息技术教师应该全面地分析学生在游戏过程中出现的疑难,运用在线教学互动平台及时和学生进行交流,这样可以让学生及时解决自己遇到的难题,进而不断地提升对电子计算机编程的热爱,让学生真正运用好这种游戏类的工具,同时要避免学生沉溺在游戏过程中。教师可以运用电子教学平台上的远程监督控制,对学生在编程工具游戏中的具体行为进行引导和监督,帮助学生逐渐建立起尝试运用编程工具进行编程的兴趣和信心。
2)初中信息技术课程要注重采用一些教学类的编程工具,引导学生逐渐掌握这些编程模式,从而带动学生逐渐掌握初中信息技术知识。虽然初中信息技术课程之中并没有真正将编程方面的知识纳入知识系统框架里,但是初中学生适当地掌握一些编程工具和应用技术还是有比较大的必要性,因为这样有助于学生逐渐形成电子信息化编程的思维,更好地掌握信息技术课程中相对比较难的内容。如办公室软件中的一些基础操作,实际上也和部分简单的基础编程手段是相似的,初中信息技术教师可以通过引用的方式,让学生逐渐接触一些教学类的基础编程方面的工具,进而更好地把握住初中信息技术课程里的部分重点和难点。从本质上看,很多电子计算机方面的知识和内容,都会体现出一定的信息化编程思维,这些思维的普及和推广,也可以通过教学类的基础编程工具进行引导教学,以此让初中阶段的学生逐渐热爱信息技术课程知识,提高学生在信息技术课程方面的综合运用技能。
3)初中信息技术课程也应该相对注重让学生参与到三维动画编程运用中。因为很多初中学生比较喜欢观看动画,他们对于三维动画的热爱和关注,也可以成为初中信息技术课程教学的一个重要突破点。初中信息技术教师可以让学生更进一步地尝试运用基础编程工具,对一些简单的三维动画进行编程和设计。在初步教学过程中,信息技术教师要手把手地进行教学,鼓励学生积极地进行尝试,对于学生在编辑三维立体动画过程中出现的一些问题,可以通过面授或者是在线控制教学等方式进行指导。学生在基本掌握了动画基础编程工具的运用方式之后,应该让学生适当地完成一些力所能及的任务。
初中信息技术课程的教学也应该注重以引导为主,特别是观察学生在编辑过程中的进步和困难,让学生逐渐掌握电子计算机的一般编程模式,在基础编程工具和教学软件里面体会编程的基本内涵,从而为学生更进一步地学习信息技术知识奠定良好基础[3]。
综合上述分析,初中信息技术课程的教学与基础编程工具的结合,需要关注学生作为信息技术课程教学的主体性,让学生主动地进行学习和积累经验。在学生尝试过编程的行为和成果之后,初中信息技术教师也应该让学生针对自身的薄弱环节进行调整,更进一步调动学生学习信息技术的自信心等。从培育的角度看,二者的结合仍然是将出发点和落脚点归结在学生这个学习主体上,这也是初中信息技g教师应该要关注的内容。
4 结束语
结合当前初中信息技术课程教学的发展可以看出,初中信息技术课程应该针对学生的学习情况,适当地加入一些信息化编程的技巧,特别是基础编程工具的融会贯通,将有助于学生的全面发展和进步。未来的信息技术课程必然要面对更大的知识量,如果初中信息技术教师没有以学生的真正需求作为中心,那么就没有办法让学生全面发展。因此,初中信息技术教师应立足于当前初中信息技术课程教学实际,要善于运用基础编程工具,带动初中生在信息技术课程学习上取得更好的效果。■
参考文献
[1]朱彩娟.慕课在小学数学教学中的应用[J].数学学习与研究:教研版,2015(20):89.
[2]徐瑾.网络语言给予中学语文教学的几点建议[J].课程教育研究,2014(35):63.
[3]董竞霞.浅谈初中英语学习能力的培养[J].教育科学,
2015(18):128.
关键词 软件技术基础 教学实践 教学方法
中图分类号:G642.0 文献标识码:A 文章编号:1002-7661(2012)23-0085-01
一、引言
近年来,计算机在科学研究、工农业生产、商贸、气象、国防以及居民生活等领域的应用不断深入。随着计算机科学技术的发展,计算机的应用领域和范围不断扩大。其中,软件技术是计算机技术的重要组成部分。随着计算机应用领域的扩大和深入,非计算机专业的工程技术人员掌握必要的计算机软件技术基础知识是提高计算机应用水平的重要途径。
“软件技术基础”课程是“大学计算机文化基础”和C语言等相关程序设计课程的拓展和延伸。该课程是一门专业基础课,课程内容涉及到数据结构、操作系统和软件工程等。重庆邮电大学自动化学院在开设了“C语言程序设计”这门课程的基础上,开设了“软件技术基础”这门课程。由于本课程学时较短、内容较多,部分内容较抽象,同时学生的学习基础差异较大,如何利用有限的学时来教好本门课程是一个值得探讨的问题。
二、教学实践探索
(一)提高学生的学习兴趣
兴趣是学生最好的老师,也是他们学习的巨大动力。对该门课程产生兴趣,将会得到事半功倍的效果。那么怎样才能提高学生的学习兴趣呢?通过教学实践我们发现,在开始新知识点学习之前,列举一些相关应用案例,并让学生参与应用案例的分析,很快就能调动起学生的学习热情,其注意力也非常集中。此时,迅速切入新的知识点的讲解,学生会很快跟着老师的思路,学习效率非常高。
(二)教学内容的适当扩充
在本课程的教学中,结合重庆邮电大学自动化学院的实际情况,我们对本课程的教学内容适当扩充。本课程的授课对象是大学二年级学生,仅在大学一年级学习了C语言编程,没有C++语言的基础。在课程开始利用一次课的时间,给学生补充了C++编程语言[3]的类、模版及基本的输入输出等相关知识。有两个目的,一是为了在后续教学中让学生对本课程内容有更深入的认识,让学生了解软件技术基础的一些编程思想是否与编程语言深度相关?二是让学生充分利用课余时间好好掌握一下C++知识,拓展了学生的知识面,增强学生的自学能力。也为本课程的后续学习打下基础。
(三)多编程语言、多结构形式的实例对比教学
在教学实践中,针对某个新知识点,先进行理论讲解,重点让学生掌握新知识的应用特点以及编程思想等。然后通过编程实例,重点对知识点应用进行讲解。在实例讲解过程中,采用对比的方式进行,包括多种编程语言实现、多种实现方式的对比。举例来说,在讲解“栈”这个知识点讲解时,先讲述“栈”的特点及其相关操作,如“后进先出”的特点,初始化栈、入栈、出栈、读栈顶元素等等,然后针对“栈”的操作进行实例讲解。其中,栈的操作分别采用c语言和C++语言来实现,并针对两种语言的实现方式展开对比,重点介绍编程思想。此外,对于“栈”的结构形式也有两种,一是采用顺序表的形式,一是采用链表的形式。针对这两种不同的结构形式在进行对比讲解。一个应用案例,通过多种实现形式的讲解,让学生对“栈”这个知识点有了更深刻的认识。
(四)适量的课后作业
对于“软件技术基础”这门课程,必须经过一定量的编程练习才能够更好地巩固所学知识。然而,每个学生学习基础和完成作业的认真程度不同,甚至也有作业抄袭现象,因此作业的实际效果不甚突出。为了克服上述弊端,我们在作业量以及作业题型的选择上进行了适当的改变,仅布置少量的且较典型的题目。另一方面,在作业的完成方面,我们也改变了传统的作业提交形式。我们采用分组完成作业的形式。两个或三个同学分成一组,在完成作业的过程中可以讨论,尤其是编程思想、编程技巧方面,通过讨论学生能够对所学的知识有了更加深刻的认识,在编程方面能够相互取长补短,最终个人编程能力得到了提高。
三、教学效果检验
“软件技术基础”这门课程还设置了实(下转第88页)(上接第85页)验教学环节,每次实验都针对理论教学中的知识点,结合实际应用设计了合理的编程实验。通过实验环节,能够很好地检验教学效果。在进行了教学改革实践之后,从实验的完成情况来看,学生实验的完成效率和质量都有了较明显的提高。
一、概述
测量平差是测绘学科重要的专业基础课,随着测量领域对于精密数字获取创新手段不断涌现,将观测数据集体体现在多源化、多样化,测量平差的研究对象以及计算方法也将不断发展与创新。这就给误差理论与测量平差教学的改革与研究提出了更加新型的要求。
在本科一年级学生学习了《数字测图原理与方法》课程,紧随着对数学基础课程诸如《高等数学》、《线性代数》、《概率论与数理统计》等课程的学习以及《计算机基础》、《C++程序设计》等计算机核心课程。现在学生已初步建立了误差的基本概念和测绘理论基本框架,具备了必要的数学基础知识和简单编程技巧。本科二年级开设了测量平差的入门课程《误差理论与测量平差基础》。在误差理论的学习中,了解到测量平差的主要目的是确定观测量的最佳估值并评定其精度,结合四种经典平差模型列出相应的条件方程或误差方程,得到估值主要是解算法方程,法方程的解算是一个重要内容,有的矩阵计算已经超过人工计算的限度,然而对于一些观测量非常庞大的数据、往往花费了大量学时讲解如何计算。
因此,学生需要达到高效的学习效率、老师需要达到先进的教学目的,一些测绘专家学者在平差领域中以计算机为载体,结合专业性质提出了测量平差程序设计软件。程序软件可根据课程设计任务提出的具体要求解决实际问题。这样可以让每个学生在相同的教学要求下,各自处理的平差内容都不一样,能够培养学生结合所学计算机编程知识独立解决实际问题的能力。将计算中所用的部分计算编制成函数,供以后学习以及实地测绘工作编程时调用。
“测量平差程序设计”是一门涉及多领域多维度多学科交叉的一门课程,涵盖了计算机基础知识、数据结构、数学学科、程序设计、测绘学基本理论等多门专业、学科知识,旨要培养测绘专业的学生利用计算机编程技术解决空间数据的计算、分析等问题的基本技能,利用所学测绘专业理论知识分析、解决实际测量中所遇到的问题的实践能力[1]。现阶段是信息化、结构化测绘空间数据获取的海量、复杂、多维和快速性的时代,由于传统计算的局限性导致手工处理空间数据已经不能满足生产需要,必须通过有效的计算机程序进行处理,因此,开设“测量平差程序设计”课程,掌握基本的程序设计方法和技能是我们这个创新时代和行业发展的迫切需要[2]。
可是在测量平差程序设计教学方面,也会出现很多诸如以下的一些问题:
1.学科之间衔接不紧密。“测量平差程序设计”是集综合性、实践性于一体的理论与实践相结合的课程,运用的时候会用到计算机编程语言(如C/C++、VB等)、测绘学基本理论(误差理论与测量平差、数字测图原理与方法、3S等),计算机基础知识(如数据结构、数据库原理、计算机绘图等)和其他基础学科知识(如高等数学、工科数学分析、数理统计与概率论等)。这些知识之间没有必然的逻辑理论体系,学生可能由于某一方面的知识缺乏,而对“测量平差程序设计”课程的学习兴趣大大减少[3]。
2.学生认识问题不全面。很多我们本专业的学生以及其他非工科学生对我们测绘工作的认识只停留在“扛仪器搬尺子外业测量,用软件拿铅笔内页成图”的水平,认为平差程序设计是软件工程专业学生该做的专利,因此,没有足够的重视程序设计的学习,投入的精力也很有限甚至根本就是完成任务式的学习,相反还是有少量确实对计算机编程感兴趣的学生才会花大力气学习。另外,很多学生是到大学才开始接触计算机编程,对一个新的学科还没理解透彻,导致先修编程语言课程学习效果不甚理想,对程序设计没有信心,所以对“测量平差程序设计”课程产生消极、抵触情绪。
3.老师教学模式需创新。高等学校的教学改革是一个进行时而没有完成时,很多高校教学主要是以“老师在讲台上讲,学生在下面听”,所谓的“灌输式”的教学方法。这种教学方式基本是按照选定的教材把选定的章节内容从头至尾照本宣科“灌输”给学生[4]。这种方法能够在规定的教学日志内完成较多的教学内容,但是留给学生的思考时间太少,不能起到“醍醐灌顶”的效果,对于专业课程里面内容较抽象、晦涩难懂的“测量平差程序设计”课程,学生学习效果不会太理想。
由于这些专业性质的问题和编程技术在学习中非常重要,在本科阶段增加在这个领域继续学习信心,学生教师必须准备的非常充分。我们需要实践经验尤其是常见的编程结构。对于初学者编程使用编程语言解决实际问题不是一件容易的事。他们需要彻底了解一种语言的语法和语义完全理解,然后转换,使用自己的心理模式完全将自己的理解转化为计算机代码。学生们应该参与创建基于计算机的问题,并提供可能的解决方案。这种方式,他们不太可能从这项研究中获益的编程的主题。导师会指导选择和帮助设计和提出解决方案。大部分的工作应该是由学生完成的。基于此我们需要提出一种学习方法,叫做主动学习法。
二、主动学习法
主动学习是学生参与阅读、写作、讨论或解决问题、促进分析、综合和评价等活动的一个过程。这是一个计划好了的一些活动和事情,邀请了这些参与者通过运用,互动和分享经验教育过程的一部分。在教育活动中交互式成分偏向于这个培养目标。主动学习促进思考,解决问题,批判性思维,操作材料、分析、综合和评价信息。
在众多主动式学习的描述中,学生自主解决问题,举一反三,尝试新技能以及完成作业任务都是依靠他们所学的知识或者已经具备的能力。构建主义者认为学习是一个获得创意和知识构建的过程,而不是一个被动的过程。换句话说,学习需要个人积极主动而且需要参与构建和建设个人的心智模式。
主动学习是现今被广泛接受的高品质形式的教育。研究表明,学生比起传统的演讲的话更喜欢提升主动学习的策略。研究人员一致认为学习涉及到构建我们自己的想法。他们建议有结构的设计、有结合力的材料然后鼓励学生积极参与进来。主动学习是涉及学生直接和积极参与学习过程本身。这意味着学生不是简单的接受口头和视觉上的信息、接收、参与做一些事情,例如说、听力、写作和阅读程序并反映个人或小组。
深入学习法讲述的是如果我们的学生都是编程的初学者,他们刚刚学习了长达一个学期的C++程序课程[5]。一本面向对象语言计算机教育科学的著作看起来不是一项容易的任务。在大学里面,这一门课程一般的学生很难通过。这门课主要是偏向于面向对象的C++语言特性。现实生活中没有很多时间来做应用程序开发和解决问题。我们的学生由于知识很薄弱使得他们通过记忆分离事实。
我们的课程将重点放在教会学生解决问题所需的技术,学生充当老师能够教授高级学校使用编程语言解决问题。学习者应该学会通过整合新知识与他们已经获得的知识。教师应该明白心智模式改变缓慢,并可以改善通过学习者的积极参与。面对心理模型不会在其中工作的情况,他们应该寻找意义,这个意义不是被直接指令所强加。学生应该自己寻找在鉴于先前的知识和经验在材料和解释知识之间的关系。
深度学习是一种学习方法和态度,学习者使用的高阶认知技能等能力分析,合成,解决问题,并且认为元认知为了构建长期的理解。它包括新思想的批判性分析,联系他们已知的概念和原则,这种理解可以用于解决问题的新的不熟悉的环境。深入学习者反思他们所学的个人意义。他们是自主的、几乎自学。但他们也与学习者合作,高元认知和学习技能。
目前的理论认为不关注教师教学,但关注老师和学生之间的有效沟通。建构主义理论认为学习方法源于学生知觉的教师的要求。教练的作用在形成这些观念是至关重要的对学生所学内容的理解。也是至关重要的理解,教师不直接产生深度学习的学生。主要是学生的努力,对深度学习很重要。
导师需要帮助学生看到他们要做的工作的目的,并监督他们的成功。主动学习需要发现,知识获取是一个持续的过程,和大量的不确定性。发现发生在学习者的大脑,刺激搜索,商店和解决具有挑战性的问题和机会深入去探索它们。犯错误并改正是学习过程的一部分,而不应该劝阻学生学习更多。
我们的目标是促进深度学习的原则和技巧,并创建独立的沉思的终身学习者。我们认为实现这需要学生的积极参与。主要建议摆脱文学教学不仅应该把焦点放在学习新的语言特性,但也的组合和使用这些特性,特别是基本程序设计的根本问题。学生没有给出足够的指导如何将程序块结合在一起。良好的教学需要教师保持最初的事实,模型和规则简单,只有扩大和完善学生收获的经验。
心理模型也是一个学习方法的内因所在。当我们在教基础编程这些编程概念时,解决心理模型的类型是很重要的。模型对建构控制,数据结构,数据展示,程序设计以及问题域的理解是至关重要的。主动学习文献可以鼓励学生积极参与,探索编程相关信息,通过例子或者用自己的话来解释,在解决问题和创造性转移两方面表现的更为出色。
循环句、条件句、数组和递归都被认为是语言特征,而这些语言特征都是有极大问题的,
它们可能会因为特别关注而受益。然而,一些学者认为,潜在问题的最重要的缺陷是将方案和设计说成是一个实际的程序。实际上频繁的编程练习是解决这一问题的关键[6]。
三、基于主动学习的平差程序设计教学模式
主动学习涉及三个基本步骤:
1.告诉学生自我组织成2~4组和每组随机指定一个记录者,如果需要就写下来。
2.提出一个具有挑战性的问题,给出足够的时间让大多数组织完成任务或取得合理的进度,一个问题可以细化成几个小问题,几个小步骤并且把每一步当成一个独立的活动。
3.呼吁一些个人或小组来分享他们的反应,然后讨论。
基于主动学习的平差程序设计教学模式包括四个阶段:开始、行动、讨论、总结。
第一阶段:开始。
去做好测量平差程序设计的基础工作不是一件容易的事。它所运用的知识非常深而且很广泛,在学校课堂有限的时间内,要使学生快速把握学习目标以及学习内容是一个难点,是教学任务设计的首要工作。结合这个问题,从学生主观认知每一个平差问题的习惯出发,一些非常有教学经验的老师设计了比较系统的课堂教学体系:程序设计语言与平台发展史―面向对象C++编程语言―编程平台适用性及选择―测量科研项目及企业具体需求的工程案例与实践教学[7,8]。在教学中主要以工程案例为主线,提出由简单到复杂的经典教学模式:测量典型函数设计―GUI程序设计―菜单程序设计―测量控制网精度估算与平差程序设计―综合应用程序设计。
为此,学生教师提出的一个具有挑战性的基于主动学习的开始,一个他们不熟悉的开放式的活动。特别是一个开始应该加强和培养有意义的学习,应该有一系列广泛的有潜力的问题、难题、态度和看法。一个学习者的开始应该是复杂且相关的。根据开始的主要目标,活动可以单独、成对或者以小组形式运行。
引入一个新的话题的主要的目的之一是训练学生的老师如何面对和处理不熟悉的情况。在这种情况下,计算机科学教育需要学生的老师考虑多个反应选项。为了实现这个目标,必须设置超过一种能够开始的方法。此外,一种设计良好的开始能够暴露学生在电脑科学与教育方面丰富多样的知识。整个模型中,这个庞大的创意包括讨论、推敲,精练和重新组织。
第二阶段:行动。
学生的工作在开始就交给他们,这一阶段的持续时间由开始阶段的复杂性及其目标所决定。在课堂上老师讲解了诸多理论、演示了很多经典例子,对平差程序设计的代码进行调试以及编码和调试所设计的流程图。由于在学校安排的教学时间是有限的,想要融会贯通本课程设计不是一日之寒,千里之行始于足下,所以很遗憾的仅能对相近(或相似)内容选择一项基本内容进行程序实现,对于测量平差经典模型里面的其他内容,还需要同学们利用课余时间,回顾老师课堂上讲授的,模仿课堂教学内容并且独立完成,纸上来的终觉浅,绝知此事要躬行。因此,课下练习是课堂实验教学非常有必要的。在学生通过老师讲授和课外练习完成测量平差数据处理程序的每一个模块后,引导学生将各个独立的程序模块集成为一个完整的程序系统,这个任务可以通过课程设计来完成,可以做一个“测量平差数据处理系统”软件的界面和接口,将已经调试好的程序模块集成到软件系统。
第三阶段:讨论。
测量平差程学设计课堂教学应从传统的模式化、单一化和“灌输式”教学方式向引导式、研究式教学方式转变。“测量平差程序设计”课程融入了高级程序语言,以及测绘科学相关算法等内容,一般采用多媒体进行讲解与学生进行交流互动,程序如何编写、如何运行、如何调试等内容,都应演示给学生看,学生出现的问题也需要在互动的同时进行探讨。由于编程问题里面比较多的测量计算过程非常复杂,涉及到大量的数学公式及推导过程,加大学科之间的交流,同学之间,师生之间问题的探讨是非常有必要的,这样互相学习互相进步,再难得问题都会迎刃而解。
同时,在上课的时候老师可通过提问和布置作业的方式培养学生自学能力和创新能力。在必要的一段时间以后,在此期间,学生们要么单独工作、要么成对工作,要么是小组工作,呈现聚类情况。
在这一阶段,结果、主题、思想,起源于活动阶段,并对此进行了讨论。学生完善他们对于概念、态度和理念的理解,作为他们对于专业建构过程的一部分。
老师强调学生提出的重要想法,并强调从这些想法派生出的想法。为了表达在一般情况下,大多数数学概念不存在唯一解的情况,还有开始阶段提出的特殊活动,老师不能判断学生的立场和意见。同时,同学们都被鼓励通过提交不同的观点合材料反应和表达他们的意见和建设性的批评。
第四阶段:总结。
这一阶段将话题的上下文和强调的概念进行了讨论。它不同于前三阶段的管理。首先,它明显缩短。其次,在前三阶段,学生是主要的对象,但是在总结阶段,课程的老师需要走向前沿。老师结束,并突出在前三阶段提出的或讨论的中心概念、教学理念,概念框架以及其他相关主题[9,10]。同样重要需要注意的是,学生字前三阶段可以提问,并且在老师的指导下作为一个建造者。总结可以用不同的形式表达,如框架构想、主题与其他主题之间的关系列表、概念地图等。
四、基于主动学习的教师任务
基于主动学习模型中老师的角色:老师必须创造一个全班参加的支持性的,充分鼓励学生活跃性的知识环境。
在第一阶段,显示了开始阶段的教师。以测量科研项目的工程案例为主线,采用多媒体技术辅助教学,在课堂现场演示编程的主要步骤与核心代码,并演示编程效果,给学生以直观的学习印象。
在第二个行动阶段,老师不断的在不同的小组和个人之见听取意见,并留心他们说了什么,还要鼓励他们深入思考。当需要的时候,老师应该引导学生的讨论。当然,老师的引导应该鼓励不同的想法,不要给定一个确切答案。结合测绘行业企业对数据处理方面程序软件的需求,选择有针对性的教学案例,使学生对程序设计产生浓厚兴趣。
在第三个讨论阶段,老师应该作为一个好的倾听者,并需要留心有关键建议的学生。特别的,老师应该鼓励学生解释他们为什么提出自己的建议和如何深化自己的建议,并建议探索不同的路径,培养反思的过程,但不要对学生的意见进行评判。老师要强调其中的重点,并提出不同的想法之间的可能的联系。
第四阶段总结时,建立课下学习兴趣小组,借助网络教育手段,分工合作,共同完成综合性实验项目或来自企业直接需求的编程项目的设计与代码编写。要总结前一阶段提出的观点,总结强调要对要点进行讨论。老师可以补充新的想法与类别,但不建议有学生提出。
五、总结
关键词:计算机系统结构;多核;FPGA
随着计算需求的不断增长,由于复杂的芯片工艺与功耗成本限制,处理器的性能提升从原有的主频提高转为多内核发展。很快,一些大型机制造厂商,如IBM、Sun开始利用并行计算设计出了多核处理器(例如:IBM推出的CELL异构多核处理器,Sun公司推出的OpenSparc T1开源多核处理器[1]),这些处理器在一块芯片上集成多个计算内核,成倍地提高了计算速度。2006年,以Intel与AMD为代表的处理器制造商在年初和年底相继推出双核、四核处理器,紧接着,在2007年1月,Intel展示了配置两个四核处理器的八核计算机,这标志多核处理器开始全面进入市场,宣告计算机真正进入多核时代。
所谓“多核(Multi-core)”,即指一块芯片上集成多个处理核,各自拥有独立的控制和计算部件,无需共享关键资源。多核技术的发展给大学计算机教育带来新的课题,即在多处理器环境下,计算机系统结构、计算机操作系统、编译原理和应用软件的编程模型等都发生了很大的变化,促使大学计算机的教学需要做出针对性的变化。
计算机系统结构(Computer Architecture),作为研究计算机系统结构演化以及影响计算机硬件与软件系统设计的一门重要课程,在介绍计算机系统结构原理、分析设计方法、性能评价、发展趋势和新的实现技术上,需要增加多核技术这个重要的新知识点。在过去相当长的一段时间里,由于不具备开设计算机系统结构和多核技术相关实验的硬件平台和软件环境,
国内很多高校开设计算机系统结构课程时均未开设该课程的实验,特别是多核技术方面的实验,以至于学生没有实验教学和体验式实践而很难掌握该课程的知识。
为了更好地应对新的“多核”时代,电子科技大学的计算机科学与工程学院、信息与软件工程学院(原示范性软件学院)从2007年开始在计算机系统结构课程教学中引入多核技术。一是在理论教学上增加处理器体系结构、系统架构和程序设计内容,从三个方面给学生展现了一个比较完整的多核技术概览图景;二是在实验平台建设上设计多核实验,从实践环节上来锻炼学生的动手能力和提升其创新能力。
1实验教学的现状
在计算机系统结构课程中设计多核实验,须从计算机系统结构与多核知识的课堂教学成果入手,把握多核技术的理论教学动态。然后重点调查国内高校在多核实验教学方面的研究现状,为计算机系统结构中的多核技术实验设计提供必要的技术支持和可行性研究。
事实上,计算机系统结构课程重在培养计算机专业本科生的抽象思维能力、自顶向下系统分析和创新能力。全国重点和普通高校中几乎都开设了这门课程,出现了大量的课程教学与教研成果[2-12]。虽然课程教学成果多,但是实验教研成果小,而且还缺乏多核知识点的引入或多核体系更新不足。
作者简介:于永斌,男,副教授,研究方向为计算机系统结构、大规模集成电路设计与应用。
关于多核技术,清华大学的王小鸽[13]提供了理解多核技术、并行计算与未来计算机发展的视角。薛巍[14]从并行计算基础、高性能计算前沿技术研讨课、多线程/多核CPU逻辑设计短期课程等方面介绍了清华大学多核课程建设成果。吴继雁[15]简要地分析与总结了多核技术及发展趋势。北京交通大学计算机学院的刘近光和梁满贵[16]介绍了基于MIPS体系结构的多核处理器特点。浙江大学的陈天洲等[17-21]介绍了多核程序设计课程和进行了多核精品课程建设探索与实践,并主持了教育部骨干教师多核技术培训,对多核技术的教学科研做出了很大的贡献。武汉大学电子信息学院的杨剑锋等[22]介绍了“多核架构及编程技术”这一教育部-Intel精品课程建设成果。北京工业大学计算机学院的方娟[23]探讨了多核教学内容和教学模式。与这些多核技术的教学成果相比较,由于多核硬件实验平台与软件环境的难构造,使得多核技术方面的实验研究成果特别少。根据作者的可查文献,中山大学教学实验中心的程小雄和伍丽华[24]进行了基于FPGA的多核技术课创新实验探索,介绍了在现场可编程门阵列(FPGA,Field Programmable Gate Array)芯片和SoPC(片上可编程系统)、NOIS-II等工具软件所组成的软硬件平台下,开展多核技术课程创新实验的研究;并在新组成的多核系统中,移植和扩展了µC/OS-II操作系统,还设置了相关的实验环境和若干实验项目,对提高学生的综合实验能力具有积极的作用。
通过对计算机系统结构和多核技术课堂教研与实验教学动态的充分调研,我们不难得到多核技术在国内课堂与实验教学中的实施状况,虽有新增多核课程或修改原有课程(如:计算机系统结构、高级计算机体系结构或高等计算机系统结构)的教学内容,但较少涉及多核技术方面的实验教学。基于这样的背景,在计算机系统结构中设计多核实验,这对学生的实验能力和综合素质提高具有特别重要的作用。
2多核实验的设计
在计算机系统结构课程中设计多核实验,需要把握多核本质和其技术要点。多核的本质是为了解决高性能计算和并行计算问题,它在硬件和软件两个方面改变了传统的计算机系统结构。由此,多核技术的发展使得计算机系统结构的教学发生了变化,这种变化主要来自于多核技术所带来的新知识点。多核技术所涉及的知识点可归纳为硬件和软件两个方面,具体如下:
1) 多核硬件方面的知识点。
(1) 多核下的硬件设计技术,包括Cache与存储一致性、网络互联、IO管理;
(2)多核芯片与传统单核微处理器的区别,多核SoC(System on a Chip)芯片技术;
(3) 嵌入式多核芯片技术以及典型多核芯片:Cell、OpenSparc、Intel双核芯片、AMD双核芯片等;
(4) 并行体系与多核体系结构、多核平台结构与芯片组支持技术。
2) 多核软件方面的知识点。
(1) 多核操作系统、多核系统软件对并行编程的支持、多核API优化函数库,多核平台上编译工具;
(2) 多线程编程对多核的支持,Windows/Linux多核多线程编程技术;
(3) OpenMP多线程编程及性能优化,MPI (Message Passing Interface)编程及性能优化;
(4) 多核多线程程序的性能评测方法与工具。
基于上述的多核知识点,联系计算机系统结构原有实验,可在硬件平台和多核软件工具上设计多核实验。
多核实验,包括两个方面的实验内容。一是在FPGA芯片上设计多个同构或异构处理器内核,并进行操作系统的移植,最终做出一个可实际运行的多内核计算机系统;通过该实验,可增长学生对实验的兴趣,更深刻理解多核技术的知识点。二是Windows/Linux多核多线程编程实验,利用多核软件工具进行编程;在Windows平台下,利用Win32API、MFC或.Net Framework提供的接口来实现;若在Linux平台下,利用IEEE POSIX标准定义的API进行多线程编程。对于综合设计,可设计为学生课外的有关多核技术设计、实验或发展趋势调研的课程设计、创新设计或毕业设计,训练学生面对实际应用问题的综合分析、方案设计、多种程序设计结构的综合使用和实际工程问题的综合解决能力。
在计算机系统结构中设计多核实验,希望达到如下目标。
1) 设计多核实验,发展计算机系统结构课程教学与实验实践内容,按照Intel多核技术大学合作计划[25],实现高校与Intel的合作;
2) 理解普适的多核思想和硬件设计理念[26, 27],普及并行计算技术,使广大的本科生能在以后的程序设计与开发中可以发挥多核计算优势;
3) 通过多核实验,强化计算机专业本科生和未来的科研人员的实验动手能力,激发兴趣爱好
和创造潜能,帮助他们更有效地开展进一步的科研工作。
3结语
计算机系统结构中多核实验的尝试性设计,旨在教学实践中不断完善和创新,充分体现多核技术的革命。应用FPGA技术设计多核实验,是一种培养学生创新能力的尝试,一种引导学生从感性上理解多核技术内涵的实验创新,有利于促进计算机系统结构课程在多核时代的发展。
参考文献:
[1] David L. Weaver. OpenSPARCTM Internals[Z]. Sun Microsystems Inc,2008(10):1-36.
[2] 张晨曦,刘依. 探索新的教学模式和方法,建设计算机系统结构精品课程[J]. 计算机教育,2007(12):103-106.
[3] 张晨曦,王志英,刘依,等. 计算机系统结构课程内容体系的研究[J]. 计算机教育,2009(20):57-60.
[4] 吴晓华,徐洁,王雁东,等. 计算机系统结构课程教学探讨[J]. 实验科学与技术,2006(6):67-70.
[5] 王华,徐洁,王雁东,等. 计算机系统结构课程改革与探索[J]. 计算机教育,2009(10):15-17.
[6] 徐洁,王华,吴晓华, 等. 浅析SPEC基准测试程序集及评价指标[J]. 实验科学与技术,2010(6):21-24.
[7] 王志英,李宗伯,钱程东,等. “计算机体系结构”国家精品课程的特色与建设经验[J]. 计算机教育,2007(4):27-28.
[8] 姜晶菲,肖侬,王志英,等. “计算机体系结构”课程建设及改革思考[J]. 计算机教育,2009(18):3-5.
[9] 王志晓,夏战国,王凯. “计算机组织与体系结构”教学改革与探索[J]. 福建电脑,2009(2):213-214.
[10] 曲大鹏,薛建生,范铁生. 启发式教学法在计算机系统结构教学中的应用[J]. 辽宁大学学报,2010(3):218-220.
[11] 童小念,何秉娇,舒万能. 计算机系统结构实践教学环节的研究与实施[J]. 计算机教育,2008(3):66-68.
[12] 舒万能,童小念,何秉娇. 计算机系统结构实践教学体系研究[J]. 科技信息,2009(5):5-6.
[13] 王小鸽. 关于多核技术的几点思考[J]. 程序员,2006(9):56-58.
[14] 薛巍. 多核课程建设[J]. 计算机教育,2007(6):40-43.
[15] 吴继雁. 多核技术及发展趋势[J]. 哈尔滨轴承,2007(28):57-58.
[16] 刘近光,梁满贵. 多核多线程处理器的发展及其软件系统架构[J]. 微处理机,2007(1):1-3.
[17] 陈天洲,曹捷, 王靖淇. “多核程序设计”概述[J]. 计算机教育,2007(7):39-41.
[18] 陈天洲,刘苏明. 教育部骨干教师培训课程设计:多核技术[J]. 计算机教育, 2007(10):65-67.
[19] 陈天洲. 多核课程建设探索与实践[J]. 计算机教育,2007(2):51-55.
[20] 陈天洲,王靖淇,刘苏明. 从“教育部-英特尔精品课程”评审看大学对多核技术的课程改革[J]. 计算机教育, 2007(6):37-39.
[21] 陈天洲. 多核精品课程建设与拓展[J]. 计算机教育,2008(1):61-62.
[22] 杨剑锋,田茂,谢银波. “多核架构及编程技术”课程建设[J]. 计算机教育,2007(12):82-83.
[23] 方娟. 多核技术在“高级计算机体系结构”课程中的引入与探讨[J]. 计算机教育,2008(20):41-42.
[24] 程小雄,伍丽华. 基于FPGA的多核技术课创新实验探索[J]. 实验室研究与探索,2008(27):3-5.
[25] 英特尔软件学院. 辞旧迎新继往开来持续推进“英特尔多核技术大学合作计划”[J]. 计算机教育,2009(2):119.
[26] Kunle Olukotun,Lance Hammond,James Laudon. Chip Multiprocessor Architecture:Techniques to Improve Throughput and Latency[M]. San Rafael:Morgan & Claypool Publishers,2007:1-141.
[27] Ahmed Amine Jerraya,Wayne Wolf. Multiprocessor Systems on Chips[M]. San Fransisco:Morgan Kaufmann Publishers, 2005:357-392.
Multi-core Experiment Design of Computer Architecture
YU Yongbin, XU Jie, WANG Hua, ZHANG Fengli, LIAO Jianming, ZHOU Shijie
(Computer Science and Engineering College, University of Electronic Science and Technology, Chengdu 610054, China)