时间:2022-12-05 05:14:05
导言:作为写作爱好者,不可错过为您精心挑选的10篇高级语言程序设计,它们将为您的写作提供全新的视角,我们衷心期待您的阅读,并希望这些内容能为您提供灵感和参考。
针对《高级语言程序设计》实践课程教学中存在的诸多问题,教学时可按专业研究方向有所侧重地进行教学设计,设计不同的教学导向、教学内容、教学方法等。对电子信息类学生,可有所侧重地加强该实践课程与后续信号处理类课程,数学实验与数学建模课程的联系。
2.1加强该课程与信号处理类课程的联系
信号与信息处理的方法和能力是电子信息类学生在专业学习中必须要求掌握的一个基本技能环节之一。其中,比较典型的课程有《算法与数据结构》《数值分析与算法》《数字图像处理》《语音信号处理》《信息隐藏技术》等。在《高级语言程序设计》实践教学的教学内容设计上,可将学生引导到信号处理的方向上来,增加相应课程中涉及的特征参数提取,特征识别或判别、求解方程或某一类问题的算法实现等内容,一方面增加了练习题目的针对性,趣味性,同时还提升了题目本身的难度和层次性。例如,《语音信号处理》课程的学习过程中,可以设计一个小型的系统辨识问题[2],让学生完成10个孤立数字的语音识别问题。其中包括了语音特征参数的提取、特征的判别两个环节。
2.2加强该课程和数学建模与数学实验课程的联系
数学实验与数学建模是计算机和数学软件引进教学后的新事物,是数学教学体系、内容和方法改革的一项尝试。以往我们对数学的学习着重在,通过严密的逻辑推理完成公式的推导、定理的证明和实现一些简单快捷的计算,忽略了数学的实际应用。对于大多数理工科大学生来说,将来的工作并不是数学领域的研究工作,更多的时候,他们很可能将以数学为工具来解决各种实际问题。数学实验与数学建模课程正是锻炼了学生这一方面的能力。另一方面,一次数学建模实验过程相当于进行一次小型科研活动,在一定程度上,培养了学生初步的科研能力。通过最近几年的教学实践和组织学生参加全国和国际大学生数学建模竞赛活动,发现数学实验和数学建模课程对学生科研能力的锻炼有很大的促进作用,我们对该门课程的教学也着力在数学模型的建立和编程求解方面加强更多的联系。下面就这方面谈谈教学实践中的一些体会。在全国大学生数学建模竞赛中有这样一道题目[3-4]:2000年6月,人类基因组计划中DNA全序列草图完成,此后人类将拥有一本记录着自身生老病死及遗传进化的全部信息的“天书”。这本大自然写成的“天书”是由4个字符A,T,C,G按一定顺序排成的长约30亿的序列,其中没有“断句”也没有标点符号,除了这4个字符表示4种碱基以外,人们对它包含的“内容”知之甚少,难以读懂。破译这部世界上最巨量信息的“天书”是21世纪最重要的任务之一。在这个目标中,研究DNA全序列具有什么结构,由这4个字符排成的看似随机的序列中隐藏着什么规律,又是解读这部天书的基础,是生物信息学(Bioinformatics)最重要的课题之一。虽然人类对这部“天书”知之甚少,但也发现了DNA序列中的一些规律性和结构。例如,在全序列中有一些是用于编码蛋白质的序列片段,即由这4个字符组成的64种不同的3字符串,其中大多数用于编码构成蛋白质的20种氨基酸。又例如,在不用于编码蛋白质的序列片段中,A和T的含量特别多些,于是以某些碱基特别丰富作为特征去研究DNA序列的结构也取得了一些结果。此外,利用统计的方法还发现序列的某些片段之间具有相关性等。这些发现让人们相信,DNA序列中存在着局部的和全局性的结构,充分发掘序列的结构对理解DNA全序列是十分有意义的。作为研究DNA序列结构的尝试,提出对序列集合进行分类的问题。图1就是发现的两个DNA序列碱基结构,要求从中提取特征,构造分类方法,完成特征表达并利用其进行判识。为完成上述任务,一方面,从C语言程序设计过程来看,学生需考虑特征数据如何表达,采用什么数据类型,如何设计算法完成搜索查询目标;另一方面,这是一个带有挑战性和实际意义的交叉学科问题,既扩展了学生的知识面,又增加了趣味性。这对提高高级语言程序设计实践教学环节的教学效果是很有帮助的[5-6]。本文来自于《实验科学与技术》杂志。实验科学与技术杂志简介详见
“高级语言程序设计”是一门实践性非常强的专业基础课程。本课程是向学生介绍程序设计的基础知识,要求学生掌握程序设计的基本概念,基本思想和基本技能,训练学生的实践能力,培养学生的自学能力和创新能力并使之能将计算机技术应用于本专业领域中。学习本门课程还为学生今后进一步学习“软件技术基础”课程打下理论基础,同时也为学生参加国家教委考试中心主办的计算机二级等级考试做好准备。本文将对本课程的课堂教学方法进行总结和探索。
一、课堂教学内容的调整和把握
本课程以谭浩强的“C语言程序设计”第三版作为教材,理论课时为20学时,上机学时为12学时。然而结合教学大纲,这门课程的教学内容丰富,课程难度大,理论性和实践性都很强,教学任务很重。尤其该课程面向的是大一的新生,绝大部分学生的计算机基础几乎为零,因此,在进行教学时,我很注意教学内容的调整和组织。在课程讲授之初,先从基本的语法规则入手,尽可能避免程序的出现,让学生先从简单到复杂,从语法到算法,从学会看懂程序到编写简单的程序,然后逐步深入,把重点放在解题的思路上,通过大量的例题学习怎么设计一个算法,构造一个程序。单纯依靠课堂讲解理论很单调枯燥,而且学生不容易理解和消化,远远不能满足课程的教学要求,所以,在课程教学中,我引入了多媒体教学。多媒体教学在新课导入上有其独特的效果,它能使学生充分利用他们的听觉和视觉,调动他们的能动性,激发他们的兴趣,以达到最佳的学习效果。同时,我还采用了打比方等方法,将抽象的概念变得形象化、具体化,简单易懂,学生容易掌握,促进他们的不断学习。比如,我在引入“程序”这个概念的时候,将程序比喻成要做的一道菜,需要一定的原料还有加工过程:菜=原料+加工,其中所要用的原料就对应程序中的数据组织形式,即数据结构,而菜的加工过程就对应程序的具体数据组织,即算法,也就是:程序=数据结构+算法。另外,我还调整部分教学内容,例如,我把第五章选择结构程序设计中的关系运算符和关系表达式、逻辑运算符和逻辑表达式以及条件运算符提前到第三章数据类型、运算符与表达式来集中介绍,先让学生集中学习,然后到以后章节遇到的时候再复习,强化,方便学生对运算符和表达式的掌握。为了让学生更好的理解整型、实型以及字符型等数据类型在内存中的存放形式,我给学生首先补充讲解了计算机中数的表示以及进制转换、数值的原码、反码和补码的表示方法。对于第二章算法的内容在学生刚开始学习的时候不好理解和把握,我将其分解开来,贯穿到第四、五、六章顺序程序、选择程序以及循环程序的设计的学习中,方便学生更深刻的理解算法以及编程思维的培养。利用这些教学手段,有利于学生知识的获取,从而突破教学的重点,淡化教学的难点,提高课堂教学质量。
二、课堂提问在教学中的巧妙运用
大学的课堂教学中,有部分老师会将课堂提问的环节省略,课堂上只出现老师在讲台上讲,学生在座位上听的这种模式,不利于教学成果的检测,教学质量的提高也会受到很大的影响。教学是教与学的交流,师生双方应相互交流、相互沟通、相互启发、相互补充。学生不应处在被动地位,而应积极地参与其中,与老师共同完成知识的传授与接受过程。我在课堂教学中会专门设计课堂提问,来调动学生参与教学过程的积极性,活跃课堂气氛。同时通过课堂提问,对学生知识水平的检测,把握学生对已授知识的掌握程度,可以及时反馈教学信息,检测教学效果好坏。再根据学生回答问题的情况,课后对自身的教学过程进行反思,不断的改进教学方法和手段,成功的方面加以总结,不足的地方分析原因,加以改进。例如,我常常会在课堂上书写一些程序,让学生将其读懂,一方面,激活学生思维,让他们能开动脑筋,积极思考,及时点评和总结学生的回答,另一方面,根据学生的回答情况,判断学生对所讲授的函数的理解和对所使用方法的掌握,来调整我的讲授方法。我所授课的班级人数接近一百人,而且每周有一次课是在上午三四节,通过课堂提问的方式,不仅让我认识了很多学生,在很短的时间内可以和学生更好的交流与沟通,而且可以刺激学生神经,提高学生的注意力,克服了学生在三、四节容易疲劳,听课效果容易下降的毛病。学生回答问题的过程,既是一个开动脑筋、积极思考的过程,又是一个运用语言准确表达思维的过程。刚开始的时候,我发现班上有一些学生在课堂上不愿发言、不善发言、不敢发言,通过鼓励与举例,让学生逐渐有敢于表达的意识,通过课堂提问,培养了学生的语言表达能力,锻炼了他们在公众场合大胆发言的心理素质。学生每次都很积极,争取他们的展示自我,锻炼自我的机会。
三、重视和灵活安排上机实验
上机实验环节是本课程的重要环节,上机实验可以加深学生对课堂所学基本原理、典型方面和技术感性的认识,增强学生的动手实践能力。通过上机实验,使学生更深入地理解解决问题的基本思想方法,掌握基本的处理技术,使学生更加认识到课程的重要性,激发他们刻苦学习的热情,为将来应用于实际和进行科学研究打下良好的基础。本课程的上机学时所占比重很大,以前有很多老师在安排上机的时候都采用很集中的方式,只安排两三次上机,而一次上机至少是四个学时,这样的上机效果并不好,学生感到厌倦,而且不能解决逐渐暴露出来的一些实际问题。针对这种现象,我将上机实验与课堂授课交替安排,在学生学习了一定的理论知识后就安排相应的上机实验,每次上机两个学时,这样既能有效缓解教学进度上学生普遍感觉的讲解速度太快,超出他们所能接受的范围,又能让学生理论应用于实践,及时解决相应的问题,增强动手能力,强化了所学习的知识点。针对学生上机实验反映出的问题,再次回到课堂的时候又统一讲解和强调,加深学生的理解。比如,在给学生介绍常量、变量标示符的定义时,发现学生在上机使用的时候是很不规范的,随意的使用一些字母就表示了变量,自己都不知道具体代表什么意思,我就多举例,用PRICE表示价格,用sum表示所求的和,用max表示大等等,规范学生的标示符定义意识。在讲循环结构的时候,多举例引导学生找寻循环规律,再用相应的循环语句编程实现,给学生灌输规范的编程理念,上机的时候逐步实践,积累自己处理实际问题的能力。学生平时的作业也能够通过及时的上机来进行调试、更正,引导学生用自己的思维和方法来解决问题,而不是通过抄写配套的上机指导上面的参考答案来应付交差,让学生更积极主动的去开动脑筋,同时更多地锻炼了自己的动手能力。对每次实验,我要求学生在用自己的算法处理每个实际问题并得到相应的结果后写出实验报告和他们的上机心得以及对实验的建议和要求,培养学生解决实际问题的能力和技巧。学生的积极性和热情度是非常的高,不仅通过自己的努力得到了正确的实验结果,把握了相关的知识点,还认真思考,给我提供了不少实验改进的建议,便于我对实验项目的调整和改进。同时通过上机实验,可以使学生的思维开阔,将所学习的知识点融会贯通,可以使用不同的方法解决同一个问题,更好地将所学习的知识得以应用。刚开始实验的时候,我为了让学生掌握相应的知识点,可能就会针对性的设计一些题目,让学生用当堂课所学习的函数或方法来解决问题,到了后面学生接触的函数更多了,我设计的题目就不会仅仅限于用一种函数或一种方法来解决,而是让学生自由地发挥,只要能解决问题的方法都可以使用,同时让学生比较不同方法之间的差异、优劣,引导学生如何用更好的方法去解决问题。如用while语句和for语句来求解1到100的和,用条件运算符和关系运算符来实现比较两个数或者是多个数的大小等。同时还鼓励学生找程序的错误,上机时很多同学在编译出错后不会自己主动去找出问题所在,直接找老师,老师忙得不可开交,实际指导的效率并不高,因此我会调动学生相互改错,对表现突出的学生给予一定的实验课分数的奖励。
四、改变考核方式
结合本课程的特点,我们采用笔试、上机考试以及平时作业相结合的综合考查方式。笔试部分侧重于基本概念、基本语法以及基本编程思想的理解和掌握。上机部分是让学生在规定的时间内解决给定的题目,上机调试通过。结合学生课堂回答问题和平时作业的完成以及上机调试改正的情况,构成学生的平时成绩。考核中,笔试占到60分,上机占到30分,平时占到10分。通过这样的考核方式,激励学生上课认真听讲,回答老师提出的问题,课后认真完成作业,而不是相互抄袭,使得学生充分把握上机的宝贵时间,不断的调试程序,解决语法错误,培养自己处理实际问题的能力,督促学生认真编写程序,不再偷偷玩电脑游戏,同时经过上机考试,让学生积累临场作战经验,以适应以后的计算机等级考试。
“高级语言程序设计”课程是实践性很强的重要先修课程,研究探索有效的课堂教学设计实验方法,可提高教学效率和质量,加深学生对讲课内容的理解,激发学生学习兴趣和钻研精神,规范学生的编程思想,提高学生的应用能力,为以后其他相关课程的学习和实践奠定坚实的基础。
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)31-0110-02
Abstract:In recent years, all levels of schools in our country are trying to use the flipped classroom teaching mode, advanced language programming is an important compulsory course for students in our university,it aims to cultivate students' computer programming ability and practical application ability. Compared with the traditional teaching mode, the flipped classroom teaching mode has more advantages,it can effectively stimulate the students' thirst for knowledge and learning enthusiasm for program design courses. To this end, it is necessary for college teachers to study the implementation of the flipped classroom actively.
Key words:Teaching mode; Flipped Classroom; Advanced language programming
1 引言
随着2011年美国可汗学院的兴起及大型开放式网络课程MOOC的迅速发展,翻转课堂教学开始风靡中国,受到教育界的广泛关注,大量的大中小学教师开始利用翻转课堂进行各种课程教学,并不断地进行更深入细致的探索。
祝智庭对翻转课堂进行了较为准确的界定,翻转课堂实施过程的实质就是将传统教学模式的“知识传递”与“知识内化”两个过程反转,知识传递过程从课堂上转移至课堂下或家庭中,从时间和空间两个维度实现学习过程的完整翻转,是“先学后教”的教学新范式。[1]
翻转课堂即课堂内外进行翻转,教师应设计好教学过程,制作相关的学习视频,要求学生在上课之前自行观看,让学生对新知识进行学习,也就是课外先完成课程的自学,学生将学习中遇到的问题反馈给教师,在课堂上主要是对这些疑问进行解答等。翻转课堂在理论上是很成功的,但是在不同课程的实施过程中总会存在一些具体问题,尤其在这种模式还不甚成熟的时候。
高级语言程序设计作为我校学生的一门公共课,也是一门重要的必修课,旨在培养学生的计算机编程能力、实际应用能力,是实践性非常强的一门课程。如何更好地进行课程的教学是一名计算机教师急需研究的问题。笔者认为翻转课堂作为一种目前较为流行的教学模式在高级语言程序设计课程的教学中应用极具研究意义。
2 翻转课堂相对传统教学方式的优势
教师、学生、教学内容是课堂教学不可缺失的三个基本元素。除此之外,教学方法、教学手段、教学技术等也是课堂教学的构成因素。这些都直接影响到教学质量。教育普遍面临着教学对象的个体性,也就是说我们所面对的学生水平的不一致。翻转课堂作为一种新的教学模式,尊重学生的个体差异,体现了以学生为中心的人性化教育。
对于高级语言程序设计课程来说,学生的学习基础不尽相同,有些同学在开课之前可能对课程有了一定的基础,有些同学可能从未接触过。此外,学生接受知识的速度能力也不可能同步。传统的教学方式是教师在课堂上完成知识的讲授,在有限的时间内学生获得的知识有所差别,可能有些同学已经完全理解了所有知识点,有些同学却一知半解,甚至不知所云。这种点对面的传授方式主要以教师为中心,没有也不可能实现教学以学生为中心。而翻转课堂可以很好地解决这个问题,教学内容的自学是在课外完成的,学生可以根据自己的学习基础、个人能力合理地安排学习的时间、空间,此时教师对学生的知识讲授其实已经从点对面转变成点对点。
传统的教学方式中除了教师的讲授,为了更好的教学效果,一般会加强师生之间的互动,但是往往教师关注的是那些在课堂上较为活跃的学生或者是一些较为优秀的学生,或者说这些学生会主动引起教师的关注,而大多数有较多疑问的同学可能因为不好意思提出问题,或者因为有太多疑问无从提问,并不会主动提出问题。这样明显不利于课程后续的学习。翻转课堂却能更好地避免这类问题的出现,学生向教师提出问题,这个过程不再局限在课堂上,也可以是在课外以其他方式实现。这样教师在课堂上解决问题时,其实关注的对象已经变成学习上有困难的学生。
3 翻转课堂实施方案研究
以高级语言程序设计课程来讲,翻转课堂教学模式非常适合这类计算机课程。翻转课堂的基本步骤是教师先制作学习视频,然后学生在课后自选时间完成课程知识点的自学,最后在课堂上教师解答问题。实际实施过程中当然也会遇到很多细节问题。
首先,教师视频的设计和录制是课前必需的准备工作,教师制作的视频质量直接关系学生的学习效果。教师制作的视频可以分为知识点视频和综合知识视频。知识点视频也就是将各知识点分别制作成小视频,学生依次先观看这些小视频,视频最后是教师提出的一个小问题,学生可以通过完成这些问题来检验自己对知识点是否基本掌握。完成这部分学习后,再进行综合知识视频学习。综合知识视频的主要内容是根据某个章节的多个知识点综合而成的例题的演示。学生观看视频后再完成一个相似例题以检学习成果。这种模式可以促进学生根据自己的能力合理地安排自己的学习时间,可以利用课后的各种碎片时间。此外,碰到较复杂的知识,学生可以通过多次反复播放视频来加深理解。由于视频是课前准备,这就意味着不需要像传统课堂上课一样必须是教师本人在指定时间空间进行,也就是说我们完全可以群策群力,集合整个课程组的所有教师,集思广益,尤其是充分听取有经验的高职称教师的建议,设计制作出高水平的视频,这样相当于学生在接受最高水平教师的教学,教学质量也不再简单依赖于某个任课教师的教学水平。
第二,学生的积极性会直接影响翻转课堂的教学效果。翻转课堂要求学生具有较高的学习自觉性。课前学生需要自行选择时间去观看学习视频,如果学生本身自觉性不高,课前并没有按照要求去观看学习视频,那么将造成严重的后果,在接下来的课堂学习将无事可做,o话可说。对于一些知识较为连贯的章节,一次学习的缺失将会导致后续更多问题出现。所以笔者认为任课教师在不了解授课班级学生学习态度的情况下,可以先试行翻转课堂模式,通过前几次课的情况首先摸清学生情况。考虑到当前学生中存在学习主动性不高的问题,不一定要每节课都采用翻转课堂的教学模式,而是根据学生情况、教学内容等采取多种教学模式结合灵活应用,比如任务驱动法等。在教学中应该充分考虑如何提高学生的学习兴趣,可以采用案例式的教学方式,给出一个结合教学要求和能引起大家兴趣的案例,引导大家一步步地完成,这样学生不仅能获得成就感,而且会觉得自己学习的知识是有用的、有趣的。这样良性的循环,在学生培养出一定的学习积极性后,翻转课堂取得的效果才能真正提高。
第三,课堂设计是翻转课堂效果提升的关键。课前的自学当然和学生本身的自觉性、理解力等息息相关,但是在同等情况下,课堂上教师对学生学习的指导是学生对知识理解层次提高的重要因素。如何进行课堂的设计成为教师必须认真考虑的问题。课堂不仅仅是对学生提出问题的简单解答,这要求教师有较高的课堂教学设计水平以及对课程内容的把控。在课前教师对学生在课前自学过程中的疑问要有比较清楚的认知,这些认知可能是来自教师在多年教学过程中的经验,也来自当前班级学生的各种渠道的反馈。教师应合理安排课堂时间,不仅仅是简单地对学生提出的问题简单罗列和解答,应该从这些问题中分析学生学习不足的实质,同样知识点合并,同一知识点由浅入深、不同知识点的先后次序都是必须考虑的问题。对于非常重要、核心的知识,就算学生没有提出疑问,还是需要通过课堂练习的方式加深学生印象或加以检验考核。
4 结论
将翻转课堂应用于高级语言程序设计课程,学生课前自行观看教学视频完成小练习,课堂上教师解决疑问及检验学生的学习效果,此种教学模式相比传统教学模式来说,更加有利于提高学生学习兴趣,促进学生学习积极性,进一步提升学生学习效果,有利于培养学生的自学能力和应用能力。
参考文献:
[1] 祝智庭,贺斌,沈德梅.信息化教育中的逆序创新[J].电化教育研究,2014,35(3):5-12.
[2] 张文文.“翻转课堂”对我国教育改革的启示[J].湖北第二师范学院学报,2016,33(5):113-115.
[3] 唐君.“翻转课堂”三问我国高校教学[J].天中学刊,2015,30(5):136-138.
[4] 戴宁,曹辉.“互联网+教育”:颠覆、应对与重构[J].教育与教学研究,2016,30(7):16-20.
[5] 彭娟,夏飞.“慕课”对地方应用型高校教学的冲击与应对策略[J].湖南第一师范学院学报,2016,16(3):60-63.
中图分类号:G642 文献标识码:B
1引言
“高级语言程序设计”是各类学校计算机相关专业的一门重要的专业基础课,许多学校都将其安排在新生入学后的第一学期开设。
对刚接触这门课程的学生而言,“高级语言程序设计”课程的中心内容包括两个部分:高级语言和程序设计。从高级语言和程序设计的关系来说,程序设计应该是这门课程的核心内容。
对于如何搞好“高级语言程序设计“的教学,不同的人有不同的看法。笔者在多年的教学实践中,多次尝试采用“功能意念教学法”,取得了教好的效果。本文就是这一教学法的简单总结。
2功能意念教学法
“高级语言程序设计”的功能意念教学法就是从程序的一般功能、程序的一般结构以及程序设计的一般过程出发,按照功能+意念+机制的方式组织教学。简单地说,就是为了设计一个程序,先解决我们需要做些什么,然后解决程序需要做些什么,最后解决高级语言怎么做到等一序列问题,也就是从问题和任务出发进行教学。
以上所述主要围绕程序最基本的功能展开,至于其它功能部分,比如C语言的编译预处理、宏、模块化、混合语言编程、指针、文件、链表等,也可以从功能意念的角度展开教学。
在具体实施教学的过程中,可以根据教学要求按照自顶向下的原则制定出所教授的高级语言的基本功能意念表,以方便教学。
3算法的意念作用
笔者认为,程序设计其实就是为了解决某个问题而从我们所熟悉的程序设计语言中挑选合适的语句做一个适当的排列组合。
在上面的这段话中,明显地有两个值得我们进一步探讨的关键词:合适的语句和适当的排列组合。现在我们的问题是,如何挑选合适的语句?又怎样做适当的排列组合?
这两个问题的解决有赖于所谓算法的概念。因此,为了解决这两个问题,我们必须针对面临的具体问题设计出有效的算法。
算法是解决特定问题的一序列操作的集合,代表的就是一种意念,换言之,就是设计者所希望的对数据进行加工处理的有序的步骤。这种操作步骤的有序性就决定了如何对所挑选的语句做适当的排列组合。
由粗到细是我们解决问题的一种典型的思维过程。按照这一思维特点,算法设计也有一个由粗到细的过程,即算法细化。
算法细化要适可而止,即有一个度的问题,那么我们又该如何把握这个度呢?一般而言,算法细化只要细化到其中的每一操作步在准备采用的语言中都能找到对应的语句直接加以实现即可,而且也必须细化到这种程度!算法细化好了,如何挑选合适的语句也就解决了。
总之,算法决定了如何挑选合适的语句以及怎样对所挑选的语句做适当的排列组合!因此有了算法,我们只需要通过很简单的翻译转换就可以很容易地得到程序。
4高级语言的相关功能成分
高级语言是书写和记录程序的工具。为了适应程序的功能需要,高级语言自然应该提供相应的手段或机制让程序设计人员借以实现所需要的程序功能,高级语言的相关功能成分指的就是这些手段和机制。
4.1数据安排机制
高级程序设计语言中的数据安排机制主要体现为用于定义常量、变量、数组和记录(或结构体)等的功能成分。单纯从语言成分的角度来看,这些功能的实现主要是由一组和数据类型有关的关键字来体现的。换言之,高级语言为我们提供了一组与数据类型有关的关键字以便程序设计人员根据自己的意愿对数据空间进行组织和安排。以C语言为例,这些关键字主要有:char、int、float、double、struct以及signed、unsigned、short、long,等等。在源程序中来看,数据空间的组织和安排都是通过基于上述关键字的数据定义语句来实现的,比如:
1)int abc;
2)char abc[12] ;
3)*float abc;
4)struct abc{x char;y int;z float;}
struct abc xyz;
作为程序设计的工具,为了尽可能给程序设计人员带来方便,高级语言除了支持基本数据类型外,还支持用户自定义类型,如上面的例4)。
4.2数据I/O机制
高级语言中的数据I/O机制主要体现为各种用于数据输入/输出的语句或函数(库函数)等。在C语言中,这些函数常用的有:
fprintf、printf、sprintf、vprintf、vfprintf、vsprintf、
fscanf、scanf、sscanf、fgetc、fputc、getc、putc、getchar、putchar、fgets、fputs、pus、gets等。
以上列出的是所谓系统预定义函数,即标准函数或库函数。此外,用户还可以根据自己的需要以上述标准函数为基础自行定义一些可以得到某些特殊I/O效果的函数。
4.3数据处理机制
前面已经提到,数据的内部加工处理主要包括数据在主机内部的传送和各种运算,高级语言的数据处理机制就
是指为此目的而提供的各种运算符。在C语言中,这些运算符包括为数据传送提供的赋值运算符“=”和为数据运算提供的算术运算符“+、-、*、/、%、++、--”、关系运算符“>、>=、
4.4流程控制机制
高级语言中的流程控制机制主要体现为用来实现分支程序结构、循环程序结构以及子程序结构的功能成分,换言之,就是分支语句、循环语句以及子程序的定义和调用机制等。在C语言中,这些语句包括:if语句、switch语句、goto语句、break语句、continue语句、for语句、while语句、do…while语句以及return语句等。
5结束语
历史上高级程序设计语言有好多种,目前仍然流行的也有好几种,而且还在不断的推陈出新。从“功能意念”的角度,不难看出,所有的高级语言都应该有相类似的功能成分,以解决程序设计所面临的共同问题。因此,只要我们认真地学好一种语言,重点掌握好程序设计的一般思想方法,就可以很容易地掌握另外一种。从一种语言过渡到另一种语言,从语言的角度来说,只不过是一种形式上的转换而已,它们的内容(程序的功能)和程序设计的思想和方法却总是相通的。
参考文献:
[1] 谭浩强. C程序设计(第三版)[M]. 北京:清华大学出版社,2005.
[2] Brian W.Kernighan, Dennis M. Ritchie. C程序设计语言(第二版)[M]. 北京:清华大学出版社,2002.
[3] Bruce Eckel著. 刘宗田等译. C++编程思想第1卷:标准C++导引[M]. 北京:机械工业出版社,2002.
高级语言程序设计是大部分高校计算机专业本科生接触的第一门计算机语言课程,是计算机专业的核心课程,也是数据结构、软件工程等后续专业课的基础,其教学效果的好坏直接影响到学生对计算机软件开发的认识和后续课程的学习。传统的教学侧重于知识的传授,对学生的学习兴趣等因素重视不够。笔者在多年的高级语言程序设计课程教学实践和研究中深深体会到,培养、激发和提高学生对课程的兴趣对提高教学质量具有至关重要的意义,浓厚的学习兴趣是搞好课程教学、提高学生学习效果的关键。如何培养、激发和提高学生的学习兴趣,是一个值得广大计算机教育工作者深入研究和探索的问题,本文将结合笔者多年的教学经验和对本科计算机教学改革的尝试,从6个方面来探究这个问题,并给出相应的方法。
1融洽师生感情,创造良好学习氛围
兴趣是一种巨大的激励学习的潜在力量,也是人们认识某种事物或爱好某种活动的倾向,这种倾向总是和一定的情感相联系。美国心理学家布鲁纳提出:“学习的最好刺激是对所学材料本身发生兴趣,兴趣可以孕育愿望,可以滋生动力[1]”。当一个学生对自己所学的知识产生兴趣时,他就会积极主动地去学习探索,而不会把学习看成是负担。浓厚的学习兴趣会
使学生对知识的世界进行积极地、不懈的追求和探索,充满激情,会主动克服所遇到的一切困难。正如孔子所说:“知之者不如好之者,好之者不如乐之者。” 学生具有明确的学习目的、高昂的学习情绪、浓厚的学习兴趣、强烈的学习愿望,是学好课程的最重要的内部动力。据国外学者研究发现,获得成功的诸因素中,兴趣占25%,而失败的诸因素中,缺乏兴趣占35%,足见兴趣在取得成功中所起的重要作用。
培养学生的学习兴趣,首先要搞好师生之间的关系。古语云:“亲其师、信其道。”师生之间感情上的融洽程度,会直接影响到学生对课程的喜好程度,以至影响最终的教学效果。要想使学生喜欢老师,教师必须从自身做起。良好的道德修养和高尚的人格魅力,认真的工作态度及扎实、丰富的知识,是爱学生和被学生爱的教师的内在需求。教师首先要自修,自身素质好的教师,才能对学生产生吸引力,有了这个吸引力,学生才会悦纳老师。其次要尊重学生,关爱学生,公平对待每一个学生。只有这样,学生才会真正喜欢上老师,进而可能喜欢这个老师上的课程。
2让学生一开始就认识到课程的重要性
要想培养学生的学习兴趣,就要让学生一开始就认识到课程的重要性。任何人对事物的认识都是由浅入深,学生对一门课程的认识也是如此,刚开始还没有意识到该课程的重要性或者认识不深,随着教学的深入,学生逐渐认识到课程的重要性,等到认识全面的时候已经到了学期的期末,想要好好学习却已经有些晚了。为此,作为教师有必要在刚开始的教学活动中,让学生充分认识到课程的重要性,认识到该课程无论是在专业体系中还是在日常生活中都是至关重要的,让学生在主观上重视起来,进而有动力去学,并在学习中逐渐体会到学习的乐趣,从而对课程建立起浓厚的学习兴趣。
在讲授高级语言程序设计时,教师除了在第一次课上向学生介绍课程在计算机专业体系中所处的地位及作用外,还需结合课堂内容给学生列举高级语言在生产实践中的应用及其发展前景,使学生意识到学习高级语言确实学有所用,无论是对社会发展还是对自身就业都有所帮助,这样学生就会对这门课程更感兴趣,也更有动力去学。
3精心选择例题
由于没有编程经验,大部分学生接触到这门课程时,对编程会感到非常新奇、好玩,但随着课程中大量的语法规则、概念的不断引入,问题难度的逐渐加大,其中一部分甚至是大部分学生会感觉枯燥无味。为了使学生保持最初的好奇心乃至转化为学习兴趣,需要教师在教学过程中精心地选择例题。
1) 选择趣味性的例题。
在课堂和实践教学过程中可选择一些趣味性的例题,如“扑克牌洗牌”、“百钱买百鸡”、“爱因斯坦阶梯”等。这些充满乐趣的问题有利于学生轻松愉快地学习、积极主动地思考,而且印象深刻。
2) 选择能够解决实际问题的例题。
传统的高级语言程序设计教学主要以语法规则的逐步深入为线索来进行教学,这种方法有利于学生对语法知识循序渐进地学习,但往往是学生学了大半学期,学会了语法规则,却不知道这些语法规则有什么用,最终的后果是所学和所用严重脱节。因此在教学过程中,笔者所在教学梯队精心设计了一些能解决实际应用问题的案例,每一章安排一个比较完整而且有实际应用价值的实例,例如:求玉米地产量、求绿化带面积、学生成绩管理、图书卡管理等日常生活中能遇到的实际应用问题。在教学过程中引导学生首先把实际问题转换成为数学问题,再为数学问题的求解寻找合适的方法,然后为实现计算方法给出具体的算法,最后利用高级语言编写程序、调试、测试。针对每一个问题,都引导学生学会如何分析问题、解决问题,而不是只去学语法规则。这样学生就能了解如何利用计算机解决现实世界中的问题,从而增加他们学习的动力和积极性。当然,在案例的编排上,要注意结合语法规则的循序渐进。
3) 在游戏中快乐学习。
游戏是绝大部分学生都喜欢做的一件事情,如果能把知识的学习融入到游戏中去,就能寓教于乐[2]。高级语言程序设计的目的是让学生熟练掌握一门计算机高级语言,熟悉利用该语言开发软件的过程,进而解决实际问题。高级语言本身的基础知识和基本操作的学习相对来说比较枯燥乏味,但是我们不能把枯燥乏味带给学生,使学生对学习失去兴趣,要使学生在快乐中学习。正因为这些,在计算机教学设计中要充分利用游戏的作用,利用游戏的精彩,提高学生学习计算机的兴趣。
计算机游戏非常多,从扫雷、五子棋到三国等,教师可以引导学生利用所学的计算机高级语言来编写一些简单的游戏,不仅可以锻炼学生的逻辑思维能力,而且可以让学生在快乐中掌握该种语言的基础知识、熟悉开发项目的过程,更能激发学生的学习兴趣。学生在游戏过程中生动地学习,在学习过程中快乐地游戏,从而达到预期的教学目的。
0引言
医药院校计算机专业的教学目标是培养出能够服务于中医药行业的计算机专业技术人才[1]。为使学生能够将计算机和中医药知识进行有机的结合,更好的发挥专业优势和特长,本文探索了与中医药特色相适宜的“高级语言程序设计实验”教学模式,进行了实验课程教学创新模式的改革。
在实验教学过程中,我们设计一些由易到难的以中医药作为背景的实验案例,有意的对学生进行引导,促进学生对中医药院校计算机专业课程体系全面而又深入的理解,逐步找到计算机和医学的契合点,为学生将来在计算机学科和医学两个学科领域进行交叉学科的科学研究工作打下良好的基础,成为真正有特长、有特色的计算机专业人才。
1实验教学存在的问题
1.1学生缺乏学习的主动性
以往的实验教学大体上实行的是“课前预习——课堂实验——课后学生完成实验报告——教师评阅并评定成绩”的串行模式,在本质上还是应试教育。因为相当比例的学生的实验目的是通过考核或者得到好的分数,所以常会出现学生不重视预习,实验时感到内容枯燥,缺乏主观能动性,课后不认真总结思考,甚至出现缺课、抄袭报告等现象,学生提交的实验报告无法全面反映取得的实验效果,教师只凭实验报告评定成绩有失真实,也无法真正了解学生的学习情况。
1.2 缺乏与中医药知识的结合
由于中医药院校的计算机专业在课程设置上具有中医药特色,有一部分医学课程,而学生在学习过程中体会不到计算机和医学的结合点在什么地方,甚至认为学习医学课程没用,这和我们的初衷是相违背的,需要加强对学生的引导。在实验教学过程中引入一些以中医药作为背景的实验案例,进行医学类相关题目的训练,使学生实现对计算机和中医药知识的有机结合。
2 教学模式研究与改革
2.1课程改革
传统的高级语言程序设计实验是附属在理论课中的,实验学时比较少,只有24个学时,这对于实践性较强的课程来说,实验学时是很欠缺的,远远不能满足提高学生编程能力的目的。学生也反映单靠24个学时,实验是做不完的,甚至体现不出实验效果。基于此,我们以新的专业培养方案为指导,设置独立于理论课的实验课程,《高级语言程序设计实验》在教学大纲中独立设置,独立学时学分,学时增至36学时,在此基础上增加24个学时作为机动时间,加强实践训练。
2.2 教学改革
2.2.1设置目标,激发学习热情
在每个实验开始前明确列出学生完成该实验应该具备的知识点,让学生有目的地进行资料的查找和学习。在实验课上给出实验任务,使学生明确所要达到的目标。通过验证性实验强化基础实验技能,帮助学生树立自信心;通过综合性实验提高学生的综合应用能力;通过设计性实验提高学生创新能力,不断激发学生的求知欲和学习激情,使学生学而有趣,达到教学目标。
实验过程中发挥学生的主观能动性,重视教师的主导作用,遵循“教师是主导、学生是主体”的“双主”原则[2],突出学生的主体地位,增强学生的自学能力。
2.2.2 设计合理的案例
我们把实验教学内容的优化放在改革的首要位置。学生尽管学习了多门医药类课程,但体会不到其用处所在,为使学生能将计算机和中医药的知识进行有机结合,老师在教学过程中必须进行有意的引导,要求学生在完成本课程教学计划规定必须完成的题目之后,编制一部分以中医药作为背景的设计性与创新性实验。这些实验题目一部分是由老师精心设置的与中医药相关的题目,比如中药复方配伍的药效检测程序设计;一部分由学生根据自己所学知识选取感兴趣的题目进行设计。教师设计的题目要遵循由浅入深、由易到难的原则,避免一开始设计的题目就太难而使学生感觉无法入手,从而产生厌烦心理,这就要求授课教师设计出学生感兴趣、符合专业特色的案例,以达到良好的教学效果。
2.2.3 因材施教,针对性地培养学生的实验技能
整齐划一的教学要求不能适应学生的个体差异[3]。同样的实验任务后进生吃不消,失去学习信心,尖子生吃不饱,缺乏兴趣,所以教师既要考虑学生的总体基础,又要考虑学生的个体差异,针对性地培养学生的实验技能。在学生初步具备分析和解决问题能力的基础上,加强知识的深广度,与实际接轨,因材施教。对基础差的学生主要通过针对性较强的习题使学生树立自信心,培养学习兴趣;为那些学有余力的学生增加一些创新设计性实验,创新设计性实验以课题形式进行,学生自由组合,自己选题,自己设计实验方案;让少数优秀学生设计一些中医药类实用软件,通过参与大学生研究训练(SRT)项目或参加科研项目,提高他们综合应用知识的能力。
2.2.4 多方位的考核方式
《高级语言程序设计实验》独立设课后需要单独考核,为了促进学生编程能力的提高,采用上机考试、单元考核、大作业与平时成绩相结合的方式进行考查。上机考试试题主要侧重于基础知识、基本能力的考查;单元考核侧重于学生按时按量规范编程的训练;大作业侧重于编程语言与中医药知识的综合应用;平时成绩主要是对学生平时的学习态度、学习的自觉性和课堂作业完成情况的考核检查。多方位的考核方式可以较好地培养学生学习的综合能力。
2.2.5 不断更新教学资料和教学案例
教材一般滞后于实际教学,而教学是活的,教师应准备大量的不断更新的教学资料以及教学案例。在教学过程中,教师不断根据学生对教学案例的反应,找出不足之处,通过反复比较研究,得出最佳教学案例,随时补充新的案例。选编经典、切实可行的案例需要教师有很深的专业知识和广博的案例积累,所以对于教师而言需要做大量的工作来提高自己的专业素质。
3 结束语
本文探索了与中医药特色相适宜的“高级语言程序设计实验”教学模式,在实验课程中因材施教;通过有意的引导,合理的案例,多方位的考核方式促进学生将计算机和中医药的知识进行有机的结合,使学生在学习程序设计语言的同时把中医药知识巩固并掌握。通过针对性地培养学生的实验技能,提高了学生的综合应用知识的能力和创新能力,获得较好的教学效果。
参考文献:
[1] 窦彦玲.医药院校计算机专业建设的研究与实践[J].中国教育技术装备, 2012,3:36-37
[2] 傅胤荣.C++程序设计课程改革探索[J].高等教育研究,2008, 2: 47-48.
[中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2015)08-0125-02
一、引言
在信息技术高速发展,全面建设智慧城市、智慧校园的大背景下,传统的课堂教学也面临着变与不变的外部挑战。[1]新兴技术的不断冲击,使得课堂教学不再是师生间单一的教与学关系,更多的是师生间平等的对话与互动,传统课堂已无法满足教育需要。将信息技术与教育深度融合,优化教育模式,已经成为一种必然的趋势, 由此智慧课堂这一新的教学模式便应运而生了。智慧课堂是指充分利用信息化技术,以引导学生的高度参与以及主动性的充分发挥,以自主地发现问题、研究问题和解决问题为主要学习形式,是以培养多样化、高素质、创新型人才为目标的教学方式。[2]相对以教师为中心的传统课堂,智慧课堂强调以学生为中心,注重学生的主动学习、合作学习和快乐学习。[3]
作为高校理工科电子、计算机等相关专业的一门重要基础课程,高级语言程序设计的目标是培养学生的程序设计理念、掌握程序设计的基本方法,培养学生熟练使用C语言编程解决实际问题的能力,为后续程序设计课程的学习和应用打下扎实的理论和实践基础。[4]学生是否具有较高的编程能力和良好的编辑习惯是衡量其对该课程掌握程度的一个重要指标,而编程能力的提高和编程习惯的养成离不开上机实践,因此上机实践是高级语言程序设计教学中的一个至关重要的环节。[5]
本文针对高级语言上机教学的课程特点和存在问题,充分利用上机实验室的信息设备优势,将信息技术与教育深度融合,实现上机教学的智慧课堂。
二、教学现状和问题
一般院校的高级语言程序设计理论课和上机课的比例为1∶1,由32学时理论课和32学时上机课组成。上机课目前多采用传统的“教师讲授―教师演示―学生上机练习”的教学模式,主要存在以下问题:
(1)学生编程的信心和积极性有待提高。高级语言程序设计的开课时间设在大一的第二个学期,此时绝大部分学生对计算机软硬件知识缺乏全面了解,再加上C语言本身学习起来有难度,使学生不能很快掌握算法的思维特点,编程能力、调试能力普遍较差,增加了C语言上机学习的难度。很多学生在上机的过程中非但没有对编程产生兴趣,反而还产生惧怕心理,进而放弃学习。
(2)学生自主分析问题、解决问题的能力有待提高。目前上机教学模式以教师“教”为中心,学生过多依赖于实验指导书和教师,基本处于被动接受状态。在上机课中常出现“写程序就抄书,出现问题等老师”的现象,分析错误、动手调试本是最能发挥学生能动作用的环节,现在却由教师来承担,往往导致学生离开指导书和教师就写不出程序、调试不了程序的局面,很难培养学生在程序设计上的创新能力和逻辑思维能力。
(3)机房得天独厚的信息技术环境没有得到充分的利用。一般机房都配备有计算机、高速局域网和多媒体教学管理软件,具备开展智慧课堂的条件。以我院机房为例,采用的是海光多媒体软件,海光多媒体软件是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能于一体,并能同时实现屏幕监视和远程控制等网络管理的目的,其核心功能包括教师演示、学生示范、语音教学、遥控辅导、屏幕录制、屏幕回放、提交作业、电子抢答和文件传输等。但目前该软件主要用于教师演示和收发文件,现有的信息技术设备没有得到充分的利用,信息技术改变教育方式没有得到充分的体现。
三、智慧课堂开展内容
针对以上情况,本文将充分利用机房的信息技术环境优势,将信息技术与教学深度融合,通过分组合作学习、任务驱动教学、网络学习和多元化考核等教学手段,创建高级语言程序设计上机教学的智慧课堂,实现学生主动学习、合作学习和快乐学习。
(一)小组合作学习
针对部分学生不能单独完成编程及缺少兴趣的问题,采用分组学习的教学模式,每次上机课将学生分为4人一组,每组学生通过合作学习共同完成一个实验任务。小组合作学习一方面更能突出学生的主体地位,培养学生主动参与的意识,激发学生的学习兴趣;另一方面学得好的学生可以带动其他学生,在达到学习均衡的同时,也培养了学生的合作能力和团队精神。
分组合作学习的关键是有效地组织学生学习,没有组织的学习会使课堂变得嘈杂、分散,所以合理划分小组是分组合作学习的首要前提。主要考虑两种分组方式,第一种是学生自愿组合,第二种是教师按学生的基础分组。第一种分组方式有利于调动学生合作学习的积极性,激起学生学习的兴趣,但是自由式的小组组合很可能出现分组不均衡的现象,即学习基础好的学生分在一组,学习基础薄弱的学生分在一组;第二种分组方式需要教师在全面了解学生的前提下,根据班级内的情况,有意识地将不同基础、不同类别的学生分到一组,使班级小组间基本上是相似的、均衡的。综合考虑两种分组方式的优缺点,可交替采用两种方式进行分组。
小组划分后需进行合理分工,每一组选择一个组长,组长协助教师组织任务攻关工作,同时监督组员,避免出现“蹭组”现象。组长的选择要考虑学生的成绩、与同学间的关系等因素,可采用自由推选的方式,给每个学生改变角色和锻炼的机会,进而提高其学习兴趣。
(二)任务驱动教学
在上机实验过程中,以完成一个具体的任务为线索,把教学内容隐含在每个任务之中,要求学生在具体的任务驱动下,在讨论和对话的氛围中,进行自主学习和协作学习。这样学生在完成任务的过程中始终处于主体地位,不仅提高了学生的积极性,也培养了学生的探索与创新精神。任务完成后,随机挑选或通过海光多媒体软件的“电子抢答”功能选出若干小组,通过软件的“学生演示”功能进行演示,并引导学生进行总结和改进。
在任务驱动教学中,任务设计的质量直接关系到教学效果。在设计任务时,要以学生为中心,根据学生的实际情况和学生感兴趣的方向来设置任务,同时要注意高级语言知识点的系统性和连贯性,将理论课的知识点融入上机任务中,使学生在完成任务的过程中,既巩固已学过的内容,又探索新知识,实现总体的教学目标。
例如,在练习C语言控制结构中的选择结构时,任务设计为:设计一个程序,输入某年某月某日,要求计算出这一天是该年的第几天。学生拿到任务后,分组讨论程序思路,教师通过管理软件随机选择若干小组听取他们的设计思路,根据回答情况进行引导,学生得到以下正确思路并编程实现:
1.从键盘上读入3个整数,分别作为年、月、日。练习输入函数。
2.要计算出某天是当年的第几天,应该将当年中本月之前所有月份的天数相加,再加上本月的天数。根据所输的月份练习switch选择结构。
3.考虑闰年问题,二月是一个特殊月,如该年是闰年,则二月有29天,否则,便是28天。根据所输的年份练习if选择结构。
4.输出答案。练习输出函数。
这个有趣的任务让学生在讨论中学会了选择结构的使用方法,并了解了switch和if这两种常用的选择结构的区别,且巩固了前面学习的输入输出函数知识点。
(三)网络学习
为学生提供丰富的网络学习资源。利用海光多媒体软件的录制和回放功能,可以在执行“教师演示”播放教师机上的屏幕画面的同时,将播放的图像画面以动画影像的形式录制下来,跟不上教学进度的学生可通过“回放”学习。将录制的视频、课件、参考资料和课外拓展练习资料等上传到课程群,提供丰富的网络学习资源,让学生学习不受时间、地点的限制,实现全方位学习。
(四)多元化考核方式
考核方式对学生有重要的学习方向引导作用,在智慧课堂的教学模式中,采用多元化考核方式,进一步调动学生的学习主动性和积极性。学生的上机成绩由三部分组成:课堂表现考核,由教师根据学生的分组表现、课堂展示和任务完成情况给出成绩,占总成绩的30%;组内考核,每次实验由小组长根据组员的表现打分,最后取平均分,占总成绩的20%;期末上机考试,占总成绩的50%,对学生的总体掌握情况进行测评。
四、结语
本文充分利用了机房得天独厚的信息技术环境,采用小组合作学习、任务驱动教学、网络学习和多元化考核等教学手段,创建了高级语言程序设计上机教学的智慧课堂。实践证明,该教学方法深受学生的欢迎,有效提高了学生的积极性,取得了良好的教学效果。
[ 注 释 ]
[1] 黄荣怀,张进宝,胡永斌,等.智慧校园:数字校园发展的必然趋势[J].开放教育研究,2012(4):12-17.
[2] 吴晓静,傅岩.智慧课堂教学的基本理念[J].教育探索,2009(9):6.
培养创新人才是我国发展战略的内在需要,高等学校担负着培养具有创新精神和实践能力的高级专门人才的神圣使命,应该责无旁贷地开展创新教育,为社会不断输送具有创造性思维和创新能力的各种专业人才[1]。
在高等学校高级语言程序设计课程教学中,学生通常一开始就接触具体的语法。随着所学知识的增多,学生原有的想法都没有了,变成了学习某种高级语言的机器。这种形而上学的教学方法往往让学生忽视了解决问题的过程,而将注意力都集中在语言细节上。最后学生掌握了大量的语言细节,却不会编程解决实际问题。有的学生开始学习某门课程想做许多事情,可学期结束后发现离自己的兴趣越来越远,所拥有的只是大量的知识,而学生一旦失去兴趣,学习的劲头也就少了很多。
好的人才应该能够驾驭知识和创新知识,而不应是知识的拥有者和附从者。因此,我们要积极探索培养创新型学生的学习模型,以适应国家培养创新型人才的战略需要。
1高级语言程序设计新学习模型
高级编程语言是为解决问题产生的,好的高级编程语言应该容易让人理解,因此,对问题的理解有助于对编程语言的理解。学生对生活和以前所学知识有大量的体验,也有许多新奇的想法,这些都是创新的源泉。学习高级语言程序设计不是让学生丢掉这些想法,而是让学生把已有的体验和所学的高级语言建立关联。这样,学生既可以通过自己以前解决问题的体验理解高级语言,又可以通过自己的体验进行有新意的编程实践,不仅不会扼杀已有的创造性,还会丰富自己的创造思维,掌握如何用编程实现自己的新奇想法。好奇心和兴趣是学生创新的源泉[2],课程学习应时刻围绕个学生的兴趣推进。激发学生的创新意识,调动其创新的勇气,最根本的是要尊重学生的个性和想象力[3]。
根据这种思路,在高级编程语言――C语言课程教学中,我们没有让学生一开始就学习数据类型、表达式等具体知识,而是在课程简介后安排了许多有趣的程序演示,如求两数之最大数、猜数游戏、估时游戏、输入重现、输入镜像、迷宫游戏、积分计算等,这些有趣的例子使学生可以将高级编程语言和自己以前的体验建立关联。
学生找到自己感兴趣的例子后,老师直接让学生读这些程序的源代码,其中就包含着许多学生没有学到的语句,如类型声明、表达式、条件语句、循环语句等。由于学生对例子的功能已经非常了解,所以会根据自己的经验和想法作出猜测,结果表明,经过努
力,学生还是基本看懂了代码。对于复杂一些的例子,老师可以在关键的地方稍加讲解。
学生基本理解演示例子的代码后,老师就C语言的特点、程序基本结构和一些注意事项作出提示和补充,学生很快就能掌握基本的编程。这一过程的学习学生不是强制记忆,因此不会轻易忘掉。
对于编程语言的细节,老师只告诉学生有哪些地方值得注意,让学生一一了解,至于具体的规定,学生可以自学,有疑问时和老师一起探讨。如果学生毕业以后遇到相关问题,可以通过查阅书籍,就能够解决问题。
2知识互动的学习模型
知识互动学习模型和传统学习模型的不同之处在于,在知识互动学习模型中,不是直接学习新知识,而是在和旧知识的互动中学习。正因为如此,它具有以下特点:
(1) 新知识和已有知识互动,学习新知识的同时激活旧知识,旧知识和新知识相互促进,交替增长。
(2) 新知识的学习没有压制已有的想法,相反能保持和发扬已有的创新性。
(3) 新旧知识交叉创新。
(4) 乘积式效果,新旧知识互动产生乘积放大效应,充分调动知识张力。
(5) 学生已有的兴趣获得继承和提升。
知识互动学习模型如图1所示。
知识互动学习模型和传统学习模型的不同如下:
(1) 旧的学习模型中,新学的知识压制了学生已有的创造性。因为新知识的学习往往只注重自身的知识结构,而忽视学生已有的知识结构和体验,虽然学生掌握了大量的新知识,却失去了原有的创造性。而在知识互动学习模型中,新学的知识和学生已有的知识结构和体验是一种平等的关系,新知识的学习在二者的互动中进行。
(2) 学生在新旧知识的互动中激发新想法,衍生新知识,不仅学到了要学的知识,而且旧知识也被激活。
(3) 新的学习模型更尊重学生内在的创造性,更能保持和发扬学生的创新能力,有利于培育既有知识又有创新能力的人才。
3知识互动学习模型实施方法
知识互动学习模型的实施方法如下:
(1) 在学习新知识的过程中,通过新知识唤醒旧知识,通过旧知识吸纳新知识。每学习一些新知识,就及时和旧知识充分互动。
(2) 避免一次大量学习与旧知识无关的新知识,正如给草添土一样,要慢慢添,边添边长,而不要一次添大量的土,把草压住。新知识的学习不要一味追求量,即新知识的细节让学生有选择地接受,而不要让学生一揽子全部接受。可以通过例子演示等方式,让学生将新知识与已有知识建立关联,而不要急于灌输新知识。这样做的另一个好处是给学生新旧知识发酵的时间,让新旧知识产生张力。
(3) 教师就新知识的关键点和注意事项及时做出讲解和补充。由于教学是围绕学生的兴趣进行,而不是按照新知识的体系面面俱到地讲解,因此教师应在学生学习过程中就新知识的关键点和注意事项及时做出讲解和补充。
(4) 注重学生自学与创新能力的发挥。在充分调动学生的兴趣后,以学生的兴趣为引导,把重点放在新知识的关键点和注意事项上,而让学生在实践中有选择地自学细节。老师应关注新旧知识的互动,并注重学生自学与创新能力的发挥,把课堂举例趣味化、实用化,让学生在自己感兴趣的实践中得到提高。
(5) 计算机知识与人文知识互动。人文教育不一定必须开辟相关课程,计算机广泛服务于社会的方方面面,尤其是非数字计算,这其中自然包含很多的文化发展教育。例如:算法是程序设计的核心,但至今为止,不是全部的算法都可以在现代计算机上实现,其原因就在于计算机空间的有限性和人类生命时间的有限性。在多重循环语句嵌套的教学中,如“百钱买百鸡”案例,教师不仅教学生循环知识点的使用,而且分析算法的时间复杂度,促进学生关注程序优化的重要性。教师更可以提出“人类基因图谱”绘制研究为什么出现在今天、禽流感基因为什么难于被绘制、感冒病毒为什么不可以提前预测等一系列问题。
4结语
高等学校担负着培养创新型人才的重要使命,而学习模型直接影响到能否保持和发扬学生的创新性。在这方面,知识互动的学习模型具有重要的价值和意义,值得进一步深入研究。
参考文献:
[1] 于衡,张竟洋.高素质创新人才培养之我见[J].辽宁行政学院学报,2008,10(07):143.
[2] 林崇德.培养和造就高素质的创造性人才[J].北京师范大学学报:社会科学版,1999(1):5-13.
[3] 岳晓东,龚放.创新思维的形成与创新人才的培养[J].教育研究,1999(10):9-16.
Exploration of Learning Model for Innovation Capability in High-level Language Programming Teaching
LI Xiao-dong, ZHANG Xiao-li
1.前言
汇编语言是我们理解整个计算机系统的最佳起点。人们往往认为汇编语言的应用范围很小,因而忽视了它的重要性。其实汇编语言对学习计算机科学与技术的人是非常重要的。所有程序,不论用何种语言进行编制,只有转成机器指令,运用机器的逻辑功能,功能才得以实现。
汇编语言直接a描述机器指令,比机器指令更容易记忆和理解。通过学习和使用汇编语言,我们才能够感知、体会、理解机器的逻辑功能,这样不仅可以为理解各种软件系统的原理打下技术理论基础,而且可以为掌握硬件系统的原理打下实践应用基础。
2.教学中存在的问题
当前高级语言的发展非常迅速,各种开发工具层出不穷,其功能也越来越强大。高级语言进行程序设计的可操作性越来越强,许多非计算机专业人员在不了解计算机的结构、没掌握计算机相关的专业理论和各种计算机语言具体编程等情况下,同样能很好地使用高级语言。所以,高级语言的发展弱化了汇编语言的地位,这使部分高职学生觉得汇编语言已不重要了,学不好没有多大的关系。所以,思想认识上的不重视,导致了部分学生学不好这门课程。
《汇编语言程序设计》的学习需要一定的英语知识。高职学生的英语基础普遍差,据有关职业教育方面的统计资料显示:在高职高专院校中60%的学生英语基础差;30%的学生有一定的基础,但对英语学习不感兴趣;10%的学生英语基础较好。实际上,普通高职高专院校学生英语的基础情况比统计的更严峻。这就为他们学习这一课程带来了一定的障碍。
针对这一系列的情况,笔者根据教学经验,总结了在高职院校教《汇编语言程序设计》的一些心得,希望对大家有所帮助。
3.注重课堂教学
3.1优化教学内容。
本课程涉及内容较多,教师应在讲课之前先对课本内容进行优化。并不是课本上所罗列的内容都需要讲,教师要有选择性讲解:对学生有用的而课本上讲得不全面的要补充讲解,而对学生用处不大的可以不讲或一带而过,争取做到“少而精”。
3.2让学生充分认识到该课程的重要性,提高学生的学习的兴趣。
“兴趣是最好的老师”,如何让学生对本课程感兴趣?笔者认为关键是把握好开学第一堂课。在学生刚接触本课程时,教师不要急于介绍理论知识,而是要强调该课程的实际应用,通过介绍汇编语言的特点和汇编语言在一些典型系统开发中的具体应用来激发学生的学习兴趣。
目前对单片机的灵活编程已经应用到各个领域,无论是尖端科技,如军事、通信、能源、机器人、交通、IT,还是现代工业、农业,如仪器仪表、汽车电子系统、家用电器、玩具、个人信息终端等诸多领域,都离不开单片机。而单片机的编程里大部分都使用了汇编语言,汇编语言的易用和灵活的特性,使得汇编语言将继续占有独特的地位,其适用的领域要求执行效率高、反应快,如操作系统内核、工业控制、实时系统、家用电器的计算机控制功能等。在讲述其重要性和应用领域时,教师应结合一些身边的、具体的实例,如电梯升降的控制程序和广场的大型喷泉的控制程序均是由汇编语言编写的,学生的兴趣会被这些实例极大地调动起来。
3.3注重实践环节。
在计算机相关专业的教学领域,实验教学是培养学生学习能力、实践能力、思考能力、创新能力的重要环节和有效途径。学生在学习汇编语言这门课程中产生的困难,来自于他们对所学知识缺乏必要的感性认识,没有得到充分的实践。
计算机在很多方面不同于其他学科,尤其是与硬件有密切关系的课程。由于汇编语言课程与硬件操作有着密切关系,因此实验环节在整个教学活动中占据了举足轻重的地位。汇编语言的实验对培养学生的动手能力和学习兴趣,提高学生阅读、编辑和调试程序的能力,有着不可替代的重要作用。学生通过实验能深入了解CPU、存储器、接口及外部设备的工作特性,对数据在计算机中的表达和传送产生感性认识,在实验中学生能对汇编语言有更好的理解、掌握,从感性认识上升到理论认识。
4.改进教学方法
4.1对照教学法。
在讲汇编语言时,教师可以和其它语言对照讲解,比如C语言。C语言作为一门基础和先驱课程,在此时起到了很好的借鉴作用,由于大部分学生对C语言掌握得较好,基于语言的相通性,在汇编语言的相关教学中教师若以C语言作为对照展开讲解,将会收到很好的教学效果,也能增进各科之间的知识和方法上的联系。下面笔者结合教学实践,列举一些应用对照教学法的实例。
MOV指令是8088指令系统中首要讲解的一个指令,也是汇编程序设计中使用最频繁的指令,教师应强调对操作数的要求。有几点我们可以用C语言来对比解释:
传送过程。其传送过程类似于C语言中的赋值,只是在这里是给寄存器或存储单元赋值,其实C语言中的变量名本身就是一个符号地址,汇编程度的赋值最终应对应到存储器的某些存储单元。
两操作数的类型匹配问题。该内容在C语言中已作了强调,汇编中类型匹配问题也是一个重点。与C语言类似,汇编语言操作数的位数要保持一致,只是在8088中常用的类型为字节和字。
强制类型转换。C语言中用到了该知识,学生也已掌握,那么汇编语言中又如何实现呢?很自然地我们就可以引出“BYTE PTR”和“WORD PTR”这两个操作符。
4.2互动式和启发式教学。
高职学生的课堂气氛一般比较活跃,他们非常喜欢教师引导、提问,喜欢回答问题。所以教师应利用这一特点在上课过程中设计一些有意义的提问,利用提问将要讲的知识点引出来,避免平铺直叙地讲解知识点,这样让学生带着问题来学习知识点,会起到事半功倍的作用。例如,在讲解编程部分的循环结构时,笔者先举了这样一个例子:求1+2+3+……+100的和。学生立刻就说出结果为5050。笔者接着问:加到1000呢?这样很多学生饶有兴趣地听讲。可见,教师所选的题目要由浅入深,要能激发学生的学习兴趣,要想办法让学生变被动学习为主动学习。
课堂练习也是互动式教学一个非常重要的方法。在讲解完某一个例题后,教师可以出一道类似的习题让学生在课上完成,请学生上讲台在黑板上写出解题步骤并进行讲解。例如刚学习了用循环的方法求1+2+3+……+100的和,教师可以让学生练习一道2+4+6+……+100的和。这样可以检验学生的掌握情况,找到学生理解错误的地方,从而对症下药。就学生理解错误的知识点再进行讲解,这样除了可以让学生当堂能够掌握所学的知识点,还能让其做到举一反三。
4.3实例教学法。
由于本课程是一门比较抽象的课程,因此教师在课堂讲授中应该尽量用一些通俗易懂的例子进行教学。
例如在讲解汇编中存储器地址分段的概念时,为了便于学生理解,教师可以借助平时生活的居民楼,进行举例。一个小区有多个居民楼,如一号楼、二号楼等,每个楼里有多个室,如101室、102室等。我们可将楼号比作段基值,每个楼里的房间比作偏移地址,很显然一号楼的101和二号楼的101是不一样的。这个例子可以使学生易于理解分段的概念。
再如在讲解中断的概念时有很多例子可举。把教师上课比作CPU正在处理的事,门外有学生打报告,教师就暂停正在处理的事情让学生进来,等学生进来后接着讲课。这样学生很容易就能掌握中断的概念。
教师可以将难理解的知识点与日常生活中的小事相联系,这样既可以使学生学到扎实的理论知识,又不会使学生学得吃力。
5.充分发挥多媒体教学的作用
汇编语言指令多、变化多,相对其他可编程语言来说源程序长而复杂,一个简单的问题解决至少要几十行,多则上百行,教师讲解例题时如果板书,就要花去大部分时间。如何解决这个问题呢?多媒体能够提高教学效果,扩大教学范围,延伸教师的教育功能。教师应在课前准备讲解的程序,上课时直接操作计算机,一边讲解指令的格式及算法,一边将指令使用前后的情况、程序的效果等通过投影仪展示给学生。计算机教学还可借助网上丰富的资源、图文并茂的生动界面、多姿多彩的影像资料,这些可使教学具有感受性、新颖性、可组合性、可扩充性,使学生的思维更加具有发散性,更容易培养学生的创新思维。
6.结语
笔者对汇编语言课程的教学内容和教学方法进行了探讨,这些教学方法促进了课程的建设与发展,为学生学好后续课程打下了一个良好的基础。摸索一条适合高职学生需要的、有效的教学方法,使高职学生能更好地、更快地掌握汇编语言程序设计,培养学生的分析问题、解决问题和实际操作能力,我们在汇编语言课程教学中需要继续探索研究的目标。
二、目前程序设计类课程教学在主语言选择中面临的问题
作为高校目前开设的程序设计类课程主语言,C语言和VB语言具有相对悠久的历史,也有很多自身特有的优势,在程序设计教学中起到过非常重要的作用,但同时也因为时间较久,很多功能和编程思想稍显陈旧,逐渐变得难以适应计算机教学发展的新形势。一般计算机类专业开设C语言程序设计课程,可以培养学生严谨认真的编程素养,使学生基本掌握一门高级语言进行程序开发的基本技能。同时,因为C语言更贴近底层,因此用C语言作为程序设计的主语言可以让学生更深切的了解计算机最基本的运作原理,开发出高效、优化的程序。C语言虽然具有上述很多优点,而且目前应用仍然较广,但是它本身是上一代的面向过程的语言,语法晦涩严苛,应用时特别容易出错。从语言本身的角度来说,基本数据类型不够完善,缺乏布尔型、日期时间型、对象型等数据类型;构造型的数据类型中,仅支持数组类型,对集合类的类型缺乏支持[1],很多基本的功能都有赖于用户自己设计,进行程序开发时工作量很大,难度也较高,对非计算机专业学生来说不适合作为程序设计基础语言。VB语言一般作为文科类专业的程序设计类课程主语言,具有可视化、面向对象、便于操作数据库、难度较低、容易上手等特点[2]。目前国内高校大多仍然选择VB6.0的程序开发环境。但是VB6.0是一种非纯粹的面向对象语言,仅适用于Windows系统,没有跨平台的特性,在非Windows系统下无法使用。而且由于VB6.0已经长期没有更新,很多新的编程思想也难以体现,在新操作系统下支持不好。同时,目前的主流移动计算平台大多不支持VB语言作为开发语言,在移动计算发展迅猛的形势下,VB6.0难以因应时展,从长远的角度来看,不利于学生的学习,因此选用更科学合理的语言作为程序设计基础语言是必要的。
三、Python语言作为程序设计课程主语言的优势
选用什么语言来进行程序设计教学不仅关系学生的学习效果,还对学生以后的发展有着一定影响。计算机编程语言的发展非常迅速,基本上每过几年就会有新的形势出现。近年来,Python已经成为最受欢迎的程序设计语言之一,它逐渐被广泛应用于处理系统管理任务、图形处理、网络编程和Web编程等领域。Python语言是一种简洁、易读的解释性语言,具有优良的可扩展性和平台可移植性,同时Python是开源的语言,拥有丰富的第三方库和插件,为使用Python进行开发提供了极大的便利[3]。在国外用Python做科学计算的研究机构日益增多,诸多的国外高校已经开始采用Python语言来作为程序设计课程的主语言。从教学的角度来说,使用Python语言作为程序设计课程的主语言有以下几种优势。1.简单易学。Python是一种解释性语言,具有类似脚本语言一样的简单易学的特点,无须像C语言一样强制定义变量,程序的执行也无须经过编译、链接等中间步骤,可以直接执行,给用户良好的交互式编程体验,也便于学生的记忆和学习。2.开源小巧的多平台开发环境。Python在多种操作系统下都具有良好的支持,有些操作系统甚至自带Python的开发环境。在常用的Windows平台下,只需一个很小的开源安装包就可以安装Python开发环境,便于学生的自学和交流。如果需要,也有很方便的图像化开发界面可以下载安装。3.丰富的数据类型和高层的编程体验。Python提供丰富的数据类型,内置像元组、集合、列表、字典等方便使用的集合数据类型,过滤了底层内存管理、垃圾回收等细节,可以让用户把更多的精力放到程序开发本身上来。在教学上可以节省很多时间和精力,便于学生把重点放在解决问题的真正逻辑上。4.可扩展性和持续更新。Python具有良好的可扩展性,可以把其他语言开发的程序“粘合”到Python程序中,发挥不同语言各自的优势。同时,Python语言仍在不断的更新,具有良好的发展前景,便于调动学生学习的主动性。总而言之,尽管Python语言也有运行速度较慢、缩进格式要求严格等缺点,但是其简单易学等特点使得在目前学时普遍较少的程序设计类课程教学中具有较好的优势,把语言的部分语法和内容进行筛选后作为程序设计课程的主语言进行教学是可行的。