时间:2023-03-17 18:03:19
序论:写作是一种深度的自我表达。它要求我们深入探索自己的思想和情感,挖掘那些隐藏在内心深处的真相,好投稿为您带来了七篇计算机程序设计论文范文,愿它们成为您写作过程中的灵感催化剂,助力您的创作。
中图分类号:G712 文献标识码:A 文章编号:1007-9599 (2012) 19-0000-02
随着计算机技术的迅速发展,数学的应用不仅在工程技术、自然科学等领域发挥着越来越重要的作用,而且以空前的广度和深度向经济、金融、生物、医药等新的领域渗透。不论是用数学方法在科技和生产领域解决哪类实际问题,还是与其它学科相结合形成交叉学科,首要的和关键的一步是建立研究对象的数学模型,并加以计算求解。数学建模和计算机技术在知识经济时代的作用可谓是如虎添翼。[1]
计算机技术发展到今天,已经在各个领域产生了许多非常优秀的专业软件,在数学建模竞赛中一定要使用计算机及相应的软件,如Excel,Spss,Lingo,Mapple,Mathematica,Matlab甚至排版软件等。数学建模初期,数据质量通常较差,可以利用计算机进行规范化和目的化处理,这需要较强的计算机程序设计能力,如熟练使用EXCEL中的VBA(Visual Basic Application)。
1 计算机程序设计能力培养意义重大
早在1994年,原国家教委高教司司长周远清同志就提出了层次教育的做法,并且将计算机教育的三个层次依次定为“计算机文化基础”、“计算机技术基础”和“计算机应用基础”,现已将“计算机文化基础”更名为“大学计算机基础”,“计算机技术基础”更为“计算机程序设计基础”,并在2006年后出现“计算思维”的新思想。
我校作为药学类专业重点高等院校,在计算机程序设计方面主要培养学生使用Visual Basic进行程序设计的能力,该语言被微软公司的OFFICE软件等内置,称为VBA(VB应用),也称为宏。
计算机程序设计最基本的应用应该在于数据处理和分析,简化人工操作,提高效率,提升数据的质量和精度,为项目开展争取宝贵的时间。在建模和科研工作过程中,原始实验数据量大、格式不统一、质量不高,甚至无法直接导入计算机专业软件,也就无法进行进一步的处理和分析,所以计算机程序设计的工作是非常重要的。因此,对于认为计算机程序设计就是搞软件开发,药学相关专业的学生不需要太重视这方面知识学习的人来说,是片面甚至错误的。非计算机专业的计算机教育是让学生通过学习掌握计算机相关应用技术,并能利用这些技术为本专业服务的。
以2012年高教社杯全国大学生数学建模比赛中的本科组题目“太阳能小屋”为例,对于基础数据的处理,包括24种光伏电池组件、一年365天的辐射强度(分高于和低于70W、高于和低于200W四种情况)的计算、发电量、价格等,如果没有较好的计算机程序设计能力,在这项工作上将花费1-2天的时间(比赛时间共为3天),而在计算机程序设计VBA的帮助下,只需要在1小时内完成上述工作,只要方法正确,数据的准确度完全可以保障,大大改善了数学建模的工作进程,节省出的大量时间就可以用于问题的进一步分析和求解,得出好的结论。
2 微软公司VBA基本操作
通常情况下,数学建模竞赛的数据都会被存储在EXCEL电子表格中,如何对EXCEL中的数据进行有针对性的处理是常见工作,同样也是科研项目中经常遇到的问题。对于有VB语言基础的人来说,只需要学会如何在EXCEL中操作VBA就可以对这些复杂繁琐的问题快速处理完毕。对于参加数学建模竞赛的学生而言,掌握VBA的使用就应该像会打字一样有必要。
2.1 启动VBA
打开EXCEL数据文件,执行菜单命令“视图-工具栏-Visual Basic”,打开Visual Basic对话框,点击按钮 进入“设计模式”,点击按钮 打开工具栏,添加“按钮”控件到表格上,双击按钮进入代码窗口,编写Click事件过程及相关过程代码。
2.2 对于表格数据操作的基本语句
左侧资源管理器中可以查看当前表格的名称,如果想将Sheet1表格中的第一行第一列的数据复制到Sheet2表格的第一行第一列,可以使用语句如下:
Sheet2.Cells(1,1).Value=Sheet1.Cells(1,1).Value
选定区域单元格的语句如下:
Sheet1.Range("A1:A100").Select
应用函数Sum求和,将A列1~10行的数据求累加和放到第11行,语句如下(中括号中的数据表示相对偏移行或列数,R表示Row,C表示Column):
Sheet1.Cells(11,1).FormulaR1C1="=Sum(R[-10]C:R[-1]C)"
2.3 学会使用录制宏来学习和应用VBA
对于不熟悉的VBA操作,可以通过录制宏的形式来学习,执行菜单命令“工具-宏-录制新宏”,接下来所有在EXCEL中的操作将被自动录制成VBA代码,结束录制后,执行菜单“工具-宏-宏”,选择录制好的宏名,点击“编辑”按钮即可以查看VBA代码。
3 计算机程序设计能力培养的期望
对于教学科研型院校,培养学生的科研能力需全面,学习计算机程序设计应该就像要求学生必须具有打字和论文排版的基本能力一样得到普及和重视,这样才能在科研工作中,提升数据处理和分析的本领,科研工作因得到计算机程序设计的辅助进一步得到改善。
在实际教学过程中,我校对于“大学计算机基础”和“计算机程序设计基础”的课程安排比较合理,但是相对缺少“第三学期”的“计算机应用技术”相关计算机程序设计能力的实践学期,会造成学生学习了知识,但是往往不能很好地应用到数学建模和科研工作中。希望学校能够向其他医药院校一样,考虑增加第三学期计算机技术相关实践课程,这一做法一定对我校数学建模工作,甚至全校科研水平提升和改善有着重要意义。
参考文献:
关键词:武警院校;NCRE;计算机语言;Visual Basic;C语言;
武警院校大多为指挥院校,目标是培养“适应武警部队信息化建设和履行职能使命需要的新型高素质指挥警官”。学员既有参加高考的学生,又有从部队考上的战士。生源不同,其文化基础知识相差甚远,但都按统一的实施方案和计划模式进行组织教学,采用封闭式的全程军事化管理制度。主要学习政治理论、科学文化、军事基础、专业业务、身体心理等课程。
武警院校的学员毕业后大部分去基层部队工作,经常需要通过可视化的开发工具快速高效进行软件开发,比如建设网站或开发维护本单位的小型管理信息系统等,所以程序设计课程的科目选择不易过于专业化。选用Visual Basic(以下简称VB)等可视化易学易用的语言为宜,它不但简单易学,功能强大,而且因其先进的Windows编程思想理念,可以满足一些后续专业课程或毕业设计中对编制程序的需求。
武警院校在非计算机专业人才培养方案中明确指出:应届本科毕业学员,需要完成大学本科人才培养方案和课程标准规定的全部课程和各个教学环节规定的内容,并且要求课程学习和毕业考试、毕业论文按照学籍管理规定成绩合格,较好地掌握本专业的基础理论、专门知识和基本技能,具有初步的科学研究和岗位任职能力者,在英语通过四级,计算机通过二级时,授予学士学位。这就给武警院校非计算机专业的程序设计课程提出了更高的要求。
1NCRE与计算机语言
全国计算机等级考试(National Computer Rank Examination,简称NCRE)是经教育部批准,由教育部考试中心主办,面向社会,用于考察应试人员计算机应用知识与技能的全国性计算机水平考试体系。目前该考试共设四个等级,考核内容是根据社会不同部门应用计算机的不同程度和需要、国内计算机技术的发展情况以及中国计算机教育、教学和普及的现状而确定的;它以应用能力为主,划分等级,分别考核,为用人部门录用和考核工作人员提供一个统一、客观、公正的标准。
NCRE二级考核的主要内容是计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的基本技能。考试科目有语言程序设计(C、C++、Java、VB、Delphi)、数据库程序设计(Visual FoxPro、Access)两大模块共七个科目。
如果单纯从取得计算机等级考试证书、提高考试通过率的角度出发,选择数据库程序设计模块较为理想(比如Access科目,简单易学),但从满足武警院校非计算机专业学员毕业后的任职需要来说,选择一个与教学大纲相一致的科目则更为合理,能起到“既通过课程考核又取得证书”一箭双雕的效果。
根据教育部近年来对高等学校非计算机专业计算机基础课程提出的“1+X”的教学方案,即一门基础课程(“大学计算机基础”)+若干必修/选修课程,武警院校非计算机专业的计算机课程一般分为计算机基础和计算机程序设计两个层次,其中的计算机程序设计课程正好与计算机二级考试中的语言程序设计(C、C++、Java、VB、Delphi)模块相对应。为此,武警院校非计算机专业的程序设计课程的科目选择尤为重要,选择的恰当不仅能让学员在校期间学到非常适用的编程知识、增长能力,而且能大大提高计算机等级考试通过率,更能使得课程建设与计算机等级考试二者兼顾,符合科学发展观的规律。
2更新教学观念,树立学生与教师的双主体理念
传统的教学是以教师教为主体,所以课程内容的选择往往多从教师易于教的方面考虑。对于计算机程序设计课程,因其授课教师大多是计算机或相关专业毕业的人员,对C语言比较熟悉,所以若从备课方便、讲授熟练程度来选择语言科目,教师喜欢选用C语言。因为C语言简洁、紧凑、使用灵活;同时C具有很强的流程控制结构、语言生成的代码质量高、运行速度快、可移植性较好,可以实现对程序的精确控制[1]。但是对于初学程序设计语言的非计算机专业学生来说,情况却不尽如此。
新的教学理念是发挥学生与教师的双主体教学设计,即教师是教学活动的主导,学生是教学活动的主体。这就表明在教学过程中,课程内容的选择也要充分考虑教学中学的一面,要从学生的任职需要和特点出发,进行程序设计科目的选择,要从教学的各个环节入手,提高学生学习的积极性、主动性、创造性,教学内容既要简单易学,又要满足学生毕业后的任职需要。
3以学生为本,统筹兼顾,VB是非计算机专业计算机程序设计课程的最好选择
VB是微软公司推崇的面向非计算机专业工程技术人员的首选程序设计语言,无疑也是武警院校非计算机专业程序设计的首选科目。
(1)VB是现今流行的应用程序开发工具,具有强大的生命力。
VB是基于Windows应用程序的开发工具,它为非计算机专业人员开发程序提供了强大的编程工具。“Basic”指的是BASIC (Beginners All-Purpose Symbolic Instruction Code)语言,意为“初学者最通用的语言代码”,是计算机技术发展历史上应用最为广泛的语言。“Visual”意即可视的、可见的,指的是开发像Windows操作系统的图形用户界面(Graphic User Interface,GUI)的方法,它不需要编写大量代码去描述界面元素的外观和位置,只要把预先建立好的对象拖放到屏幕上相应的位置即可。
VB功能强大,语法简单,执行代码效率高。因此,VB已成为每一个编程工作者学习时的首选语言,但其功能一点也不比VC++逊色。据统计,开发同样的应用程序,采用VB要比VC++的效率提高70%[2],所以VB具有强大的用户群和生命力。
(2)VB易学实用,许多高校把它作为大学生的入门语言。
自从1975年Basic语言问世以来,“Basic”已成为编程入门者学习语言的代名词,Basic语言以其易学易用的特点风靡全球。自从微软公司推出了划时代的VB,Basic又从一门“玩具语言”一跃而成为功能强大的应用软件开发语言。专业人员可以用Visual Basic实现其他任何Windows编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。
许多很有威望的计算机专家对VB也是情有独钟,如同济大学的龚沛曾教授对VB深有研究,清华大学的周颖老师说自己是从VB的学习而成长起来的,我们从他们编著的有关VB书籍的学习中受益非浅。现在国内许多高校都把VB作为大学生学习计算机的入门语言。
随着计算机技术、互联网技术和人工智能技术的快速发展,大学计算机基础教学在人才培养中发挥着越来越突出的作用。美国卡内基·梅隆大学周以真(Jeannette M. Wing)教授于2006年提出了计算思维概念[1],她认为,计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。教育部高等学校大学计算机课程教学指导委员会(以下简称教指委)于2010年7月发表了联合声明[2],正式提出:要旗帜鲜明地把计算思维能力的培养作为计算机基础教学的核心任务,加强课程体系和教学内容的研究,要让学生像计算机科学家那样去思维。
计算思维为计算机基础教学提出了新的机遇和挑战,有了计算思维的课程指导思想后,很多教育专家开始研究计算思维的落地问题[3-5],专家们普遍认为:计算思维的落地就是如何在计算机教学内容与教学方法上提高学生用计算机解决实际问题的能力,即问题的求解、系统设计以及人类行为理解等[6]。基于此,構建适合引导和驱动计算机教学的项目和寻找更能激发学生兴趣、积极性的案例成为我们必须面对的问题。
1 计算机博弈项目是计算思维培养的重要载体
在2016世界人工智能科学诞生60周年之际,谷歌公司的AlphaGO围棋软件与世界围棋冠军李世石上演了“世纪人机大战”。2017年伊始,Master围棋网测又取得了60场全胜的战绩,随后,卡内基·梅隆大学的Libratus在德州扑克比赛中轮流击败了4名顶尖人类高手,人工智能再次引发了世界范围内的研究与开发热潮。目前很多学者认为:人类社会正在从“互联网+”向更高阶的“人工智能+”跃迁,智能科学与技术已经成为促进所有学科发展的重要因素,计算机博弈是人工智能领域的重要研究方向[7]。
计算机博弈项目涉及的方法主要包括:博弈问题的提出、棋盘的数据描述、棋面的评估模型、搜索算法的选择、算法的实现与优化、人机交互处理等方面,这些内容刚好与计算思维的思想相一致,非常适合培养学生的计算思维能力。
一段时间以来,学生网游上瘾困惑着家长和教育工作者,以何种方式引导青年学生远离网游以及网游的魅力一直是不解之谜。而多个高校的实践证明,计算机博弈项目能迎合青年学生的愉悦、冒险、好奇和高对抗需求,让他们在快乐中分析、编程、斗智,既长知识,也长能力,既培养了计算机实践与创新能力,也培养了计算思维、科研思维和团队合作精神。
学会将人的思维过程用计算机来实现,学会处理相关的问题,学会做好最优决策,这对于所有学生来说都是有助益的。计算机博弈项目是培养学生实践与创新能力的应用型项目,更是培养大学生计算思维的重要载体。
2 新课程体系与课程内容改革
现有的计算机基础课程体系没有充分考虑计算思维和创新思维能力的培养,也没有突出宽、专、融的教学特点,并且课程内容陈旧。2015年教指委推出了新版的《大学计算机基础课程教学基本要求》(以下简称基本要求)[8],指出了新的历史时期计算思维能力的培养将成为大学计算机基础教学的新常态,对课程体系、教学目标和内容进行了全面阐述。
依据基本要求和部分学校的改革实践[9-10],提出了适合沈阳航空航天大学应用型人才培养的宽、专、融相结合的大学计算机基础课程新体系(见表1)。新的课程体系以计算思维为主线,以培养学生的计算思维意识、计算思维方法和计算思维能力为目标,分为3个层次,每个层次设置不同的课程。随着课程体系的重新构建,各类课程的教学内容也重新进行了调整,例如:在第1层次,减少了Office方面的内容,增加了动手实验和Python内容;在第2层次,取消了VF内容,增加了C#内容;在第3层次增加了基于计算机博弈的科技创新平台的内容。
2.1 大学计算机基础课程内容改革
在大学计算机基础课程中,主要设置了4个模块:①计算机系统、网络与操作系统;②信息编码与信息处理技术;③数据库基础;④计算思维、算法与程序设计初步。在第4部分中,加入了排序算法、黎曼积分、机器博弈、旅行商、哥尼斯堡七桥等常用问题的算法。还特别增加了Python语言部分[11],通过求解三角形面积,引出了顺序、选择和循环结构的基本用法;通过求解π的值,引出了蒙特卡罗方法和公式方法;通过蟒蛇的绘制,引出了Turtle库的使用方法。通过以上内容的学习,学生可以对程序设计的基础知识和利用计算思维解决问题的方法有一个初步的了解,初步培养学生程序设计的基本能力和计算思维意识。
以全面开放的形式设置了3个专项实验:计算机拆装、操作系统安装和计算机组网,通过学生亲自动手实验,提高学生对计算机硬件的认知能力和计算机维护能力。
2.2 计算机程序设计课程内容改革
在计算机程序设计课程中,本着为专业服务、与时俱进的思想,将课程设置成3个模块:C#语言主要面向航空类专业和创新实验班学生;VB语言主要面向文管类和安全类专业学生;C语言主要面向电子、自动化、材料、机械类专业学生。在开课过程中允许学生跨专业选课,学生可以选择更适合自己的语言或多种语言同时学习。
为了突出实践能力的培养,课程内容中增加了8个实验学时,专门用于综合性程序设计实验,该实验由3~4人组成的小组共同完成。在期初的时候进行动员,在期中的时候布置实验题目,在期末的时候进行答辩验收。通过综合实验,学生初步具备了利用所学知识解决实际问题的能力,培养了学生计算思维方法和团队协作精神。
2.3 将计算机博弈案例与教学内容深度融合
为了调动学生的学习积极性,将学生喜欢的计算机博弈项目作为案例融入教学中[12-13],使学生在兴趣与主动学习中领悟计算思维。
在大学计算机基础课程中,讲授了计算机博弈的发展与竞赛概况、计算机博弈的空间复杂度与搜索复杂度、蒙特卡罗方法等。
在计算机程序设计课程中,以具体项目的形式为学生讲授了计算机博弈的评估方法、搜索算法、棋盘的数据表示与可视化制作等内容。
在计算机综合训练课程中,我们设计了与计算机博弈问题相关的课设题目,例如:爱恩斯坦棋的人人对弈平台设计、幻影围棋的开局设计、局面评估的建模方法等。通过博弈案例建模和典型算法设计,帮助学生掌握使用计算机技术解决博弈问题的途径和基本方法,为学生进一步开展计算机博弈科技活动打下坚实基础。
3 新形态化的教材建设
团队人员以《VB程序设计教程》为切入点,进行了新版教材的建设。教材的主要特点是新形态、立体化、数字化和案例式。除了纸质版教材,还在网络平台上了数字化教学资源,主要包括教学课件、案例素材、拓展案例、微视频、实验素材、参考资料等,这些资源非常有利于学生自主学习、协作学习和探究性学习。
微视频资源是针对重要知识点建设的,每个微视频大约3~5min,微视频的二维码印制在教材的相应章节上,学生可以通过手机扫描访问,实现了基于移动互联网的学习方式。微视频特别适合学生利用碎片化时间进行辅助式学习。
教材中的案例遵循5结合原则:①与数学知识相结合。例如:积分计算、矩阵运算、函数曲线等,都是学生熟悉的问题。②与趣味性题目相结合。例如:抽奖活动、分糖果游戏、开心农场等,都是学生喜欢的小项目。③与实际应用相结合。例如:高考录取、学生绩点计算、打气筒模拟、课堂点名等,都是学生经常面对的实际问题。④与专业知识相结合。例如:曲柄滑块机构,这是机械类专业学生应掌握的典型机构。⑤与計算机博弈知识相结合。例如:博弈搜索算法、棋盘的可视化设计等。通过有兴趣的教学案例引发学生深入学习与研究的积极性,也体现了寓教于乐的教学方式。
4 开展计算机博弈科技活动
沈阳航空航天大学从2011年引入计算机博弈项目以来,团队人员依托博弈项目,深入开展了寓教于乐、寓教于研、以研促教、以赛促学的创新人才培养模式[14]。
1)开展博弈科技研究和“大创项目”工作。
基于计算机博弈项目,很多老师开展了科技研究,并将科研成果应用于教学中。建立了博弈科研梯队,教师既能对博弈活动起到组织、指导和护航作用,又能在计算机博弈的科研中勇攀高峰,形成学科制高点,为科技攻关和实际应用创造条件。开展了计算机博弈科技社团工作,社团成员在老师的指导下,既可以参加科研课题,也可以组队申报大学生创新创业训练项目(简称大创项目)。学生与老师合作开展科技研究、撰写论文,形成了良好的学习与科研氛围。
2)开展计算机博弈竞赛工作。
计算机博弈项目具有喜闻乐见、挑战无穷的特点,深受学生喜欢。学校鼓励学生组成不断吐故纳新的代表队,支持学生参加各类计算机博弈竞赛(校级、省级、国家级和国际级)。到目前为止,共组织了6届校级计算机博弈比赛,平均每年参加人数达200余人。校赛选拔后组织集训,备战全国比赛,共组织学生参加了6届全国计算机博弈大赛和1次国际机器博弈大赛,营建了良好的校园计算机创新文化氛围。
5 取得的成效
1)学生课程成绩提升。
以计算思维为主线的教学改革方案使学生受益颇多,每年有4 000名学生学习计算机课程,学生课程成绩提高较大,例如:计算机程序设计课程平均成绩提高15%,大学计算机基础课程平均成绩提高10%。在期末对学生进行问卷调查时,大部分学生表示学习收益较大,对计算机技术的理解和利用计算机技术解决问题的能力都有较大提升。
2)学生竞赛成绩优异。
随着研发能力的不断增强,学生参加的计算机博弈竞赛项目也越来越多,现已达到12项,包括六子棋、点格棋、苏拉卡尔塔棋、亚马逊棋、幻影围棋、不围棋、爱恩斯坦棋、军棋、国际跳棋、海克斯棋、斗地主、桥牌。近几年累计获省级以上奖项100余项,累计获冠亚季军20项,其中幻影围棋、亚马逊棋、军棋、六子棋项目都曾获得过全国冠军奖项,总体竞赛成绩位居全国前几名,既提高了大学生的计算机创新能力,也促进了我国计算机博弈事业的发展,在国内高校中产生了较好影响。
3)学生科技成绩突出。
基于计算机博弈项目,学生与老师合作在CCDC国际会议的机器博弈(Computer Game)专题上已25篇,表2是发表的部分学术论文。学生在老师的指导下申报了大创项目30多项,表3是部分大创项目。
6 结 语
计算思维的理论研究在我国已经走过了6年多,现在应该是全面落地的时候。我们本着与时俱进、为专业服务的指导思想,调整了各门课程的教学内容,引入了Python、C#等程序设计语言,将学生喜欢的计算机博弈项目作为教学案例与课程内容深度融合,实现了竞赛与教学相结合的教学新模式。计算机博弈项目具有喜闻乐见、挑战无穷的特点,特别能引发青年学生的好奇心与研究热情,广泛开展基于计算机博弈项目的科技与竞赛活动,较好地培养了学生的创新精神和科研思维。计算机博弈项目是非常好的培养学生计算思维的重要载体。笔者希望本文能对高校的计算机教学提供一种参考,更希望计算机博弈能在更多的高校生根、发芽、开花和结果。
参考文献:
[1] Wing J M. Computational thinking[J]. Communications of the ACM, 2006, 49(3): 33-35.
[2] 何钦铭, 陆汉权, 冯博琴. 计算机基础教学的核心任务是计算思维能力的培养:“九校联盟(C9)计算机基础教学发展战略联合声明”解读[J]. 中国大学教学, 2010(9): 5-9.
[3] 陈国良, 董荣胜. 计算思维与大学计算机基础教育[J]. 中国大学教学, 2011(1): 7-11.
[4] 李廉. 以计算思维培养为导向深化大学计算机课程改革[J]. 中国大学教学, 2013(4): 7-11.
[5] 冯博琴. 对于计算思维能力培养“落地”问题的探讨[J].中国大学教学, 2012(9): 6-9.
[6] 龚沛曾, 杨志强. 大学计算机基础教学中的计算思维培养[J]. 中国大学教学, 2012(5): 51-54.
[7] 王骄, 徐心和. 计算机博弈: 人工智能的前沿领域: 全国大学生计算机博弈大赛[J]. 计算机教育, 2012(7): 14-18.
[8] 教育部高等学校大学计算机课程教学指导委员会.大学计算机基础课程教学基本要求[M]. 北京: 高等教育出版社, 2016.
[9] 王移芝, 金一, 周围. 基于“计算思维”能力培养的教学改革探索与实践[J]. 中国大学教学, 2014(3): 49-53.
[10] 刘光蓉. 融入计算思维的 C 语言实验教学设计[J]. 实验室研究与探索, 2015, 34(10): 81-83.
[11] 嵩天, 黄天羽, 礼欣. Python 语言: 程序设计课程教学改革的理想选择[J]. 中国大学教学, 2016(2): 42-47.
[12] 王亚杰, 王晓岩, 邱虹坤, 等. 基于爱恩斯坦棋的程序设计课程教学案例设计[J]. 计算机教育, 2012(18): 75-77.
[13] 李飞, 王亚杰, 尹航, 等. 基于幻影围棋的C语言课程教学案例设计[J]. 计算机教育, 2016(10): 117-119.
论文关键词:行动导向,C语言,教学设计
1.引言
C语言是一种面向过程的计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点,具有简洁、紧凑、使用方便灵活,以及生成目标代码质量高、程序执行效率高、可移植性好等特点,广泛应用于操作系统开发、应用程序设计及嵌入式开发。C语言是软件开发领域最主流的设计语言之一。是目前高等院校以及高等职业学校理工科专业开设范围最广的一门程序设计语言课程。然而对于从没有接触过程序设计有些甚至对计算机原理了解都比较少的学生而言,学习C语言存在较大的难度,同样对于讲授C语言的教师也往往感觉课程推进较困难。C语言教学一般分为课堂讲授、上机实践、课程设计等几个环节。课程结束之后学生不会C语言的基本应用。为解决C语言教学中出现的问题,需要我们不断探讨、改进教学方法。本文将行动导向教学方法引入到C语言教学中进行了一些尝试与探索。
2.行动导向教学法概述
行动导向教学法是以“行动导向驱动”为主要形式,在教学过程中充分发挥学生的主体作用和教师的主导作用,注重对学生分析问题,解决问题能力的培养,从完成某一方面的“任务”着手,通过引导学生完成“任务”,从而实现教学目标。从学生接受知识的过程看,知识来源于实践,在实践中得到感性认识,经过反复实践才能上升到理性认识论文范文,并回到实践中去。
教师对课程知识点进行规划分解,针对学生的情况制定科学、合理的任务,以及准备学生完成任务所需相关材料。课堂上下发任务,让学生清楚的理解他要做什么。然后采用合理的方式引导学生去分析解决问题。最后对学生完成任务的结果进行积极的评价。
行动导向教学法在C语言课程教学设计中,所进行的实践教学并非是指编程序上机实习验证,而是针对C语言程序设计中编程思想应用行动导向教学法进行的教学设计。下面就本人教学设计的一个案例进行阐述。
3.教学设计案例
常用排序算法模拟应用—行动导向教学法教学设计。教学设计方案:第一阶段,任务描述:将班级的学生按座位列分成四组,A、C组利用选择排序法,B、D组用冒泡排序法分别将将本组学生按年龄递增排列,每组同学旁边放置一个空椅子可供利用。要求是每次能且只能移动一个同学坐到空出来的椅子上。第二阶段,在学生实施排序前先给每组学生相应算法的说明文档。让学生给定的时间去进行阅读、讨论并制定出实施方案。第三阶段,让各小组同学根据自己制定的方案实施排序操作,并验证结果是否符合他们的预期。同时密切注意观察并记录他们的问题。第四阶段,让小组间相互评价,对本小组排序方案及实施过程中的问题进行自我总结,。第五阶段,对每组任务的完成情况进行评价,并给予指导。可以调换排序方法按体重重复以上任务步骤。最后一阶段,问题的抽象及算法实现。这一阶段对于学生较为困难,可以指导抽象出任务处理的对象—数组数据,重复性的动作—for循环模式,位置的移动—循环变量等。这样学生主动学习使用相关C语言语法规则,并摸索和思考其使用方法和模式。之后给出一些相关的习题让学生模仿练习,巩固应用。
4.教学思考及效果评估
在这个教学设计实施过程中,激发学生的兴趣,调动学生积极参与实践活动是教师首要的任务,在学生实践能力相对薄弱的教学中教师的引导作用显得更加重要,因为在这个问题域里,学生是主体站在“风暴”的中心,只有学生被激发出来关注到实践过程的每一个细节,才能完整的描述实现的过程,将这个程序设计的灵魂—算法的思想融进大脑里,进而抽象完整的模型,思考如何利用C语言去实现。这样的教学设计注重编程思想而侧重C语言语法规则。我们可以让学生抓住“灵魂”这根绳索去探索如何去应用C语言里纷乱的语法规则论文范文,学会在实践中学习。
经过测试,这样的教学效果也较为明显,学生对for循环的理解较为透彻,应用较熟练。整个学期过后,学生对这一块儿C语言知识印象明显深刻。“行动导向”的教学过程中,学生不但在完成任务的过程中掌握了C语言知识,通过相互沟通讨论问题,增强了表达交际能力,提高了学生分析问题的能力。完成任务的成就感不仅增强了学生学习C语言的自信心,提高了学生深入学习C语言知识的兴趣,形成学习的良性循环。
5.结束语
鉴于C语言计算机应用的广泛性和重要性,作为计算机专业的入门级课程,有必要不断的探索新的科学、适用的教学方法,加强实践教学,注重引导学生编程思想的培养,从各方面调动学生的兴趣和积极性,感性认知,理性理会,学好C语言并会利用C语言进行程序设计。
[参考文献]
[1]谭浩强.C语言程序设计(第三版)[M]. 清华大学出版社,2005.
[2]姜大源.学科体系的解构与行动体系的重构——职业教育课程内容序化的教育学解读[J]. 教育研究, 2005,8 .
[3]刘丹青.以学生为中心的教学——行为导向教学论的探讨[J].教育与职业, 2005,1 .
1966年,美国计算机协会设立了一个奖项――图灵奖,专门用来奖励对计算机事业做出重要贡献的个人。图灵奖的评选极为严苛,一般来说,只有某人提出的理论或做出的成果经过了漫长时间的检验,仍然被奉为经典,并对计算机科学领域产生重大影响时,才有可能荣获此奖。因此,这个奖项的含金量极高,号称“计算机界的诺贝尔奖”,也有人认为它是计算机界的“终身成就奖”。比如2009年捧回图灵碗(图灵奖杯呈碗状)的查尔斯・萨克尔,就是因其在上世纪70年代设计与实现了第一台现代个人电脑Xerox Alto而获奖,其得奖时间与获奖成果问世时隔近40年之久。
然而,却有这么一个人,在1974年以36岁的“少龄”捧回了属于自己的图灵碗,成为了史上最年轻的图灵奖获得者,他就是唐纳德・克努特,而我们更习惯叫他的中文名字,高德纳。
帮助高德纳赢得图灵碗的,是一套名为《计算机程序设计艺术》的系列丛书,确切的说,是这套丛书的前三卷:《基本算法》、《半数值算法》以及《排序与查找》。虽然丛书的名称洋溢着一种扑面而来的艺术气息,但千万别怀疑,这部丛书绝对是计算机界堪称经典的神作,其地位不亚于数学界欧几里德的《几何学原理》以及牛顿的《自然哲学的数学原理》。
如果你对计算机并不算了解,那么,请千万别被这几个看似简单的名字给迷惑了,比如说《基本算法》,看书名好像是计算机入门书籍,但就连微软创始人比尔・盖茨当年也是花了好几个月的时间,才看完了这一本书,而且还做了大量的练习才勉强算是掌握了这些算法,按盖茨的意思,只要能解决这本书里的每一个问题,就有了成为一名优秀程序员的本钱。不过高德纳显然比盖茨直率多了,他表示:看不懂的话,趁早改行吧!
直到现在,想在计算机领域有所成就的人,《计算机程序设计艺术》系列丛书也是其必选读物,而其经典程度,只要看看图灵奖评委会那些一天到晚只会吹毛求疵,眼睛恨不得长在头顶上的家伙,在这套丛书刚出了前三卷就上赶着给高德纳颁发了图灵奖,就可见一斑。
我是艺术家
不过,这位年轻的计算机天才,却认为自己是名艺术家而非科学家。当然,这倒并不是因为他小时候曾经梦想着要成为一名音乐家,而是在高德纳眼中,“计算机科学”本身就不是科学,而是一门艺术:艺术是人创造的,而科学不是;艺术可以无止境提高,而科学不能;艺术创造需要天赋,而科学不需要。这样的看法,在计算机领域绝对是独树一帜。
事实上,高德纳本人的行为,也的确更像一名才华横溢、张扬随性,又有些极端完美主义的艺术家。高德纳刚刚捧回图灵碗后,就做了一个让计算机科学界跌破眼镜的决定,那就是宣布从此封笔,不再写书,而原因竟然是“排版工具太差,破坏了整套书的美感”。如果搁在今天,网友一定会吐槽,你怎么不说电脑耗电太多,不节能环保呢?这件事在当时引起了轩然大波,许多人开始质疑高德纳已经“江郎才尽”,也有人说他是沽名钓誉之辈,图灵奖真是发错人了。
面对种种非议,高德纳却仍然我行我素,再也不提继续写书的事情,也没有任何解释,默默开始了在世人眼中“不务正业”的生活。10年之后,当高德纳的成果逐一问世,并令世人震惊之时,曾经的质疑与非议却显得那样可笑。
他设计开发的排版系统TEX,在出版界掀起了一场革命,当科学家使用TEX系统书写论文时,再也不用为输入各种公式、调整页面信息而发愁了。TEX引领了科学排版的规范,其完美程度令其他排版软件所汗颜。高德纳曾放下豪言,只要有人发现TEX的一个错误,就会支付他2.56美元,发现第二个错误,就会支付他5.12美元,如此指数递增。想想看,这要对自己的软件有多大的信心才能给出如此的承诺?要知道,如果一个人在TEX中找到20个错误,高德纳就将支付其数百万美元,不过时至今日,高德纳却并未因此而破费太多。
与此同时,高德纳还同时开发出了METAFONT字体设计系统以及文学化编程语言。前者的所有字体都是用几何方程定义的,其风格前所未有;而后者则更像是高德纳在对世界宣言:计算机代码也能像诗歌一样优美动人,事实上,他还用这种语言写了一本名为《斯坦福图形数据库》的书,让那些觉得计算机代码枯燥乏味的同行,“体味”一下高雅优美的计算机语言写出的文学作品。
不完美,不成活
当TEX系统问世之后,高德纳终于再次执笔开始著述《计算机程序设计艺术》的第四卷《组合算法》,这卷书问世之后,再一次让人们发出了叹为观止的感慨。而高德纳之所以能够写出这样的神作,与其追求完美的性格是分不开的。
其实在高德纳还是小学生的时候,他追求完美的性格就开始有所展现。在他8岁时,一家糖果商到高德纳所在的小学去促销一种名为“Ziegler’s Giant Bar”的棒棒糖,他们提出,要让学校的孩子用棒棒糖名称中出现的字母来任意拼写单词,写出最多的孩子将获得优胜。高德纳知道之后,找了个借口请假回家,翻着字典找出了4500余种组合,并记了下来。比赛时,高德纳毫无意外地获得了冠军,因为裁判手中的参考单词表中,只有2500多个单词。
看到这里,我们就发现,当时高德纳因为“排版工具太差,破坏了整套书的美感”而拒绝继续写书,并不那么奇怪。但是高德纳的完美主义,以及他的艺术家风格,却又和现如今很多“另类”的年轻人完全不同。他追求完美,但却不自大,他说“一个人要把事情做得完美,只有当他跟上帝的意图保持和谐”;他感性文艺,但却不脱离现实,他说写书就要写给普通人看,这样普通人和专家都可以看懂,如果写给专家看,那么专家估计也看不懂。
关键词:计算机专业 产学研 协同创新 制度创新
中图分类号:G640
文献标识码:A
文章编号:1004-4914(2017)01-205-02
一、计算机专业产学研相结合教学模式运作的条件
计算机专业是一个实践性和科研性比较强的专业,其学习的过程就是一个理论学习、实践探索和科学研究的过程。而我国高校计算机专业具有研究性和实践性并存的特点,承担着计算机科学与技术的研究和实践的使命,因此最适合产学研相结合的教学模式。
要将这种模式在我国高校计算机专业的教学中进行运作,应该具备以下条件:首先,要在教学组织上给予保障,要组建一支师德高尚、学风严谨、业务技术精湛、内部结构合理且技术成果显著的教师团队。其次,要与相关高校、软件企业、科研单位进行合作,要善于利用互联网资源进行实践教学活动。第三,要建立健全相应的规章制度,建立一整套适合产学研教学模式的管理制度、技术和科研成果考核办法、资金审批管理制度等。第四,要加大经费的投入。无论是学校和企业相结合,还是科研和教学相结合都需要相应的经费做保障。不加大经费的投入,推行产学研相结合的教学模式就是一句空话,所以经费的保障是至关重要的。
二、计算机专业产学研相结合教学模式的具体步骤
根据近年来对当代大学生学习态度、学习成绩和心理状态的研究表明:随着年级的升高,大学生对自己的要求会降低标准,对学习表现出一种无所谓的态度,在专业学习上、情感上都出现滑坡的现象。教育界的专家们将这种现象称为“大二低潮现象。”因此,产学研相结合教学模式需要从大一就开始,这样一来,我们就能赶在“大二低潮”到来之前,及时给大学生们打一针“预防针”。使他们在没有出现滑坡之前就开始进入一种完全不同于高中阶段的、全新的教学模式之中。
1.建立产学研相结合的的实践教学体系,注重五个能力的培养。通过对计算机专业大学生的能力构成研究,我们认为大学生的专业能力包括自主学习能力、认知实践能力、初步设计能力、综合实践能力与软件开发能力。要培养这种能力主要经历以下几个阶段:
(1)见识性实习阶段。在这个阶段主要是通过组织学生参观企业、往届毕业生回校讲演、技术报告会、专家座谈会和一系列的专题讲座来完成。一般安排在大一来完成。通过这个阶段的教学实践活动,主要是培养学生的认知能力,也称为认知实践能力。
(2)生产实习阶段。这个阶段主要是通过深入到工业和信息企业去熟悉生产环境、参与开发过程和顶岗实习等形式,了解工业和信息产业的生产组织活动。通过这个阶段的学习和实践活动,让学生了解开发过程,形成初步的编程能力。这个阶段一般安排大二来完成。这个阶段学生对课堂教学形式有些厌倦,我们安排他们换个环境,到企业去学习软件工程设计,掌握初步的编程技术,这样可以提高他们的学习和研究兴趣。这个阶段主要是对初步设计能力的培养。
(3)课程设计和专题训练阶段。在这个阶段中要结合课程的学习进行企业实训和实践性教学的无缝对接。比如安排学生在师傅指导下完成课程设计作业,或者在工人师傅指导下完成专题实训课程的学习和综合实训课程。这个阶段主要是综合实践能力的培养,一般是在大二的下学期和大三上学期来完成。这个阶段主要是对综合实践能力的培养。
(4)毕业实习和毕业设计阶段。在这个阶段中要安排学生参加创新和科研课题的开发活动,学生可以根据自己的兴趣参加研究生师兄和老师的研究课题,参加计算机项目的开发和研究。也可以根据企业的需要参加企业的项目开发活动。然后根据项目开发的情况作出毕业设计,写出毕业论文,毕业论文必须经过软件的检测,并经过其他老师的评阅才能作为毕业论文参加答辩。这个阶段是对大学生学业成绩和职业技能的综合训练和考核阶段。一般是在大三下学期开始安排,大四最后一个学期结束。这个阶段主要是对创新和科研能力的培养。
2.专题训练要经过科学的设计,要建立专题实训库。一般来说,专题实训课程是要过教研室集体建设的,要经得起实践的检验和历史的检验。具体内容有:第一是软件工程专题训练题库;第二是程序设计专题训练库;第三是数据库专题训练库;第四是软件质量和软件测试专题训练库。
3.创新基地的建设要以研究团队做主力。创新题目主要来源:第一,老师的科研课题。大学生参加老师的科研课题,可以在老师的指导下学习程序设计的技术和经验。第二,企业或学院的科研课题或工作任务。学生承担企业或学院的程序设计任务,独立完成计算机编程工作,有利于独立工作能力的形成。第三,各级计算机程序设计大赛。ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析问题和解决问题能力的年度竞赛。经过30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事目前由IBM公司赞助。ACM/ICPC比赛和IOI(International Olympiad in Informatics)比赛都是使用一种称为Online Judge(简称OJ)系统的计算机网络平台来进行题目的、解答、判分,因此具有非常高的客观公正性。OJ系统的基本运作原理是通过服务器上预先准备的测试用例数据来对参赛选手提交的程序进行测试运行,通过检查输出数据是否符合题目要求来判定答案的正确与否。大学生通过参加这种竞赛活动,可以提高在编程过程中的创新能力和熟练程度。
三、计算机专业产学研相结合要注意的的关键问题
1.要有极其广泛的企业合作基础。关键是选择技术基础比较好的企业作为合作伙伴,学生在这样的企业才能学到最新的计算机技术;教师也可以应用自己的计算机技术为企业解决一些关键技术难题,从而做到企业和学校、技术和思想双赢。
2.要组织起一个完善的技术团队。要实行产学研相结合,就对教师团队的技术能力和实践能力提出了更高的要求,教师不能只满足于书本知识,还要有软件编程方面的工作经验。这就需要教师团队技术水平和技术能力比较完善和全面。因此,要对计算机专业教师进行培训,安排他们出国进修和下基层企业学习和锻炼。
3.要有足够的经费保障。学校要与企业合作有时候需要一些经费开支,特别是产学研开始的初期,教师和学生的技术水平比较差,给企业帮不上什么忙,还需要企业的工人师傅做技术上的指导,因此我们需要付出一定的费用。到了产学研相结合的后期,我们的教师已经具备了高级程序员的编程水平,学生的技术水平也有提高,这样我们的教师和学生都可以独立顶岗实习了,我们不但不需要付出费用,还可以从企业获得劳动报酬,这个劳动报酬比较多的时候,学校可以提取一些管理费用。由此可见,产学研相结合的初期需要经费支持。可以说,没有资金的支持,产学研相结合的教学模式改革难以启动。
4.把握好两个关键时刻。在实施产学研相结合的教学模式时,需要把握好两个关键时间点,一是产学研的开始时间是一年级下学期,不能推后;二是毕业设计要从三年级下学期开始。为什么呢?因为二年级学生比较浮躁不容易进入角色,从一年级下学期开始,学生那时候的学习劲头和精神面貌都比较好,容易进入较好的学习状态。毕业设计如果从四年级开始,学生为了找工作会牵扯很大的精力,会直接影响到毕业设计的质量。另外,还要给论文答辩留下充足的时间。
5.要充分认识到科研在产学研相结合教学模式的统领作用。科研是高校发展的时代呼唤,当代大学的重要特征就是承担科研任务,为企业和国家完成科研项目是我们义不容辞的任务。我们应该把它放在重中之重的位置。因为只有通过参与科研项目才能在科学技术层面上有所创新、有所发展、有所建树。
综上所述,产学研相结合的教学模式,是一种有利于学生掌握专业技术和知识的新型的教学模式,由于这种教学模式需要懂技术有经验的教师来完成,因此,学校需要首先对师资队伍进行补充充实和教育提高;其次需要有与之相对应的管理制度;第三需要有足够的经费。这种教学模式基本上实现了教学和生产科研的无缝对接,是一种行之有效的好模式。目前这方面的经验还不足,希望教育界和企I界有关专家共同研究这个课题。
参考文献:
[1] 孙和英,王贵喜,白殿海.产学研教学模式的研究与实践[J]河北北方学院学报自然科学版,2000(4)
[2] 鲍文博,金生吉,宁宝宽.产学研合作实践教学模式探索[J]高等建筑教育,2012(21)
[3] 吕素香.大二低潮现象原因及对策[J]中国高等教育,2015(10)
[4] 刘建军.进一步重视科研在高校育人中的地位和作用[J]中国高等教育,2015(6)
(作者单位:浙江传媒学院 浙江杭州 310018)
论文摘要:本文首先分析了当前汇编语言的教学现状及实验环节的重要作用,然后阐述了汇编语言实验教学的设计思路,给出了较详细具体的实验内容安排。
1 汇编语言及其教学现状
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是唯一能够利用计算机所有硬件特性并能直接控制硬件的语言。对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的,至于很多需要直接控制硬件的操作场合则更是非用汇编语言不可。用汇编语言编写的程序的执行速度通常比高级语言(如C/C++)快很多,甚至成百上千倍。相应的,汇编语言的缺点就是使用者需要对硬件有更深入的了解,编程效率不高。
“汇编语言程序设计”课程的任务是为“计算机组成原理”、“接口”、“操作系统”等后继课程提供必要的基础知识,它对训练学生掌握与硬件相关的程序设计技术、从事自主版权计算机芯片和系统软件的开发、信息安全、过程控制等方面,均有十分重要的作用。无论计算机技术如何发展,机器语言、汇编语言的计算机程序设计语言体系仍然是计算机技术的基础,也是计算机技术的重要知识体系之一。不能了解和熟悉汇编语言,不仅将导致学生知识结构的缺乏,也可能导致学生认知水平的降低,开发手段的贫乏。
然而,初学者往往感到它难学、难懂、抽象,更难以掌握。教师开展教学困难,学生学习和掌握困难,教学效果差,以致会影响后继课程的学习。
2 实验环节在汇编语言教学中的作用
在计算机相关专业的教学领域,实验和实训教学是培养大学生学习能力、实践能力、思考能力、创新能力的重要环节和有效途径。显然,学生在学习汇编语言这门课程中产生的困难,首先来自于他们对所学知识缺乏必要的感性认识,没有充分的实验。
计算机在很多方面不同于其他学科,尤其是与硬件有密切关系的课程。由于汇编语言课程具有硬件操作的密切相关性,实验环节在整个教学活动中就占据了举足轻重的地位.汇编语言的实验对培养学生的动手能力和学习兴趣,提高学生阅读、编辑和调试程序的能力,有着不可替代的重要作用。学生通过实验课深入了解CPU、存储器、接口及外部设备的工作特性,对数据在计算机中的表达和传送产生感性认识。在实验中对汇编语言达到更好的理解、掌握,从感性认识上升到理论认识。
3 实验教学的设计思路
由于各高校办学类型不同、培养目标不同、所在地及周边地区社会需求不同,计算机及其相关专业的教学内容也应有所不同。对于非研究型院校的相关专业,对“汇编语言”的教学可以集中在适度的理论知识和充分的操作实践上。“适度”体现在理论课的讲授中内容不必展开太宽,“充分”体现在实验课的安排上要充分。
尽管学生学习汇编语言有着不少困难,但“兴趣是最好的老师”,要激发学生的学习兴趣。有了兴趣,他就能积极地思考,大胆地探索,变被动接受为主动思考。因此,汇编语言的实验教学总的思路就是要以激发学生兴趣为主线,尽量设计趣味性的实验内容,充分发挥学生的积极性和创造性。
很多学生不重视实验课的主要原因之一是认为实验课的好坏对学习成绩影响不大,目前多数院校的学习成绩评定,仅以期末一张考试卷的好坏而定,这使很多学生重理论、轻实验。因此,应认真记载每个学生在实验课上的实际操作能力和编程能力,并以优、良、中、差进行仔细考核,开学初就明确告诉学生这种考核制度的存在,使之开始就没有怠慢的情绪,从思想上重视实验。
实验教学的安排按照由浅入深、循序渐进的方式进行,合理选择实验内容,尽量避免过多过杂,内容选择注意举一反三,即以启发思维为主,对设计型、综合型实验只要能完成预定实验目标,不苛求实验过程与步骤的统一。实验所演算的汇编语言程序应具备好的观测效果,能直接体现计算机的操作特点,教师演示和学生实践穿行,并且注意重复对比,让学生发现自己操作的失误,加深对汇编语言操作规律的理解。
实验教师在实验中主要起到引导的作用,实验前的讲解以重点、难点和注意事项为主,不应面面俱到,可以先给出一些问题,让学生带着问题去做、去观察、去思考。实验中,则应以学生为主体,让每个同学通过操作行为感受计算机的物理过程,教师将理论揉在实例中的具体操作中,学生会感到数据是有形的,CPU的操作是物质化的。经过反复练习,学生不但学到了基础知识,而且提高了综合分析和理解能力。实验中,还要鼓励学生自己修改实验,有时学生对自己编的程序没有把握,一旦上机实验后就清楚了。他在计算机上修改程序,观察修改后的结果,实际上就是了解改动部分在整个程序中所起的作用,这种作用的认识和理解不是通过说教得来的,而是切身经历的、看到的,学生对它的理解、记忆就要深刻得多。
4 实验内容的具体安排
具体的实验内容应覆盖汇编语言教学中的各重要方面,内容涉及debug、汇编语言编程环境、汇编语言程序设计、输入输出与中断、Win32汇编、汇编语言与C语言的混合编程等。类型分为选作和必做。每个实验分属验证型、设计型或综合型。
4.1 稳扎稳打练好基本功:debug和编程环境
“万事开头难”。对汇编语言的学习,能否开好头很关键,很多学生就是因为开始没学好,感觉跟不上,就不再认真地学习了,有的甚至放弃了。其实汇编语言实验开始的基础部分是比较简单的,想掌握它是没什么大问题的。
汇编语言源程序通常以ASCII文本文件的形式保存,通过汇编链接形成一个EXE可执行文件。对EXE文件的调试构成了实验课的主体内容,贯穿始终,而EXE文件的调试通常是通过debug实现的。学生通过使用debug可以观察到存储器的数据存储情况,也可以随时观察到CPU中寄存器的数据变化。debug的反汇编命令是理解汇编语言的助记符形态和机器指令的01码形态的对应关系的重要工具,学生可以通过它深入体会汇编语言中指令的构成及各部分含义。debug提供的单步执行命令是另一个重要工具,利用t单步执行一条指令,及时观察数据缓冲区的变化情况,这也是进行调试、发现程序错误的最直接有效的方法。
debug的实验部分以使用a、t、r、d、u等命令为主反复进行指令练习。学生通过使用debug观察到指令执行前后机器中数据的变化,对深入理解计算机的工作原理、汇编指令的作用是直接的和不可替代的。学生不再感到机器是复杂的,指令是抽象的。
接下来安排的实验则是对汇编语言编程环境的熟悉和掌握,这也是重要的一环。对编程环境不熟悉,不仅会影响学习汇编语言的效率,还会引起一些不必要的错误发生。因此可以考虑多给几个简单完整的程序,让学生多去 使用编程环境,熟悉汇编链接过程。实验初,只给一些正确的程序,让学生经过汇编链接可以较容易地形成exe文件并成功执行,看到了正确的结果,学生就有了方向,也就有信心去做下面的实验了。
在熟悉了简单的编译过程之后,接下来可以在原有程序中适当安排一两个错误,让学生观察汇编链接中出现的错误信息,理解这些错误发生的原因,这一点对程序调试是至关重要的,如果看不懂错误信息,就没有办法正确定位错误,也谈不上修正错误了。
以上分析,学习汇编语言伊始,一定要练好基本功,包括对debug的熟练使用,对编程环境的熟悉。这部分实验一定要安排得充分,力求使学生不再对机器望而生畏,不再对汇编指令有抽象难懂的感觉,如果能开好这个头,后继的学习就顺利得多了。
4.2 轻轻松松做改变:汇编语言程序设计
由于学习汇编语言之前,学生通常已经学习过一门程序设计语言,因此这部分实验可安排简单、典型的验证型、设计型实验,以编写程序为主。先要求学生用之前学过的程序设计语言实现,然后再给出汇编语言的实现,通过对比;学生自然可以发现汇编语言与其他程序设计语言的异同。当程序出现错误时,则必须要求学生使用debug进行调试,观察变化,排除错误,加强程序调试能力。
4.3 细心耐心学核心:输入输出与中断
中断是学习汇编语言的重点加难点部分,能否真正掌握汇编语言也在于此,中断也是汇编语言的魅力所在。这部分实验一定要找一些学生感兴趣的、具有明显观测效果的例子,至少安排两个阶段的实验。第一阶段以验证型实验为主,先使学生熟悉中断过程、中断处理程序的框架;第二阶段以设计型实验为主,让学生自己去思考中断过程中发生的事情,中断程序设计的方法。对这部分知识的传授一定要有耐心,对每个程序的讲解要透彻、概念清晰。中断是真正要用的东西,之前学习的内容只是为它做铺垫,不能学好中断,汇编语言这门课的真谛就没有学到。
4.4 兴趣延伸:WIn32汇编、汇编语言与C语言混合编程
很多学生学习汇编语言之初就会问汇编语言用在哪里,很少接触到汇编语言等问题,其实现在汇编语言很少单独使用,而Win32汇编、汇编语言与C语言的混合编程用的比较多,这两部分内容学起来并不难,可当作拓展知识部分,作为自学内容。教师可以找一些实际使用这部分内容的例子,让学生知道汇编语言的用途,使学生不再“学而不用”,“学而不知用”。