时间:2022-05-10 23:44:56
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇高级语言程序设计,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
0引言
21世纪,知识经济时代到来。随着博客、微博、微信等的兴起及迅速风靡全球,“微课”应运而生。“微课”作为一种新型课程资源形式,最早出现在孟加拉裔的美国人萨尔曼可汗所创立的可汗学院的云平台上,它在国外掀起一股MOOC(慕课)大热潮并席卷到国内,微课开始受到国内专家、教育研究者和一线教师等的广泛关注,引发了新的一轮教学模式变革。它具备了“短小精悍”的特点,给人焕然一新的感觉。微课诞生于快速发展的信息爆炸时代,日新月异的技术工具更使得微课创作越来越多样化、平民化、低成本化、人性化、高效化。更因为具备了可观看性强、技术门槛低、制作简单方便等,微课迅猛发展,很快就形成了近乎“全民微课”的景象。应该说,微课满足了信息超载背景下人们的学习需求。时间碎片化、信息碎片化、知识碎片化,使得微学习、碎片化学习得以兴起。而基于微课的微学习,恰好能够填补信息爆炸背景下的大量碎片化时间,再借助互联网强大的聚合力量和传播效应,微课教学已经成为一种新潮流。
1“高级语言程序设计”教学现状分析
“高级语言程序设计”是高校电子信息工程、自动化、通信工程、物联网、电子信息科学与技术、软件工程、计算机科学与技术等专业的专业必修课。以培养掌握正确的程序设计方法与思想为目的[1]。在该课程的教学中,通常分为理论部分和实验部分。理论课上,教师将向学生讲述定义常量、变量,数据的类型、三种程序设计方法———顺序结构程序设计、选择结构程序设计、循环结构程序设计,指针、链表等知识点。实验课堂上,教师会布置一些具体的程序设计实例,让学生用程序设计思维解决古老的数学问题或者现实中的问题。通过对该课程的学习,学生既掌握了高级语言程序设计的基本知识,又学会了在实践中应用程序设计的思想和方法,进而让学生养成了独立思考的好习惯,并提高了学生利用计算机解决实际问题的能力,为后续的计算机课程或者电子类的专业课,如数据结构、操作系统、软件工程、单片机、EDA电子设计自动化等课程打下了良好的基础。但是在试验教学过程中,存在一些问题:(1)学生学习基础或学习态度不同导致学习步调不一致。[2]有些学生在上课之前学习过该课程,或者课前提前预习过本堂课学习内容,在教师讲解操作示范时,听一遍就记住了所有的操作,而有些学生上课时注意力不够集中,听课的当时,似乎听懂了,但是自己动手时,又不知从何下手。这些学生需要教师来回一对一指导。尽管这样学习的效果较好,但是教师人力有限,上课时间也有限,那些真正有问题的学生可能还没来得及问,就下课了。(2)教师不断的重复同一问题的具体操作,先做完的同学一直在等待,时间长了,就失去了对该课程的兴趣。(3)课堂上,教师大部分时间都在解决操作上的一些小问题,对于程序设计思路等方面的问题却没时间辅导。(4)学生过度依赖教师,当他们在编程过程中遇到错误,第一时间想到请老师来找错、纠错,学生不能很好的自主思考,既限制了学生的思维能力,更阻碍了创新能力的养成。
2改革的目标
教师在讲授“高级语言程序设计”(以C语言为例,下同)课程之前,需完成微课资源包的制作。包括提前制作微教案和微课件,对教学内容和学生学情进行细化分析,制作微视频和学生自主学习任务单,并将微课通过毕博网络教学平台推送给学生,学生在自主学习任务单的指导下,利用微视频进行自主学习,遇到问题可以通过毕博网络教学平台向老师或同学请教;课后完成课后测试,检验学习成果。教师通过微课在“高级语言程序设计”中的使用情况反思自己在设计、开发、应用微课过程中的不足,更好的完善微课资源包,促进学习者学习,提高微课使用效果。
3改革的具体内容
(1)制作全面的微教案在微课的设计之初,我们需要一个微型教案。这个微型教案是传统教案的浓缩和提炼。这个教案不仅要体现“微”的特点,更要体现关键的教学设计要素。微教案中除了要包括基本信息:微课名称、开课单位、微课总时长、学科名称、教学知识点、微课类型、适用对象等;还要包括相关教学设计信息:教学目标、教学重难点、学习者特征分析、聚焦解决问题、教学策略、教学过程设计、微课总结反思、作品简介等。(2)完成适合学生实际情况的自主学习任务单学习任务单主要指的是学习者在使用微视频时,可以借助的辅学指引资料。教师在上课前要对教学内容非常熟悉,明确教学任务和教学目标,能够较准确地判断学生在完成学习任务过程中需要的知识储备以及预测学生可能遇到的困难。一个好的微学习任务单,要包括这些内容:明确学习方向(如学习内容是什么,学习应该完成什么等)、引导学生如何开展微课学习(如看什么材料等)、辅助和促进学生学习(如告诉学生用什么方法来学习这个微课等)、激励学生(如检测学习情况、评价等)。学习任务单不仅可以帮助学生达成学习目标,而且提升学生的学习兴趣和学习能力,使学生在潜移默化中掌握学习方法以及养成好的学习习惯。(3)准备适合各个学习层次的练习题为了对学生的课前、课后学习行为进行监督和检测,要给学生布置一定的练习题。练习题分菜鸟级、进阶级、高手级共3个等级。大部分学生学习完微教学视频后都能完成的题目放在菜鸟级题库里;需要稍加理解才能完成的题目放在进阶级题库里;举一反三之后才能完成的题目放在高手级题库里。正式上课前,先完成菜鸟级题目,学生依据练习题的反馈情况,及时进行查漏补缺,遇到实在不能解决的问题,则记录下来与同伴或教师在社交媒体或教学平台进行交流。通过课前自主学习,了解背景知识及上课的重点、难点,为课中的任务解决奠定基础。课后,完成进阶级测试题,有能力的同学可以完成高手级测试题,巩固课堂所学,并运用所学知识解决社会现实问题,提高学生的创新能力和创造能力,为将来走向社会积累实战经验。(4)制作精美的微课件微课件,一般是指在微课中讲解某个内容时所需要开发和配套使用的微型课件。一般微课件可以用演示文稿、动画、纸笔等多种形式进行呈现。在借助不同形式进行讲授或演示的过程中,微课件是微课资源包中非常重要的要素。微课件中可以添加适当的动画和音乐,动画可以吸引学生的注意力,音乐也可以达到有声胜无声的效果,动画和音乐用的恰当,可以为微课增添趣味性和吸引力。(5)录制生动的微视频微视频,指的是微型教学视频。作为微课的核心内容载体,它记录了教学内容、讲授人的画面、教学演示的过程等。视频形式生动形象,满足了人们对可视化画面的使用爱好。在一个微课资源包中,必不可少的核心载体要求是微视频。一般而言,文科的微视频时长普遍高于理科,75%以上的微视频都集中在5-8分钟,而超过8分钟的微课有效性明显降低,出现这些现象的原因可能包括知识点内容偏多、讲授者的讲解不精炼、学生视频驻留规律等,所以微视频的时长控制在5-8分钟左右为佳。同时,微视频一般保存为易于分享的格式,如MP4、FLV、WMV等,因为此类文件格式易于在网络和移动环境中分享和使用。(6)微反思微反思,是指教学人员在设计、开发、应用微课后,将反馈修改意见进行总结和归纳。对微课完善修改的反思,可以从微课教学设计、微课制作技术、微课教学应用等维度进行思考,更好地完善微课资源包,促进学习者学习,提高微课使用效果。
4实施方案
(1)课题组老师共同商讨每一节微课的教学设计,利用头脑风暴法收集所有教师的想法,最后集体讨论一种针对该知识点最合适的教学设计;(2)分任务完成微课教案、学生自主学习任务单、课后习题等;(3)利用湖南涉外经济学院的录播教室或教师家中配置较高的电脑进行微课录制与后期制作;(4)以湖南涉外经济学院可以讲授“高级语言程序设计”课程的实验室为依托,通过学校的毕博网络教学平台,让学生课前或课后自主学习微课,对于不懂的问题,可以留言,让老师或同学参与解答,教师收集学生所提问题;(5)教师在讲授“高级语言程序设计”时,针对学生所提问题,有针对性的进行教学;(6)对微课教学进行反思,改进微课资源包里的资源,必要的时候可以对某个知识点重新进行微课录制;(7)先对部分学生开放网络微课资源,看看学习效果,然后对全校开设了“高级语言程序设计”课程的学生开放资源,进一步完善微课资源包。
5改革效果
通过五个大一新生班的“高级语言程序设计”教学改革,我们发现,课前,学生自主学习教学PPT和微课视频,在毕博平台通过在线讨论和发表微博的方式提出问题,完成菜鸟题练习;课中,针对学生提出的问题以及教学重点、难点来进行教学,学生主观能动性更好,上课时再也没有学生通过手机做与课堂无关的事,课堂讨论气氛更浓烈,课后,学生通过毕博平台进行在线测试,完成进阶题以及高手题的挑战,既激发了学生学习的兴趣,也让学生对于自己的程序设计水平有一个大致的了解,为他们更上一层楼提供了动力。相比同一门课没有进行改革的班级,学生兴趣更浓烈,课堂气氛更活跃,期末成绩平均分高出5分之多。对于进校时程序设计水平不同的学生,毕博平台为他们提供了差异化学习的机会,平台的教学资源为学生反复学习课程内容提供了便利,他们可以利用碎片化的时间进行学习,教师也避免了同一内容反复讲解的尴尬,可以更好的因材施教。
关键词:C语言;教学内容;教学方法与手段;教学改革
中图分类号:G642 文献标识码:A
1引言
我院“高级语言程序设计”课程是以C语言作为指定语言的。它不但成为计算机专业的必修课,而且也越来越多地成为非计算机专业的学习课程。但在“高级语言程序设计”课程教学中,许多学生都认为C语言涉及的概念比较复杂,规则繁多,使用灵活,容易出错,且程序设计课程逻辑性又很强,学生不能很好地理解算法,编写程序也很困难,教师教学和学生学习都感到困难,并在不同程度上产生畏难心理。特别是我院将C语言作为学生进校后首先接触的第一门专业基础课,这种现象尤为明显,而C语言基础打不牢会直接影响后续专业课程的学习。因此如何改革“高级语言程序设计”课程,进一步提高教学效果,成为专业课程建设中的一个紧迫任务。
本文根据多年的程序设计课程的教学实践,对“高级语言程序设计”课程从教学内容、教学手段、教学方法等方
面提出几点建议。
2教学内容
2.1教材的选择
我院一开始使用的教材是由谭浩强教授编著的《C程序设计》,该书的特色是针对初学者的特点和认知规律,精选内容,分散难点,降低台阶,例题较为丰富,通过深入浅出的叙述,阐明C语言复杂的概念,知识结构系统、清晰、通俗易懂。但在编程思路和编程技巧方面较为欠缺。
在2005级学生中使用了Harvey M.Deitel和Paul J. Deitel编著的《C程序设计经典教程》,该书的特色是应用软件工程原理讲述结构化程序设计方法,加强对控制语句和模块化的有效使用,并强调程序的清晰性,通过从各种渠道收集来的大量实例、习题以及项目,让学生能够有机会来解决现实世界中有趣的问题,对学生编程思路和编程技巧有很好的帮助。但在整个知识结构方面不如谭书系统和清晰。
由以上分析可知,两本教材各有利弊,经过实践比较,并结合我院学生的实际情况,现在计算机科学与技术系仍然使用《C程序设计经典教程》教材,而其他系使用《C程序设计》教材,但都给出若干本参考书,以弥补各自的不足。如电子信息工程系的参考书为:
《C语言设计教程》,薛万鹏等译,机械工业出版社
《C程序设计经典教程》,(美)Harvey M.DeitelPaul J.Deitl著,清华大学出版社
《从问题到程序――程序设计与C语言引论》,裘宗燕编著,机械工业出版社
《The C Programming Language》,Brain W.Kernighan,清华大学出版社
2.2课堂教学内容的改革
以谭浩强的《C程序设计》为例,教学内容主要包括C语言语法基础、数据类型、程序控制结构、函数、指针、文件等。教材在内容组织上,在语法上讲解过细、过多。在各章节的编程例子中,多数难度较大,分析较少;不够形象,学生较难理解,且适用性不强。笔者本着“深入浅出,突出实用”的指导思想,在课堂教学过程中,对教学内容重新进行了归纳,将难点再次分散,以缩小台阶,达到循序渐进。例如,C语言数据类型、运算符、表达式种类繁多,放在一块讲授,学生学习起来难度较大,且过于枯燥,于是笔者就将其分散在不同的章节。譬如,先介绍算术型的数据类型、运算符以及相关的表达式,使学生学习起来没有想象中的那么难,紧接着又教学生编写简单、实用的C程序,然后趁机引入基本输入、输出函数就顺理成章了。这样一来台阶小了,学生的信心也增加许多,学习积极性很快就被提高起来。对于生硬的语言叙述,尽量改用生动的、学生熟悉的例子进行比喻,进行详尽引导。例如,在开始学习指针的概念时,教材对“间接存取”叙述比较深硬,学生难以理解,就借用比喻:将A房间的钥匙放在B房间里,若要取A房间里的物品,就需要先打开B房间,取出A钥匙,再打开A房间,取出A房间的物品,这就是“间接存取”。学生很快就能理解,也加深了指针的概念。在教学过程中,还应及时查阅英文版教材和有关报刊杂志,对较难理解的概念,用不同的方式给以解释。
2.3实验教学内容的改革
“高级语言程序设计”是一门实践性很强的课程,既要掌握概念,更要动手编写程序。其主要任务就是培养学生具有一定的阅读程序、设计编写程序的能力,分析问题、解决问题的能力和逻辑思维的能力。因此,上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。
笔者对实验内容上进行了认真的探讨,在实验题目的设置上,应根据课时安排以及要掌握基本知识进行,一般一次实验给出2~3个实验题目,分为必做与选做。这样做的好处是一方面保留基础性实验,相对简单的基础编程实验。使学生能够较顺利地编写出程序,并及时理解和消化课堂教学内容,同时也使学生获得一定的成就感,使其学习热情得到进一步的提高。另一方面,增加一些实用性强的、难度略大的实验题目,以进一步提高学生的编程能力;同时还可以满足较高层次学生的需要。下面以电子信息工程系为例介绍实验内容的设置。
我院为非计算机科学与技术系和信息安全系开设的“高级语言程序设计”课程的实验学时是12学时,共4个实验。由于实验课时较少,在实验内容的安排上就显得十分重要。第一次实验安排在约6学时以后,实验内容是“熟悉上机环境、编写简单程序”,其目的是让学生熟悉C语言上机环境,学习完整的C程序开发过程和程序调试方法;理解简单的C程序结构。为学生课下上机练习打下良好的基础。鉴于函数、指针和文件是C语言的重点和难点,我们分别将其作为第二、第三、第四次的实验内容;其他各章我们也给出相应的实验题目,让学生课下自己上机练习。
另一方面要重视实验的总体要求,强调上机实验要经历三个步骤:
(1) 上机前的准备
让学生写出实验预习报告。内容包括对实验题目的理解和分析,选择适当算法,画出流程图并编写程序。分析可能遇到的问题及解决的对策。准备几组测试程序的数据和预期的正确结果,以便发现程序中可能存在的错误。
首先调用C语言集成开发环境,输入并编辑事先准备好的源程序;然后进行调式。在调试过程中,要充分利用C语言集成开发环境提供的调试手段和工具,例如单步跟踪、设置断点、监视变量值的变化等。整个过程应自己独立完成。不要遇到一点小问题就找老师,学会独立思考,勤于分析,通过自己实践得到的经验用起来更加得心应手。同时加大实验的辅导。
(3) 整理上机实验结果,写出实验报告
实验结束后,要求学生整理实验结果并认真分析和总结,写出实验报告。实验报告要包括如下内容:
实验内容:实验题目与要求。
算法说明:用文字或流程图说明。
程序清单
3教学方法与手段
在教学方法上,从以教师为主体的“满堂灌”的方式转向以学生为主体、教师为主导的教学方法。有效地培养学生的分析问题与解决问题的能力。以“选择排序”为例,笔者没有平铺直叙地介绍算法与程序代码,而是先给出例题:在长度为10的数组中找出最小元素,并与第一个元素对调,引导学生编写出相应程序。然后给出新的问题:在后9个元素中最小值与第二个元素对调应如何修改;……;在后10-i个元素中最小值与第i+1个元素对调应如何修改;最后总结出选择排序算法的全过程,直至整个程序编写完整。即沿着问题带出算法,由算法带出程序设计语言的思路讲述C语言中的各个知识点。整个讲解过中结合板书,逐步引导,层层深入,取得很好的教学效果。
在C语言教学过程中,注意各章节讲述中的前后呼应和类比,加深学生的理解与应用。例如以“求1000以内的所有‘水仙花’数”例题为例,笔者先后分别在循环控制、数组和函数三章中进行了讲解,让学生自己总结出最佳的程序结构,提高编程能力。同时通过不同的解题方法,有利于学生加深对所学知识的理解,让学生真正体会到C语言的灵活性,激发学生的学习兴趣和求知欲。
另外在C语言教学过程中,还要充分发挥学生的积极性与主动性。笔者针对这门课程的特点,激发学生主动思考,课前可以给学生布置几个专题,让学生利用课余时间去思考、收集资料,并在课堂上组织学生发言和讨论。这种教学法不仅可以让学生获得许多课外知识,同时也促进教学内容的改革,而且也有利于充分挖掘学生的学习潜力。
在教学手段上,积极采用现代化的教学手段,如多媒体教学、网络教学等,这样有利于激发学生的学习兴趣,发展学生的主体能力;同时由于多媒体信息量大,也能够优化教学过程。但多媒体教学也有一些不利之处,主要体现在不恰当的使用会分散学生注意力,影响主要问题的理解,也不利于发挥学生的想象力。在C语言程序设计课程教学过程中,考虑到课程的特点,扬长避短,将传统教学与多媒体教学进行了有机的结合。例如可以将一些概念、语句的格式、大信息量的案例代码制作成课件,在课堂做展示供学生增加信息量用。但对于案例分析或程序的编写过程,就发挥传统教学的优势,进行课堂讨论、板书讲解、结合提问,将问题层层剖析、层层深入,达到师生互动的效果,学生的想象力也会得到充分的发挥,对问题的理解也变得更容易。另外,充分利用网络资源,将电子教案、大纲、课件、习题等放在网上,供学生自行调用,同时通过其QQ、E-mail等形式对学生的提问进行
答疑、讨论,以弥补课堂教学的不足。
4改革课程考核办法
建立一个服务于课程目标的学生学习评价方法是一项非常重要的工作,考核不是目的,“以考促学”才是考核的本质。
传统的期末“笔试”这种单一的、“一考定终身”式的考核方式,已远远不能满足课程的需要。为使考核真正发挥“以考促学”的作用,我们改革了考核内容和考核方法,重视对学生学习过程的考核,重视实际动手能力的考核,侧重考核学生对知识的融会贯通和灵活运用能力,而不仅仅是基本理论、基本知识的掌握。具体的改革措施如下:
(1) 变单一考核为复合考核,从多个方面对学生进行考核。课程总成绩由平时成绩、实验成绩、期中成绩、期末成绩四个部分构成。其中,平时成绩考核包括对出勤、随堂实训、课堂提问、作业等部分;实验成绩考核是针对课程的4次实验成绩。
(2) 衡量这门课学习的好坏,不是看学生“知不知道”,而是“会不会干”。期末试题考核的方法不用是非题和选择题,把重点放在读程序、编制程序和调试程序。
实践表明,这种考核方法不但能更客观地反映学生的学习情况,同时也能促进学生学习,起到良好的教学效果。
5结束语
本文教学内容、教学方法与手段的改革,是根据实际教学过程中学生存在的问题提出的,并已经在“高级语言程序设计”课程教学实践中加以运用,得到大部分学生的认可,取得了较好的教学效果。当然,同样的教学内容面对不同的学生,在使用与设计某种教学方法时,还要求学生的配合才行,也就是说教的方法与学的方法要有机统一。我们将继续努力探索,使“高级语言程序设计”课程教学日趋完善。希望本文能对大学计算机基础教学有一定的借鉴作用。
参考文献:
[1] 谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005.
[2] (美)Harvey M.Deitel,Paul J.Deitl.C程序设计经典教程[M].4版.北京:清华大学出版社,2005.
“High-level Language Programming” Course Teaching Reform and Practice
XU Xiao-qing, LI Xiao-dong
(Department of Computer Science and Technology, Institute of Beijing Electronic Science and Technology, Beijing 100070, China)
一、当前程序设计教学方法改革的必要性
(一)传统教学模式、教学方法与程序设计的学科特点不相适应
多媒体课件以其生动性和方便性在高校计算机教学过程中被广泛应用。然而程序设计是逻辑性和实践性很强的一门课程,仅仅依靠投影大屏幕和多媒体课件的教学思路无法适应程序设计灵活多变的学科特点,不能对学生创造性思维和自学能力的培养起到积极的作用。还有一些教师过分依赖电子课件,教师变“照本宣科”为“照课件宣科”,容易挫伤学生的学习积极性。另外由于播放电子课件信息量大、速度快,学生没有得到思考的空间,学习效果并不理想,而且学生无法做到边听课边做笔记,印象较浅,容易遗忘。
(二)学生的动手实践能力较弱
很多高校在教学过程中更多地注重程序设计语言理论知识的学习而忽视了工程技能的培养。这样就会导致教师和学生偏重于编程语言语法的教学而对计算思维的培养和工程实践重视不够,导致重语法轻算法,实际工程开发能力薄弱。这就要求教师需要布置大量既包含基本知识点又有一定创新性和拓展性的上机实验,才能帮助学生实现从知识到技能的转换,巩固所学的理论知识。
二、程序设计教学方法改革的意义
不断探讨研究和推广新的教学方式,将更有效的新教学方式应用于计算机教学,是不断提高教学水平的好方法。程序设计课程的特点是理论与实践相辅相成,理论是基础,实践是手段,应用是目的[2]。很多学生上课能听懂,但是自己动手编程时感到无所适从。传统的“在学中用”的教学方法,其重点往往局限于讲解基本概念、语句格式、语法等内容,学生往往会考试但解决实际问题的能力较差。若采用“在做中学”的教学方法,以一个应用实例为前导,例如讲授讲解程序设计时以找最大(小)值、素数、排序、求阶乘、求一元二次方程的根等案例形式导入知识点,这样学生就比较容易接受和掌握所学的知识和内容,实践技能也在做中得到了锻炼和培养。教学方法是在教学过程中教师和学生为了实现共同的教学目标,完成共同的教学任务,运用的行为方式与手段的总称[2]。教学方法既是一门科学又是一门艺术,良好的教学教学方法对于学习兴趣的激发和学习效果有着明显的作用,尤其是程序设计教学方法对于培养工程实践能力和计算思维起着重要的作用。具体体现在:一是教师的教法不仅关系到教学效果,同时也影响着学生的学习方法,采用什么样的教学方法对于培养学生的思维模式和知识结构也具有重要的影响。二是程序设计教学法的研究与探索能够促进本学科教师的教学水平与教学能力,提高教学质量。三是程序设计教学方法的改进能够引发学生的学习兴趣和学习成就感,促进多种教学资源的合理使用,取得最佳教学效果[3]。
三、程序设计常用教学方法
(一)案例教学法
案例教学是根据教学目的和教学内容的要求,通过引入并分析各种案例来开展教学活动的教学方法。案例教学法教学过程是:案例设计—案例分析与讨论—案例实现—归纳总结知识点。案例教学法与传统的举例说明有着本质区别。传统的举例说明一般是用来验证教师讲授理论知识的正确性,举例是为理论服务的。而案例教学法最突出的特点是讲课开始于实例,从实例中提出问题,通过分析问题、发现规律、提炼理论,再从理论回到实践,应用理论去指导实践[4]。在程序设计中首先引入案例,例如在选择结构这一章,设计一个猜数游戏,产生一个随机数,输入一个整数,与之比较,提示是大了、小了还是猜中了,这个案例涉及三个分支处理;基于同一个猜数案例,加深难度,引入循环,产生一个随机数,循环输入一个整数与之比较,提示大了、小了还是猜中了,直到猜中为止,涉及的if多分支语句、while循环语句、随机数函数rand在案例中也一并掌握了。另外,一般计算机理论课程教学采用的方式是先理论,后实际;先抽象,后具体;先一般,后个别。其实,对程序设计课程可以适当采用这样的方式:从实际到理论,从具体到抽象,从个别到一般,从零碎到系统。这样的教学方式更加符合人们对客观事物的认知发展规律。
(二)任务驱动教学法
任务驱动法适合实施探究式教学,与简单的案例教学不同,它是采用项目化教学方式,即教师不是围绕知识点去设计每个单独的案例,而是针对课程教学内容设计一个项目,这个项目由若干模块组成,并能够覆盖课程的不同理论知识[5]。任务驱动教学法有助于培养学生分析、解决问题的能力以及动手能力[6]。任务驱动法的教学过程主要有(1)创设情景、提出任务;(2)分析任务、发现问题;(3)明确思路、把握重点;(4)自主探究、解决任务;(5)检查结果、总结经验[7]。任务驱动教学法对教师的业务水平提出了更高要求,教师不仅要转变教学观念,而且对课程需要有很深的理解[8],不能单纯按学科体系安排教学内容,而是根据解决问题的思路,跳跃式地结合多种知识。软件开发是多种技术的综合体现,仅仅通过案例教学局部讲清楚每个知识点,学生的综合应用能力仍然不强。此时,教师通过创设、分析与解决任务必然能激发学习兴趣,取得满意的教学效果。在C语言程序设计课程中以计算学生成绩平均分为例,首先用一维数组和循环结构计算全班50人某一门课程的平均分,继续增加问题的复杂度,计算50个学生8门课程的平均分,这时需要采用50行8列的二维数组,再引出新问题和新任务,编写函数计算出每个学生的平均分,并把每位学生的平均分带回主函数输出,此时就要采用数组名或指针变量作函数参数,传递整个实参数组给函数进行处理,并引出函数如何带回多个返回值的问题。任务驱动法循序渐进、由浅入深地引入新知识点,在解决问题的过程中旧知识在此过程中也得到了巩固。
(三)演示教学法
演示教学法就是借助投影仪或网络教学管理软件等,直观地通过教师的示范性操作进行学习。这种教学方法是学习计算机软件使用方法和操作步骤的一种重要且而行之有效的教学方法,在程序设计教学中同样非常有用。教学中光是依靠PPT课件来分析和讲解程序和算法是远远不够的,而是要当堂编程并演示程序运行结果,让学生直观地看到程序运行的过程和效果。实践证明这种方法非常生动,能够有效地激发学生的学习兴趣,并且在现场编程过程中,高级语言程序设计的知识点、语法、算法也在这一过程中一并得到掌握,另外通过编译,分析和查找语法错误和逻辑错误,可以提高学生的分析能力,实现计算思维的培养。以C语言指针变量作函数参数为例,演示教学法可以分4步实施:(1)分析指针变量作函数参数的4种一般形式。(2)设计一个案例,例如编制一个函数fun,实现将一个数组的数组元素逆序交换,在主函数中输入数组元素,调用函数,最后在主函数中输出逆序交换后的数组元素。(3)现场编程分别演示实参、形参同为数组名;实参为数组名,形参为指针变量;实参为指针变量,形参为数组名;实参形式同为指针变量这4种情况。(4)归纳总结知识点,让学生举一反三编程实现其他功能的函数。
四、新型程序设计教学方法简介
(一)慕课教学法
“慕课”这一大规模在线课程始于2011年,有勇敢之城(Udacity)、课程时代(Coursera)与教育在线(edX)三大供应商。2013年7月上海交通大学加盟MOOCs三大平台之一的课程时代Coursera,成为加入Coursera的第一所中国内地高校,和耶鲁、MIT、斯坦福等世界一流大学共建、共享全球最大在线课程网络[7]。“慕课”(MOOCs),顾名思义,“M”代表Massive(大规模),与传统课程只有几十个或几百个学生不同,一门MOOCs课程多达上万人;第二个字母“O”代表Open(开放),以兴趣导向,凡是想学习的,都可以进来学,不分国籍,只需一个邮箱,就可注册参与;第三个字母“O”代表Online(在线),学习在网上完成,不受时空限制,第四个字母“C”代表Course,即课程的意思[7]。MOOC以连通主义理论和网络化学习的开放教育学为基础。课程的范围不仅覆盖了广泛的科技学科,例如数学、统计、计算机科学、自然科学和工程学,也包括了社会科学和人文学科。在“慕课”的世界里,视频课程被切割成10min甚至更小的“微课程”,由许多个小问题穿插其中连贯而成,就像游戏里的通关设置,只有答对才能继续听课。利用“慕课”的平台,可以获取全球的优质课程,实现更大范围的资源共享。除了传统课堂上人们所惯常使用的录像资料、阅读材料和练习题外,“慕课”还会为网友提供互动的论坛,在师生之间搭建一个交流的平台[8]。“慕课”不同于网络公开课,互动性更强,“慕课”的出现,为教学设计提供了一种改革的可能———教师可以将在线视频作为教学的线上环节,要求学生在课堂外先“听课”,课堂内侧重深入的分享、探讨和问题解决,真正实现“翻转课堂”。这一模式将促进教师对教学的反思,以及对教学模式的探索、研究,有助于推动教师角色转变,从一个讲授者、讲解者真正变为学习的激励者、启发者,学习也将变得更加有效[8]。“慕课”课程所带来的是挑战、思考和实践,而不仅是课程的变化。在程序设计课程中将来也可以引入“慕课”模式,利用现代网络技术,开发针对不同知识点的程序设计教学视频,提供在线测试题、上机练习题,程序阅读题、在线提交与批改实验报告等,通过论坛实现师生之间、学生之间的与交流与互动,通过全方位的教学方式改变教学方法,共同提高教学质量。
(二)翻转教学法
利用视频来实施教学在多年以前人们就进行过探索,当今网络技术发达,计算机教学也可以通过网络向外扩展,如开展网络教学和将教学视频上传网络等,供学生在校外学习。如2006年创立的可汗学院、2009年创立的点对点大学、2010年创立的人人学院等。他们都是与慕课相类似的组织。美国的耶鲁等大学已经开始进行这样的尝试,并且已经获得很好的效果。所谓翻转课堂,就是教师创建视频,学生在家中或课外观看视频中教师的讲解,回到课堂上师生面对面交流和完成作业的这样一种教学形态。“翻转课堂”特点有:第一,教学视频短小精悍,通过网络的视频,具有暂停、回放等多种功能,可以自我控制,有利于学生的自主学习。第二,教学信息清晰明确,把内容集中在屏幕上,配合讲解的画外音。每一个视频都针对一个特定的问题,有较强的针对性,查找起来也比较方便;视频的长度控制在在学生注意力能比较集中的时间范围内,符合学生身心发展特征。第三,重新建构学习流程。老师提供了视频,在课前对学生进行“信息传递”,在课堂上通过互动来完成“吸收内化”,教师在课堂上给予有效的辅导,教师更多的责任是去理解学生的问题和引导学生去运用知识,同学之间的相互交流更有助于促进学生知识的吸收内化过程。第四,复习检测方便快捷,学生观看了教学视频之后,是否理解了学习的内容,视频后面紧跟着的四到五个小问题,可以帮助学生及时进行检测,并对自己的学习情况作出判断[9]。由于程序设计知识点繁杂,概念抽象,视频教学和翻转教学也特别适合程序设计的教学。有效实施翻转教学法的前提是根据教学内容和教学大纲,划分出各个章节的知识点,如if语句、switch语句、for循环语句、while循环语句、数组、函数、指针等,将每个知识及其典型案例用屏幕录像软件录制成10min左右的微视频,上课前提前给学生在课外观看,上课时通过师生互动辅导学生完成上机编程作业,解答学生在编程中遇到的问题。先看录像后讲课,这是“翻转课堂”的教学视频与传统的教学录像最大的不同之处。一个最显著的变化将是,翻转课堂,从以教师为中心真正转变为以学生为中心,这实际上是一种传统与现代的结合体,但其效果远好于传统教学。
五、程序设计教学方法的合理选择与思考
课堂教学中并非独立地应用一种教学方法,而是在不同的教学阶段,根据教学内容,教学对象的不同,选用适合的教学方法进行教学,让学生在“做中学”,使每一位学生收到最好的学习效果。采用讲授法讲解时,还要布置一些课堂或课后练习,避免光听不练,理论与实践脱节。例如介绍完递归函数的思想后,再布置编程题用递归函数实现将十进制整数转换成八、十六进制,这样既使用了编程技术又掌握了数制转换的方法,可谓一举两得。三种基本的程序结构、数组、函数等概念通常是通过案例教学法来讲解,在采用“案例教学”法教学时还要注重知识的脉络,讲清楚知识的结构和教学主线。期末应当布置课程大作业,例如编写学生信息管理系统,让学生将各章的知识融合在一起,体现链表、结构体、文件等章节知识的综合应用。指针是C语言的重点和难点。数组、指针、函数三者又是密切联系的。多种“分散跳跃式”的知识特别适合采用“任务驱动法”,设计一个任务,在解决任务的过程中综合运用数组、指针、函数等,使学生抓住用指针作函数参数,传递数组元素这一教学主线,就可以突破指针这一教学难点。慕课、微课程、翻转课程等在线课程模式,以及线上、线下结合的课程模式无疑将引发“学习的革命”,给高等教育人才培养和教学方式带来深刻变化。程序设计课程如何运用这一模式,改变教学方法,提高教学质量,需要更多的思考和实践。以“慕课”冲击为契机,加快大学教学、管理的根本变革,实现两者的融合才是更好的姿态。计算机技术更新极快,学生的自学能力才是最重要的能力,在程序设计的教学中不能只满足于教会学生编程技能,还要注重创新能力的培养,创新能力本质是提高学生创造性地分析、解决问题的能力。因此教师还要教给学生归纳总结、触类旁通的学习方法。例如,编程语言都有顺序、选择、循环三种基本程序结构,都有数据类型、运算符与表达式、数组、函数等概念;教会学生归纳和总结,在多门编程课程中触类旁通,将会使学生在将来的工作中立于不败之地。
六、结束语
>> 微课在高职《C语言程序设计》翻转课堂中的应用研究 翻转课堂教学模式在C程序设计课程教学中的应用研究 翻转课堂在高级语言程序设计课程中的应用 浅谈基于微视频的翻转课堂模式在“高级语言程序设计”实验教学中的应用 基于Android的C语言程序设计“翻转课堂”的应用研究 基于MOODLE的高职院校“C语言程序设计”翻转课堂教学改革 基于翻转课堂的C语言程序设计课程教学改革初探 基于翻转课堂模式的C语言程序设计教学改革 传统教学和案例教学在C语言程序设计教学中的应用 行为导向教学法在《C语言程序设计》课程教学中的应用 启发式教学法在C语言程序设计教学中的应用 项目教学法在高职《C语言程序设计》课程教学中的应用 案例教学和竞赛在《C语言程序设计》教学中的应用 任务驱动式教学在高职《C语言程序设计》课程教学中的应用 论项目教学法在高职《C语言程序设计》教学中的应用 “项目驱动”教学在《C语言程序设计》教学中的研究和应用 “任务驱动教学法”在《C语言程序设计》课程教学中的应用 案例教学法在“C语言程序设计”教学中的应用 案例教学法在“C++语言程序设计”教学中的应用 基于任务的教学模式在《C语言程序设计》课程中的应用 常见问题解答 当前所在位置:.
[3]何克抗. 从翻转课堂的本质看翻转课堂在我国的未来发展[J].电化教育研究,2014,(7):5-16.
[4]Fulton, Kathleen. Upside Down and Inside Out: Flip Your Classroom to Improve Student Learning [J]. Learning & Leading with Technology,2012(6):12-17.
[5]张渝江. 翻转课堂变革[J].中国信息技术教育,2012,(10):118-121.
[6]秦建华,何高大. 翻转课堂:理据、优势和挑战[J]. 现代中小学教育,2014,(5):17-20.
[7]汪琼. MOOCs改变传统教学[J].中国教育信息化,2013,(19):26-28.
[8]Jonathan Bergmann & Aaron Sam. How to make videos your students will love[DB/OL]. http:///2012/05/21/how-to-make-videos-your-students-will-love/,2012-05-21.
[9]金陵. 用“学习任务单”翻转课堂教学[J]. 中国信息技术教育,2013,(3):20-20.
[10]Baker,W.The Classroom Flip: Using Web Course Management Tools to Become the Guide by the Side [A]. The 11th International Conference on College Teaching and Learning [C]. Jackson Ville: Florida, 2000.
[10]金陵. 设计自主学习任务单[DB/OL]. http:///learn/ pku-21016#/ learn / content? type = detail & id=200062&cid=216351, 2014-10-25.
>> 非计算机专业Java语言案例教学实践 关于非计算机专业visUal Basic语言程序设计教学的思考 关于非计算机专业《C语言程序设计》循环结构教学的探讨 浅谈C语言程序设计在非计算机专业中的教学 浅析非计算机专业的C语言程序设计教学实践 高职非计算机专业《C语言程序设计》课程的教学研究 非计算机专业的C语言程序设计教学探索 非计算机专业《Java语言程序设计》课程的教学方法探讨 非计算机专业的C语言程序设计教学实践 关于非计算机专业C语言的教学探讨 提高非计算机专业学生编程能力的探讨与实践 浅谈非计算机专业计算机教学 浅析非计算机专业计算机教学 中职非计算机专业的计算机教学应与骨干专业相结合 计算机编程语言的发展与应用 刍议计算机编程语言的分析与应用 非计算机专业的计算机教育 浅谈非计算机专业的C++教学 高职计算机专业编程实践教学研究 项目教学法应用于计算机编程语言的探索 常见问题解答 当前所在位置:l。
(3) 运行该程序只需要双击该文件图标就可以在IE浏览器环境下运行,在指定的文本框中输入符合计算要求的数据点击确定就可以得到计算的结果,如图3和图4所示。
图3 程序初始界面
图4 运行结果
3小结
通过上述例子我们可以得出以下结论:
(1) 在记事本环境下,仅仅使用了一些简单的VBScript脚本语句就可以完成复杂的数值计算任务。VBScript是介于HTML语言和Visual Basic、Java等高级语言之间的一种脚本语言,它接近于高级语言的大部分功能,但却比高级语言简单易学。
(2) 在运行该程序时,不像其他的程序设计语言需要经过编译或解释等步骤,以此来生成目标文件、连接文件以及可执行文件等,使用VBScript在记事本中编写的程序需要做的工作仅仅是双击该文件名,而不会生成其他的中间文件,这样就大大节省了系统的存储空间。
(3) 在运行该程序时,对运行环境没有提出特别的要求,仅仅是需要一个IE浏览器。这对于拥有一台PC机的用户是轻而易举的事情。
(4) 当你还在费尽心思考虑程序的在多台机器之间传递的时候,使用在此提倡的方法无需有这方面的顾虑。对于在任何一台PC机上编写的 .html文件,你可以轻松在多台机器上拷贝和运行,而无需进行额外的路径配置等工作。
当然,我们提倡的这种方法并不是十全十美,如:对于需要大量使用界面图形来处理的问题,或者需要使用数据库的问题,该方法就有所欠缺,但是该方法对于仅仅是为了自己方便,进行一些数据处理来说,是再合适不过的了。
全社会的计算机普及,为大学的非计算机编程教育创造了良好的氛围和外部环境,使广大非专业人员学习和使用计算机编程语言变得更加容易,如何使学有所用,使高等教育成为社会发展的推动力量,是高校非计算机专业编程教学面临的严重的挑战,这也是本文的初衷。
参考文献:
[1] 施吉林, 刘淑珍, 陈桂芝.计算机数值方法[M].高等教育出版社.
[2] 刘瑞新, 汪远征.Visual Basic 程序设计教程[M].机械工业出版社.
[3] 国防科技工业知识产权管理研究中心.知识产权法律法规选编[M].经济科技工业知识产权.
收稿日期:2007-1-12
作者简介:
汪远征,男,副教授。主要研究方向:基础数学;
芦立华,女,助教。主要研究方向:过程挖掘和知识发现。
通信地址:郑州市东风路5号郑州轻工业学院信科系
邮编:450002
国二,指的是全国计算机等级二级考试,考试时间每年分两次,上半年时间为3月28日至4月1日,下半年为9月19日至23日,考试级别、内容和类别如下:
1、级别有程序设计、办公软件高级应用;
2、内容有计算机语言、基础程序设计能力;
3、类别有高级语言程序设计类、数据库程序设计类、Web程序设计类。
(来源:文章屋网 )
(南京大学计算机科学与技术系,江苏南京210046)
摘要:说明计算机组成及其他相关课程在整个计算机系统中的位置,分析计算机组成与其他相关课程之间的前、后关系;阐述计算机组成课程教学如何为先行课程答疑解惑以及如何为后续课程奠定基础,对计算机组成、程序设计、操作系统等课程的关联内容进行具体描述。
关键词 :计算机组成;课程内容关联;操作系统
文章编号:1672-5913(2015)17-0035-04 中图分类号:G642
基金项目:2013年教育部一英特尔产学合作专业综合改革项目“计算机系统专业课程体系”。
第一作者简介:袁春风,女,教授,研究方向为大数据处理系统、Web信息检索与本文挖掘、计算机体系结构,cfyuan@nju.edu.cn。
1 计算机组成在计算机系统中的位置
图1描述了计算机系统抽象层的转换。从图1可以看出,计算机系统由不同的抽象层构成,“计算”的过程就是不同抽象层转换的过程,上层是下层的抽象,而下层是上层的具体实现。
计算机组成课程涉及的内容主要位于图1中寄存器传送层( RTL)以上的微体系结构和ISA层次,介于软件和底层硬件电路之间的交界面上,属于整个计算机学科和计算机系统中最重要的基础核心内容。该课程是计算机专业最重要的专业基础课之一,所涉及的内容除了与数字逻辑电路、嵌入式系统等偏硬件类课程有直接关联外,还与操作系统、编译程序、高级语言程序设计等软件方面的课程密切相关。因而,在整个计算机专业教学中,该课程起着重要的承上启下作用。
计算机组成课程在整个计算机系统相关课程链中处于中心位置,该课程教学效果的好坏,对于学生建立计算机系统整机概念和培养学生分析、设计、开发、应用计算机系统的能力至关重要。该课程起到“粘合剂”的作用,在教学过程中应有机结合计算机软件和硬件,站在高级语言程序员的角度来理解计算机组成与系统结构,通过为程序员描述底层机器级行为把计算机系统中的各个抽象层联系起来。
2与高级语言程序设计课程的关联
高级语言程序必须转换为机器语言目标代码后才能在计算机中运行,其执行结果虽然由高级语言语句和所处理的数据类型及数据的值来决定,但归根到底还是由执行程序的计算机低层机器级行为决定。具体来说,在以下课程内容中可以与高级语言程序设计的相关内容建立关联。
2.1 数据的表示和运算
数据的表示和运算是计算机组成课程中的基本内容,传统上该课程仅介绍各类定点数和浮点数的编码表示、非数值数据的编码表示以及相应的各种算术运算算法及其运算电路,很少把这些内容与高级语言程序中处理的数据建立关联。事实上,高级语言程序中的数据就是该课程中介绍的数据,只是从不同角度看到的数据的属性不同罢了。例如,C语言程序中unsigned型数据就是定点二进制数,int型数据就是补码定点整数,float和double型数据就是IEEE 754单精度和双精度浮点数;C语言中支持的各种运算就是由该课程介绍的运算电路实现的;各种数据类型的位数就是定、浮点数编码的位数。
由于计算机中运算数据通路宽度和其他底层机器结构的限制,高级语言程序在进行数据类型转换或特定运算时会出现一些意外结果,如果不把高级语言程序中的数据及其运算与低层机器结构及机器级数据的表示建立关联,则很难理解为何会发生这些意外结果。同样,在讲述数据存放方式时,也可把大端/小端、对齐方式与具体程序及指令相关联,使学生深刻理解计算机系统各层次之间的关联。
2.2 Cache的基本原理
Cache的基本原理是计算机组成课程的重要内容。虽然从程序员的角度来说,编程过程中根本感觉不到Cache的存在,但是,由于程序访问的局部性特点,引入Cache后可以保证其命中率更高,从而在绝大多数情况下可以只访问高速的Cache而使CPU访存速度加快。因此,程序设计时是否考虑访问局部性对程序的性能是至关重要的,要做一名高水平的程序员必须深刻理解Cache机制。
因为Cache对程序员透明,所以在程序设计课程中肯定不会涉及Cache问题。如果在计算机组成课程中不将Cache与程序设计关联的话,学生就不知道在编程时要考虑局部性,从而可能编写出局部性很差的程序,极大地降低程序的执行性能。
实际上,在高级语言程序设计中很多情况下都存在如何开发访问局部性的问题,也有很多程序例子可以用于分析访问局部性和程序性能之间的关系,从而更好地理解Cache的基本原理。
2.3 虚拟地址空间划分
因为高级语言在计算机系统中属于操作系统以上的抽象层,高级语言程序中使用的地址,不管是代码的地址还是数据的地址,对应用程序员(即上述“逻辑地址”定义中的用户)来说都是感觉不到的。汇编语言虽然在计算机系统中属于较低抽象层,汇编语言程序员可以为代码段和数据段定义地址,但是这个地址并不是我们所说的虚拟地址。因此,即便学生有用汇编语言编写程序的经验,也无法正确理解“用户编制程序时所用的地址”这样的概念。
正确理解“虚拟地址”这个概念,对于学习虚拟存储器知识点至关重要。将虚拟地址空间的划分和程序设计中的相关概念建立关联,有助于学生理解“虚拟地址”概念,也更容易理解“所有程序使用相同的地址空间”这句话。而且,对于学生进一步理解程序设计中涉及的变量作用域和寿命等问题也有很大帮助。
2.4 指令系统设计
指令集体系结构(ISA)是计算机系统中最核心的抽象层,位于软件和硬件交界面。指令系统设计是计算机组成课程中最核心的内容。传统上这部分教学着重介绍指令系统设计涉及的指令格式、操作码编码、操作类型和寻址方式问题,而不提及指令系统与高级语言之间的关系。事实上,高级语言程序作为指令系统设计的需求,它们之间是密切相关的,高级语言处理的数据及其运算就是指令中的数据及其运算,高级语言语句的实现就是若干条指令构成的指令序列的实现。因此,指令系统设计时,需要从如何满足高级语言中数据及其运算以及各类语句功能的需要出发,从如何解决高级语言功能的问题人手来讲解指令系统的相关知识点。
3 与数字逻辑电路和体系结构课程的关联
通常,数字逻辑电路在计算机组成之前开设,而计算机体系结构则在计算机组成之后开设,这3门课程的内容位于计算机系统中同一层或相邻层,它们之间存在较大关联。
3.1 基本运算部件
半加器、全加器和无符号加法器的内容是数字逻辑电路中的主要内容,包括SN74181芯片、SN74182芯片等都不应作为计算机组成课程的主要内容。如果在课程教学中涉及SN74181、SN74182等芯片及其级联等内容的话,其意义仅在于让学生了解现代CPU是如何用快速的先行进位方式来实现加法器的,而不需要让学生了解如何进行芯片级联,更不能让学生产生错误的认识,以为现代计算机的CPU是由芯片级联形成的。
3.2 CPU的组织结构
传统课堂上,有关CPU组织的内容都是以总线式CPU作为模型机来进行讲解的,这样的模型机实际上都不能反映现实技术,现代CPU中指令的执行都采用高级流水线技术。
为了与计算机体系结构很好地衔接和关联,计算机组成课程需要细化指令流水线的执行过程。在讲解指令流水线之前给出单周期数据通路及其控制器的结构,然后在单周期处理器的基础上给出流水线处理器的结构,再在流水线处理器中分析一个指令序列中的各指令在指令流水线每个时钟周期内的数据流动过程,从而为理解指令流水线执行时可能的冒险现象以及解决流水线冒险的处理方法打下良好的基础。
3.3 数据通路的定时
对于数据通路的定时,传统教学都会提到CPU的三级时序信号系统和机器周期的概念,事实上这些概念都是在引入Cache之前的处理器设计中应用的,在现代计算机中它们是过时的知识点,不应该作为主要内容,最多只是历史性或过渡性介绍内容。传统教学中很少对现代计算机中数据通路定时方式作介绍,而这个内容却是非常重要的,它是学生理解时钟周期和主频以及计算机性能等内容的基础,需要在教学中增加这部分内容。
4 与操作系统课程的关联
操作系统是计算机组成的后续课程。操作系统的主要内容是如何管理计算机的资源,而计算机组成课程介绍的就是这些计算机中的资源,如CPU、存储器和I/O。操作系统需要通过硬件提供的特权指令直接对硬件底层进行控制和处理,这两门课程内容之间存在非常密切的关联。这两门课程之间的关联主要体现在以下几个方面。
4.1 异常和中断处理
异常和中断是打断用户进程正常执行的两大类事件,它们的发生会引起CPU从执行用户进程的用户模式转入执行系统进程的内核模式。计算机组成课程的传统教学中,没有引入CPU运行模式的概念,学生对很多关键问题缺乏正确认识。例如,异常和中断如何引起CPU模式的切换?硬件需要为此提供哪些机制?硬件和操作系统之间如何协调处理异常和中断?中断(异常)返回指令与过程返回指令功能的差别以及它们各自在数据通路中的执行过程是什么?
为了更好地与操作系统的相应内容衔接,在计算机组成课程中应该增加或强化以下内容:严格区分内部异常和外部中断,将内部异常的内容放在介绍CPU数据通路和控制器的部分;通过分析具体指令执行过程中可能的异常事件强化内部异常的概念,并通过例子说明异常响应过程的具体操作;引入CPU运行模式,将异常响应过程与模式切换结合起来,在操作系统课程教学时回顾这部分内容并细化操作系统内核中相应的处理细节,这样,学生可以非常清晰地了解整个过程,包括相关的硬件和软件部分。
4.2 虚拟存储器机制
计算机组成和操作系统课程都涉及虚拟存储器,传统教学在这两门中所讲的内容很多都是重复的。例如,两门课程都会讲3种虚拟管理方式:地址转换、页表和页表项、TLB,如果不特别强调硬件和操作系统在实现虚拟存储机制中的角色,会给学生带来困惑,不知道哪些内容属于硬件设计需要考虑的,哪些是操作系统需要考虑的。
通过将虚拟存储管理与指令执行关联起来讲解可以非常具体地说明计算机系统中硬件和操作系统之间协调完成特定任务的过程。同样,介绍TLB工作原理时也可以与指令的执行过程进行关联,让学生了解TLB缺失也是由CPU在执行指令过程中进行地址转换时发现的。如果用硬件实现对TLB缺失的处理,那么就像Cache缺失处理一样,CPU冻结当前指令的执行时序,即当前正在执行的指令被阻塞,转到相应的缺失处理控制逻辑去执行,结束后再回到当前被冻结的指令执行;如果用软件实现对TLB缺失的处理,那么就像缺页处理一样,会引起CPU执行模式的切换,调出操作系统内核进行相应处理。
4.3 系统控制类指令的设计
在计算机组成课程中讲解指令系统的设计时,会提到指令系统中有系统控制类指令,但是具体有哪些指令则很少提到。事实上,这些系统控制类指令主要用于操作系统内核程序,并且与机器底层的控制有关。例如,操作系统在进程切换时,需要冲刷Cache和TLB,因此,会有一些与Cache和TLB管理相关的系统控制类指令;自陷和系统调用是从用户态向核心态转换的一种方式,因此,指令系统设计时需要有自陷指令和系统调用指令。如果在讲相关内容时,提一下系统控制类指令与进程切换和CPU模式转换等知识的关系,也可以为学生学好操作系统打下良好的基础。
4.4 输入/输出系统
在计算机组成课程中,通常有一个专门的章节介绍I/O系统,而操作系统与I/O系统有着极其密切的关系。
在操作系统的设备管理程序、设备驱动程序和中断服务程序中都涉及I/O设备、I/O接口、I/0控制方式等内容,而这些是计算机组成课程的基本内容。在讲解这部分内容时如果能有意识地说明其和操作系统之间的关联,将会为学生学习后续操作系统课程打下良好基础。MIT6.004课程(Computation Structures,相当于国内的计算机组成课程)实验8设计的实验内容很有启发性,它非常恰当地表达了计算机组成和操作系统两个课程与输入/输出系统之间的关系,对学生理解用户如何从用户进程陷入操作系统,最终由操作系统内核直接控制输入/输出设备这样的过程很有帮助。
5 与编译技术课程的关联
计算机组成是编译技术课程的先行课程。编译器的功能是将高级语言程序转换为机器级代码,而机器级代码的相关内容就是计算机组成课程讲解的主要内容,因此,计算机组成和编译技术之间也有很大关联。
5.1 程序的等价翻译转换
在计算机组成第一讲中通常会通过程序功能等价转换的例子来阐述计算机系统层次结构,可以通过例子让学生初步了解编译程序的概念。然后,在后续相关内容的讲解中,强调经过编译后得到的机器级程序,强调选择哪个寄存器来存放高级语言程序变量是编译器的工作,选择什么样的指令序列来实现特定高级语言程序功能也是编译器的工作,由此来强化编译程序与计算机组成相关内容之间的关联,潜移默化地强化学生的计算机系统整体概念。
5.2 流水线调度与编译优化
计算机组成课程中涉及指令流水线设计,其中数据冒险和控制冒险的处理以及静态和动态流水线调度等内容都与编译优化有关。在介绍这些内容时,可以通过例子说明编译优化的概念。在编译技术课程中不会涉及计算机结构和指令系统,不会介绍这方面的编译优化技术,因此安排在计算机组成或计算机体系结构课程中讲解比较适合。
6 结语
计算机组成课程内容位于计算机系统最核心的中间位置,它对学生建立计算机系统整体概念,培养学生理解、使用、设计和开发计算机系统起着非常重要的作用。在该课程的教学过程中,如果能够很好地与高级语言程序设计课程建立关联,能起到为高级语言程序设计课程答疑解惑的作用,并强化学生在程序调试、程序性能提升、程序移植和程序健壮性等方面的能力。在与数字逻辑电路和计算机体系结构课程的衔接中,还需要更加合理地安排内容,减少重复和陈旧的内容,增加必要的过渡内容。在与操作系统课程的关联部分,需要把硬件实现部分和操作系统实现部分区分开来,侧重讲清楚硬件实现部分以及硬件与操作系统之间的接口部分,把操作系统实现的部分留给操作系统课程。在与编译技术课程的关联中,应着重让学生了解编译程序与机器结构及指令系统的密切关系,并建立编译优化和指令流水线技术的关联。
参考文献:
[1] Yale N P,Sanjay J P.lntroduction to computing systems from bits and gates to c and Beyond[M].2版.北京:机械工业出版社,2006.
[2]袁春风,张泽生,杨若瑜.计算机组成与系统结构课程建设思路与教学实践[J].计算机教育,2012(2): 62-66.
[3]袁春风,计算机组成与系统结构[M].北京:清华大学出版社,2010.
[4] CMU.Introduction to Computer Systems[EB/OL]. [2015-06-30].cs.cmu.edu/~213/.
Abstract: Assembly language has complex instructions and many provisions which lead to the weariness of students. In order to improve the teaching effect of assembly language programming, this article explains how to easily learn assembly language from the comparative perspective of English and C language grammar in order to improve the interest of learning.
关键词: 单词;词法规则;语法规则;语法成分;语句
Key words: word;lexical rule;grammar rule;grammatical component;statement
中图分类号:TP313 文献标识码:A 文章编号:1006-4311(2014)19-0193-02
1 绪论
作为最接近机器语言的编程语言,汇编语言可以称得上是最接近于计算机操作本质的语言。其直接面向硬件的特性,使得在使用汇编语言编程时,能够清楚感知计算机的运行过程和原理,充分认识应用程序和计算机硬件之间的联系与交互。相对于高级语言来说,汇编语言对编程者思维逻辑的锻炼表现尤为突出,对于形成软、硬兼备的编程知识体系具有举足轻重的作用,而且指令集合简约,指令操作直接。很多硬件设施的嵌入式编程使用的都是汇编语言,因为汇编语言更直接,更有效率。例如现在很多数码产品赖以生存的芯片、主板等,都包含了嵌入式程序,而这些程序中,汇编语言的使用是非常普遍和相当重要的。对于计算机专业语言类课程的学习来说,从汇编语言开始学习更符合循序渐进的学习原理。特别是在计算机技术专业的学习中,汇编语言具有十分重要甚至说不可代替的作用。因学生有英语、C语言学习的基础和习惯,故本文从英语、C语言语法对比的角度,说明如何轻松学好汇编语言,以便更好地由英语学习、C语言学习自然过渡到汇编语言学习。
2 汇编语言课程的特点
汇编语言是计算机能提供给用户的最快而又最有效的语言,同时能够利用计算机所有硬件特性并能直接控制硬件。所以高级语言简单、易学且开发效率高,而汇编语言复杂、难懂、开发效率低。优点:①用汇编语言所编程序时空效率高。由于汇编语言本质上就是机器语言,可直接、有效地控制计算机硬件,因而与高级语言相比,容易得到运行速度快、执行代码短、占用内存空间少的高时空效的目标程序。②用汇编语言能设计出高级语言无法实现的程序。正是由于与机器的密切相关性,使得汇编语言能充分利用计算机的硬件特性,编写出与硬件紧密相关而高级语言又无法实现的程序。缺点:①难学、难理解、难编程、难调试、难维护等。②汇编语言程序可移植性差,它是面向机器的语言,不同的机器CPU不一样,一个CPU一个指令系统,硬件CPU的不兼容导致程序移植困难。
3 英语与汇编语言的对比(表1)
例如以下程序:
Data segment ;data段开始
X dw 10,20,50,70,-90 ;data段正文
Data ends ;data段结束
Code segment ;code段开始
Assume cs:code,ds:data
Main: mov ax,data
Mov ds,ax
Mov bx,offset x
Mov cx,5 ;code段正文
Mov ax,0
L: Add ax,[bx]
Add bx,2
Loop l
MOV AH,4CH
Int 21h
Code ends ;code段结束
End main ;整个程序书写结束,从语句main开始执行
该程序的功能是求数据10,20,50,70,-90的累加和
4 单词的种类
4.1 常量(常数)单词 ①10进制整形常量。词法规则:以D结束(D可省略),由0-9构成 如 123D,456。②16进制整形常量。词法规则:以H结束,由0-9,A-F构成 如 123H,456H。③8进制整形常量。词法规则:以Q结束,由0-7构成 如 101Q,456Q。④2进制整形常量。词法规则:以B结束,由0-1构成 如 101B,110B。⑤字符型常量。词法规则:单引号括起来的字符,其值为其ASCII码如‘1’的值是41H,’AB’的值是4241H,’ABCD’的值是44434241H,字符顺次存放,其值是低位在低地址部分。
4.2 名字单词 词法规则:以字母或下划线开始,由字母,数字,下划线构成的串。如xyz,flag,名字可以是段名,子程序名,指令的名字,常量名,变量名,寄存器名等。
4.3 运算符单词 算术运算符:如+,-,*,/。伪指令运算符:如offset,seg,xor。
4.4 操作码单词 区分不同的操作(运算),含义必须硬记。如ADD(加法),SUB(减法),MUL(乘法),DIV(除法)。
5 语法成份――表达式
语法规则:由常量,运算符,括号,名字构成。如123+456+x,其中最常用的表达式有:①100:数据100。②[100]:100号单元,100不是数据,是地址,100号单元的内容是数据。③BX:BX单元。④[BX]:BX所指向的单元,并非BX单元。⑤10[BX]或书写成[10+BX]:BX所指向的单元,下10个单元。⑥[SI][BX]或书写成[SI+BX]:BX所指向的单元,下SI个单元。⑦10[SI][BX]或书写成10[SI+BX]或书写成[10+SI+BX]:BX所指向的单元,下SI个单元,再下10个单元。
6 语句格式
自然语言格式是:动词(做什么)宾语(对谁做)状语(怎么做)。汇编语言格式是:动词(做什么)宾语(对谁做),省掉状语(运算结果怎么办,隐含给出)。
语法规则:[名字][:]操作码目的操作数,源操作数;注解。表示做何种操作的代码称为操作码,参加操作的数称为操作数,操作数无非是常量,名字,表达式。存放结果的称为目的操作数,仅参加运算的数称为源操作数。运算后,目变源不变。
语义规则:目的操作数操作上源操作数,结果送到目的操作数(运算结果怎么办,隐含给出)。
如 ADD AX,BX表示AX的内容加上BX的内容送AX,(AX)+(BX)送AX。
7 汇编语言与C语言的比较(表2)
8 结束语
计算机由硬件软件两部分构成,汇编语言可直接在硬件层上编程序,高级语言有编译程序,该软件层遮盖了硬件层,使得用户看不到硬件,看到的只是编译程序的语法约定。故学好汇编语言,对于理解计算机内部运行机制及产品开发尤为重要。
参考文献:
[1]王成耀.80X86汇编语言程序设计(第2版)[M].北京:人民邮电出版社,2008.
关键词:机器语言;汇编语言;计算机高级语言
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)08-0093-02
计算机组为什么有别与其他人类发明的工具,能够自动、准确的执行人们事先编制好的程序?要回答这个问题我们必须理解机器语言、汇编语言、计算机高级语言。计算机高级语言很多人接触到或者学习过不难理解;但是机器语言、汇编语言很少有人接触,包括计算机专业的学生,这些年也逐渐不再开设汇编语言程序设计课程。计算机的层次结构如图1。
1计算机的机器语言
很多教材对计算机的机器语言概括为计算机能直接执行的语言,用户必须用二进制(0,1)来编写程序,要求程序员对所使用的计算机硬件及其指令系统十分熟悉。这样的解释很抽象也很难理解。其实机器语言并不难理解,我们用教室的电灯系统来举例,用Ki表示对应的开关;用1表示开关闭合,用0表示开关断开;假如教室里有4个开关,分别控制不同的电灯。则教室里电灯系统的指令系统用二进制(0、1)表示出来如表1。
@里的指令系统中0000表示全灭,1111表示全亮。根据这个指令系统编写了某个程序,Ti表示指令执行的时间周期。程序如表2所示。
这是与电灯系统为例。如果以某机器为例,对ax2+bx+c进行运算,进行程序优化为(ax+b)*x+c;具体机器语言步骤如图2。
2汇编语言
通过上面两个例子对机器语言能更好地理解。汇编语言是在机器语言的基础上出现了符号式的程序设计语言。它用符号ADD表示加;SUB表示减;MUL表示乘;D1V表示除;MOV表示取数等。用汇编语言ax2+bx+c进行运算程序如下。
数据段定义a,b,c,x;
代码段如下MOV A CCX;取数x至ACC;
MUL a;ACC的值乘于a,放到ACC中,即a*x->ACC;
ADD b;ACC的值加b,放到ACC中,即a*x+b->ACC;
MUL x;ACC的值乘于X,放到ACC中,即(a*x+b)*x->ACC;
ADD c;ACC的值加c,放到ACC中,即(a*x+b)*x+c->ACC;
MOV result,ACC;把结果从ACC送到result单元。
通过这个程序可以知道,汇编语言与机器语言是一一对应的,故需要程序员对计算机的硬件、结构和指令系统都要熟悉。
3高级语言
高级语言对问题的描述十分接近人们的习惯,跟数学逻辑类似,并且有较强的通用性。如FORTRAN.BASIC、PASCAL、C等,比如C语言编写ax2+bx+c进行运算程序如下。
中图分类号:G642
摘要:针对普通高等院校工程能力培养过程中实效性差的问题,提出以学生工程实践能力培养为主的自主学习模式和一种渐进式工程能力培养的训练模式,以C语言编程能力训练和数据库工程能力培养为例,从课程的教学模式和方式上进行探索与实践,通过案例驱动编程能力的训练和“初步体验、独立项目实践、从业实践与实训”的渐进式实践教学模式,达到学生工程应用能力的培养目标。
关键词:自主学习;工程能力培养;渐进式;案例教学
0 引言
近年来,我国高等教育规模快速扩大,高等工程教育培养规模已经跃居世界第一,但培养学生的质量和工程素质一直存在问题。现行工程教育模式中存在一些共性问题,如在教学过程中存在重理论教学、轻工程实践、重过程形式、轻能力培养、评价考核机制不科学等问题。普通院校的学生普遍存在基础差和自学能力弱等问题。
浙江传媒学院电子信息学院电子信息工程专业的培养方案中,计算机工程应用能力是该专业的能力培养目标之一。为此我们在多年课程教学实践的基础上,针对计算机工程实践能力的培养,建立高级语言程序设计(C语言)、数据结构、Java语言程序设计、数据库技术与应用的计算机类课程群,以增强工程意识、提高工程素养和工程实践能力为具体目标,以培养学生的自主学习能力为根本宗旨,以4门课为基础提出以学生实践为主的自主学习模式和渐进式工程能力培养训练模式,就整个教与学的管理过程及评价机制开展深入的探索与实践。
1 以学生实践为主的自主学习模式
教学改革的目标是力图实现本科教学模式的3个转变——以教为主向以学为主转变、以课堂教学为主向课内外结合转变、以结果评价为主向结果与过程评价结合转变,这3个转变归结起来就是以能力提升为最终目的。因此,我们对高级语言程序设计(C语言)的教学模式进行大胆改革,探索以学生实践为主的自主学习模式。
高级语言程序设计(c语言)主要讲授程序设计语言的基本知识和程序设计方法,使学生了解高级程序设计语言的结构,掌握程序设计的思想和方法以及基本的程序设计过程和技巧,具备初步的分析问题和利用计算机求解问题的能力。目前,高级语言程序设计(C语言)课程的教学模式仍然是重教轻学和重理论轻实践,教学内容的组织也往往是以语法知识为主线,考试内容偏重语言而不是编程,而编程能力的培养只能通过加强实践达到。
1.1 强化实践教学。激发学生自主学习
传统的课程教学都是采用教师在课堂上讲授知识,学生课后做作业,然后进行几次课内实验的模式。对于这种学习模式,学生只是被动地接受知识,而要掌握c语言程序设计必须进行大量的编程练习。针对传统高级语言程序设计教学模式的弊端,我们彻底改变原来以理论教学和教师讲授为主的教学模式并将其转变为以学生实践为主的自主学习模式,将目前高级语言程序设计(C语言)的64总学时(其中理论44学时,实验20学时)改为96学时(周学时为6学时,课内实验4学时,课外实验2学时);全部采用实验课授课模式,将教学地点从教室移至实验室,不再进行理论授课,而是由学生自学理论知识,然后上机编程,通过这种形式迫使学生自主学习。
学生在每次上实验课前或在课余时间都要自学实验所要求的理论知识,在课内实验中,根据教师给出的实验指导书验证案例,对案例进行改写,进而模仿案例完成实验要求的内容。对于程序中出现的语法等问题,我们要求学生自行查书或资料解决。实验过程中,我们要求每名学生自主完成实验内容,但在整个学习过程中每个班可分成若干个学习小组,小组成员在课内外可合作学习,相互交流讨论和解决问题,一方面提高学习效率并开拓思路,另一方面也可培养团队合作能力,遇到疑难问题时再由教师答疑。
实验平台可采用任一C语言的开发工具,鼓励学生采用在线判题系统(Online Judge,简称OJ),为学生自主学习提供一个更好的平台,学生可利用OJ系统在课内外随时学习。教师也可通过分析学生提交的程序实现代码,发现学生学习过程中存在的问题,及时了解学生对知识的理解和掌握情况,同时也有利于学生间形成互相竞争的机制和一种良好的学习氛围。另外,课程还提供网络和视频教学平台,便于学生更好地进行自主学习。
学生通过自学和进行大量的上机训练,逐步熟悉并掌握c语言的基本语法和使用,具备基本的C语言编程能力。通过这种方式,学生变被动学习为主动学习,很快适应大学的学习方法,培养了独立解决问题的能力、进行程序设计的兴趣和学习专业的兴趣。
1.2 以案例驱动教学,转变教师角色
在传统的教学模式中,教师始终充当主角,大多数教师都会精心组织教学内容,想方设法将知识传授给学生,但事实上,学生在课堂上却往往感到枯燥无味,收效甚微,而在实验课上面对编程题又无从下手,因此教师必须改变观念。授人以鱼不如授人以渔,教师应当更多地承担引导角色,改变教学模式,令学生变为主角,变被动学习为主动学习。
课程教学完全是以学生上机实验自主学习为主,但要在教师的引导下进行。在整个教学过程中,教师拟作2~3次课的讲授,一是为整个课程作入门铺垫,主要介绍课程的教学目标、学习方法、课程概论、课程主要知识点、程序设计思想以及程序的基本结构,使学生了解课程的要求以及课程的教学组织形式,了解C语言程序课程概况;二是讲解如何上机调试程序,让学生掌握判断和定位错误,学会分析、解决错误和测试程序的方法;三是对课程学习过程进行控制并进行总结归纳。
在整个教学过程中,教师要能及时了解学生的学习进展情况,在实验课开始时检查学生的预习情况,在实验过程中适当给予提示或帮助学生答疑,在每次实验课程结束后略加小结,然后布置下一次的实验要求。最重要的是教师要精心设计实验案例和实验课程组织方案,给出能利于并引导学生自学的实验指导书。
实验内容的组织以程序设计为主线,以编程案例为驱动,侧重以编程引导学生对语法知识的深入理解。实验指导书主要包括实验目标、知识点预习要求、实验内容等方面,实验内容包括验证案例程序的详细内容和步骤、要求进行改写的程序以及要求仿写和完成的实验程序。此外,教师还可以另设计一些提高性的内容以供学习能力较强的学生完成。
2 渐进式的工程化实践教学
数据库技术及应用是与各专业应用结合比较紧密的应用技术基础课程,是一门工程性和实践性都非常强的课程,因此我们主要以工程化实践教学模式进行数据库技术与应用课程的教学,根据“初步体验、独立项目实践、从业实践与实训”3个层次实行渐进式实践教学训练。在教学过程中,我们注重培养学生的工程能力,强化学生的工程实践意识,从教学内容的组织和实验环节的设计到课堂教学案例和实验教学的开展,都围绕工程素养的培养进行遴选。
2.1 采用工程案例驱动的理论教学模式
在理论课讲授方面,我们以工程案例驱动模式进行教学,以网上书店的开发案例贯穿教学全过程,将数据库基本原理和设计技术融于案例教学过程。同时,根据浙江传媒学院电子信息工程专业的传媒行业特色,对教材的内容进行优化整合,增加与新媒体应用相关的多媒体数据库等新技术内容,加强数据库工程应用设计及网络数据库应用技术能力的培养。在各章的教学中,我们用案例进行分析,逐层引导,全过程地阐述数据库系统原理及应用中的各类概念和技术问题。
2.2 实行渐进式的工程化实践教学过程
1)初步工程训练体验。
课程的教学除了理论教学外,还有相应的课内实验教学。实验内容分成两部分,一部分是数据库技术的基本实践,主要包括特定DBMS的使用、SQL语言的编程练习以及数据库的连接技术;另一部分是小型数据库应用系统的开发,采用工程化的基本思想,组织学生分组设计实现一个初步的工程项目,培养学生的自学能力、主动学习能力、团队协作能力以及初步的工程实践能力。
在初步工程训练体验阶段,教师提出工程设计的基本功能和性能要求,包括系统界面设计、基本的数据操作和查询统计功能设计、性能指标设计等基本要求。学生可自由组成小组,根据教师要求自主选题并自主选择开发工具和数据库环境,在完成基本功能要求的前提下,可以结合自己的工程项目设计实现一些特色功能模块,然后完成项目设计的总结报告。最后,教师对每个小组的作品进行项目验收,要求每个小组制作PPT进行项目工作汇报并演示所设计的作品,由学生推选出的若干学生评委负责项目评分。工程项目设计成绩作为该小组成员平时成绩的主要评分依据。
2)独立工程训练实践。
独立工程训练实践要求学生在课程设计阶段完成。该阶段要求每个学生自主完成一个真实的或模拟的项目开发实践,以着重培养学生的自学能力、独立从事工程实践的能力、基本的分析问题和解决问题能力。
课程设计阶段要求学生自学数据库开发工具和环境,强调独立设计,强化学生查阅资料能力、自学能力、创新设计和实践能力的培养。在此课程设计阶段,教师除了提出项目设计的基本能力训练要求和设计作品的基本功能和性能要求外,还给出一系列参考选题让学生选择。学生也可以自主选题,但需征得教师同意,以保证选题的质量。为避免抄袭等行为的发生,每个学生的题目和内容必须不同。同时,课程设计阶段会要求学生采用与上一次设计不同的工作模式(C/S或B/S),采用工程化的手段和方法完成基本的设计实现工作。
课程设计完成后,指导教师组织学生评委(7人)对学生作品和设计方案进行检查,最后通过汇报答辩的形式评定作品设计成绩。作品设计和汇报答辩成绩由学生评委给定,教师在设计过程中负责答疑,在答辩过程中负责点评,但教师有权对成绩进行微调。另外,在课程设计结束后,学生要完成课程设计报告,教师对课程设计报告批注评语并给出成绩,课程设计的最终成绩由作品设计成绩和设计报告成绩组成。
经若干次实践证明,上述实践教学方法既减轻了教师的工作任务,同时又促使学生相互学习并取长补短,在促进学生自主学习、主动学习和实践的同时,也提高了学生的表达能力;通过课程设计报告,学生提高了撰写规范的项目设计方案的能力和设计总结报告的水平。
3)从业工程训练实践。
从业工程训练实践主要指学生在企业实习期间,以行业一线的真实工程项目为背景,参与并完成相应的工程项目设计实现工作(或作为其毕业设计),培养数据库工程应用实践开发和运用数据库技术从事服务外包等实际应用开发能力。
第3阶段主要是结合实际数据库工程项目,尤其是与传媒应用密切相关的数据库工程项目的设计与实现工作,如电视节目查询点播系统、媒体资产管理系统、影视资料编目系统等。这一阶段的实践主要培养学生的实际应用能力,帮助其尽快适应社会需求,在离校前具备应对复杂工程实践的基本能力。通过3个阶段的实践教学,学生能够初步具备到一线从事数据库工程及服务外包等项目开发的基本能力。
3 以能力培养为目标的考核评价机制
教学方法和手段中的一些不足之处,不可避免地会导致考核评价机制不科学和不公平现象的发生。多数课程的考试都采用期末笔试形式,课程考试无法真正做到考核学生的实际工程能力,为此改革评价方式宜与教学模式改革相配套。
关键词:C语言 教学方法 教学改革 上机实验
一、背景
C语言是国内外应用广泛的计算机语言,它不仅具备高级语言可移植性好、易用性强等优点,又兼顾了低级语言高效、可直接对硬件操作等大部分功能,是计算机编程人员应掌握的一种程序设计工具。C语言程序设计是各高等院校、技工院校计算机及相关专业重要的专业基础课,该课程既能体现学生的逻辑思维能力和推导能力,又能培养学生的创新精神。但由于C语言功能强大,使用灵活,内容抽象、枯燥,特别是对于数学和英语基础比较差的学生来说,普遍存在着阅读程序困难、编写程序无从下手等问题,并产生不同程度的抵触心理。因此对于担任该课程的老师来说,如何教好这门课程,使学生逐步掌握程序设计的思路及方法,并能灵活运用高级语言进行程序设计,是这一门课程的目的和宗旨。
二、C语言程序设计课程教学现状分析
C语言程序设计课程的掌握情况对后续课程有着至关重要的影响,通常将其作为学生的第一门程序设计语言课程。许多学生此前并未接触过程序设计语言,对算法、数据结构和程序设计一无所知,一开始对C语言很好奇,但随着教学内容的深入,大量抽象概念、术语、语法规则的记忆及枯燥无味的例题分析,使学生产生畏难情绪,逐渐失去学习热情;还有一部分学生虽然课堂上听得懂,但自己编程时却无从下手,或者编写的程序错误多,无法分析出错原因,所以对学习失去了信心;甚至还有个别学生认为C语言已过时、实用性不强,不如面向对象的C++语言或JAVA语言,导致在学习过程中积极性不高。
目前,大多数教师的C语言课程的教学仍然停留在传统的教学模式上,过度注重语法、算法等细节,以教师“教”为中心,满堂灌。学生在教师的指导下被动地接受。教师只能保证所授知识的系统性,却不能充分发挥学生的学习自主性,无法培养学生的创新能力和逻辑思维能力。
三、C语言程序设计课堂教学改革探索
根据C语言自身的特性,我们从教学手段、教学方法等方面进行了一系列的探索及改革,启发并训练学生的编程思维,以期能进一步提高该课程的教学效果。
1.以激发学生的学习兴趣为先导
兴趣是最好的老师,是学生主动学习的主要动力。教师将学生引入C语言课堂时,首先要强调C语言的重要性。第一节课的教学可为学生介绍C语言在日常工作中的应用,如各种大型管理软件(人事管理、图书馆管理等)、系统软件(如Windows)都可用C语言实现,让学生了解该课程与社会的关系;通过实例展示一个用C语言编写的动画程序(如满屏雪花飞舞),抓住学生的眼球,改变学生只有Flash等软件才能制作动画的观念;选择简单的数学题目,在计算机上用C语言真正实现数学计算过程。通过演示实用性强的案例能提高学生的学习兴趣,使他们体会到C语言的奇妙。随着课程的深入,可引入趣味性强的算例,如杨辉三角、百元百鸡、猴子吃桃、水仙花数等,逐渐培养学生的分析及推导能力,激发学习热情。
新课内容讲授完毕,要及时布置相应的课堂练习,这样既能加深学生对该知识点的理解,又不会使学生感到课堂枯燥无味。可让个别学生直接在讲台上的计算机中编写、运行及调试程序,其余学生独自书写程序后相互进行讨论、点评,以便教师能够及时发现学生每节课的掌握情况,从而对症下药。教师不可拘泥于一种算法,若发现学生有独特新颖的算法,应鼓励学生积极展示个人的编程思路。鼓励与肯定可使学生增强自信,也可加强学生不断创新的意识。
2.开发智力,引导学生自主学习
在教学过程中,应以开发学生的能力为主,充分利用程序设计及算法自身的思维方法进行教学。教师要引导学生将知识加以引申,使学生能够触类旁通,识一山而知千峰。如在讲解同一类问题时不要逐题讲解,而应该积极拓展学生思维,在讲解一两个典型例题的基础上,启发学生总结归纳出求解这一类问题的基本算法。例如求1+2+3+4+……+98+99+100是循环结构必讲的经典例题,经过算法分析,程序思路为:引入三个变量,s变量存放累加和,在未累加求和前其初值为0,i表示已累加的项数,其初值为1,t表示求和多项式中的某一项,其初值也为1。当累加的项数小于等于100时,每当i自增1得到求和多项式中的某一项t后将其累加到s中。讲授完该例后,可让学生分析下面例题的解题思路:2/1,3/2,5/3,8/5,13/8,21/13,……求这个数列的前20项之和。经过分析,学生得知两个例题解题思路相同,只是循环结束的条件以及t的增值方法不同而已。通过以上两个典型例题的讲解,教师还可以要求学生重新设定范例中各单项式的值而演变成其他的累加问题,如求100个数的偶数和、奇数和、各数的立方和等,引导学生归纳求若干项和的这类问题的通用算法。针对以上问题在选用循环语句的过程中,教师可以点拨学生分别用WHILE循环、DO-WHILE循环及FOR循环编写同一个题目。这样,教师虽然只讲解了一个例题,学生却学会了同类问题的解决方法,举一反三,从而开发了学生的智力,培养了学生自己学习、自己研究的习惯和能力。
3.灵活运用多种教学方法
(1)传统教学手段与现代化教学手段相结合。传统的黑板板书不利于教师书写程序,既浪费时间又达不到预期的效果,必须将板书与多媒体技术有机结合起来。在课堂教学中,课件的使用能大大优化教学过程,丰富课堂内容,使教学过程更形象、直观、生动。课件的制作要符合学生的年龄及心理要求,以吸引学生的注意力;课前将概念、程序代码制作成课件,课堂上即时进行调试和运行程序。我们要充分利用多媒体课件,但不能过度依赖课件,教师在使用课件的同时,应将部分重点、难点内容通过板书展示,板书与课件的结合有利于学生抽象思维和编程能力的提高。
(2)任务驱动教学方法。任务驱动教学方法是一种建立在建构主义学习理论基础上的教学法,教师根据课程内容布置具体的任务活动,学生在教师的帮助下完成既定任务,以此掌握课程内容,达到教学目的。教学中应基于“以教师为主导,以学生为主体”的教学模式,通过案例和问题引入主题,重点讲解程序设计的思想和方法,并穿插介绍相关的语法知识。比如讲Switch分支语句时,先向学生提问:如何把百分制成绩转换成等级,即90分以上为“优秀”、80~90分为“良好”,70~80分为“中等”,60~70分为“及格”,60分以下为“不及格”?回顾if语句,用if-else的嵌套可以实现,但学生会发现程序比较复杂,且容易出错,这时引入新的课题Switch分支语句,先将Switch语句的一般形式板书出来,然后对Switch语句的执行过程进行课件动画分解讲解,进而分析上述例题的解题思路,给出源程序代码,在讲解代码的过程中对Switch语句的注意事项加以强调。这种教学有助于激发学生的求知欲望,培养学生分析问题、解决问题的能力,缩短了学习周期。
(3)对比式教学方法。C语言的概念比较复杂,教学过程中教师通过对比的方式对相似的程序代码或相关的概念进行分析比较,进而明确差异,而后归纳总结,将会收到事半功倍的效果。例如函数这一章涉及的概念较多,主调函数、被调函数、实际参数、形式参数、局部变量、全局变量等。这些概念容易混淆,若对比讲解,学生就很容易理解了。
4.重视上机实验教学
C语言程序设计是一门实践性较强的课程,既要求学生掌握程序编写的基础知识,更强调学生能够独自上机调试运行程序,因此培养学生的实践动手能力尤为重要。上机实操课时应不少于该课程总学时的50%,在上机实验课中必须做到循序渐进,对所学的每一部分内容都应要求学生完成一定数量的上机实验。不能盲目地将课本上的例题作为上机实验,学生无法理论联系实际。上机习题既要有基础题目,又要有趣味性与实用性的题目。实验时,教师对学生的问题给予提示,启发学生自己思考并解决问题。自行编写的程序在上机调试运行中,会有很多意想不到的错误,通过改正这些错误,可使学生逐步提高对C语言语法的理解能力。学期末应安排综合性强、知识点涵盖范围广的实验,学生根据要求查阅相关书籍资料,完成实验原理、实验步骤后交由教师批阅,师生讨论后学生分组完成实验。每节实验课教师均应做好上机成绩登记,课后学生需完成实验报告。上机实验还应作为期末课程考试的考核内容,重点测试学生程序改错、编写程序、调试程序等综合能力,上机考试的分值不应低于总分的30%。
四、小结
教学方法多种多样,因人而异,教学过程是一个需要不断精益求精的过程,只有因材施教,使学生建立程序设计及软件工程的整体框架,提高学生分析问题与解决问题的能力,才能达到教学的真正目的。
参考文献:
[1]谭浩强.C程序设计(第二版)[M].北京:清华大学出版社, 2011.
[2]楼俊君.C语言程序设计的教学研究[J].黑龙江科技信息,2008(27).
[3]徐大华.《程序设计C语言》教学思考与探讨[J].信息技术,2010(12).
[4]马新.C语言程序设计课程教学方法与手段的改革与实践[J].科技信息,2010(33).
2014年4月自学考试的秘诀!点击免费查看>>
专业
层次
学制
主要课程
音乐教育
专科
两年
大学语文、基础乐理、视唱练耳、基础声乐、基础和声、合唱与指挥基础、基础钢琴、艺术概论、民族民间音乐、音乐欣赏、中学音乐教学法、计算机应用基础、计算机应用基础实践、基础钢琴实践、基础声乐实践、
本科
两年
英语(二)、中外音乐史、中外音乐欣赏、和声学、音乐作品分析、歌曲写作、音乐教育学、音乐美学、简明配器法、歌曲钢琴伴奏、声乐实践、歌曲钢琴伴奏、声乐实践、歌曲钢琴伴奏实践、视唱练耳实践、毕业论文
经济法
专科
两年
大学语文、法理学、宪法学、民法学、民事诉讼法学、公司法、经济法概论、刑法学、合同法、税法、国际经济法概论、劳动法、计算机基础、人力资源管理
本科
两年
英语(二)、行政处罚法、行政复议法学、国家赔偿法、经济法学原理、企业与公司法、行政法学、劳动法、金融法概论、房地产法、环境法学、税法原理、行政诉讼法、财务管理学(辅修)
市场营销专科两年政治经济学(财经类)、高等数学(一)、基础会计学、经济法概论(财经类)、大学语文(专)、国民经济统计概论、消费心理学、谈判与推销技巧、企业管理概论、公共关系学、广告学(一)、市场营销学、市场调查与预测、计算机应用基础(含实践)
本科两年英语(二)、高等数学(二)、市场营销策划、金融理论与实务、商品流通概论、消费经济学、国际商务谈判、国际贸易理论与实务、企业会计学、国际市场营销学、管理系统中计算机应用(含实践)
公共关系本科两年人际关系学、公共关系口才、现代谈判学、公共关系案例、国际公共关系、公关政策、企业文化、创新思维理论与方法、领导科学、人力资源管理(一)、现代资源管理(一)、广告运作策略
行政管理专科两年大学语文(专)、政治学概论、法学概论、现代管理学、行政管理学、市政学、人力资源管理(一)、公文写作与处理、管理心理学、公共关系学、社会研究方法、秘书工作 、计算机应用基础(含实践)
本科两年英语(二)、当代中国政治制度、西方政治制度、公共政策、领导科学、国家公务员制度、行政组织理论、行政法与行政诉讼法(一)、社会学概论、中国行政史、中国文化概论、普通逻辑、财务管理学、秘书学概论、企业管理概论
汉语言
文学
专科
两年
文学概论、中国现代文学作品选、中国当代文学作品选、中国古代文学作品选(一、二)、外国文学作品选、现代汉语、古代汉语、写作等
本科
两年
美学、中国现代文学史、中国古代文学史(一、二)、外国文学史、语言学概论、英语(二)、两门选修课、毕业论文
涉外秘书学
专科
两年
英语(一)、大学语文(专)、公共关系、外国秘书工作概况、涉外秘书实务、涉外法概要、
本科
两年
英语(二)、中外文学作品导读、国际贸易理论与实务、经济法概论、秘书语言研究、公关礼仪、交际语言学、国际商务谈判、中外秘书比较、口译与听力等
对外汉语
本科
两年
现代汉语、实用英语、中国古代文学、中国现当代文学、外国文学、外国文化概论、对外汉语教学概论、英语表达与沟通(实践环节)毕业论文等
英语翻译
专科
两年
英语写作基础、综合英语(一二)、英语阅读(一)、英语国家概况、英语笔译基础、初级英语笔译、初级英语口译、英语听力
本科
两年
中级笔译、高级笔译、中级口译、同声传译、英汉语言文化比较、第二外语(日 / 法)、高级英语、英美文学选读、毕业论文
日语
专科
两年
基础日语(一二)、日语语法、日本国概况、日语阅读(一二)、经贸日语、日语听力、日语口语
本科
两年
高级日语(一二)、日语句法篇章法、日本文学选读、日汉翻译、第二外语(英/法)、现代汉语、计算机应用基础、日语口译与听力、毕业论文
英语
专科
两年
综合英语(一二)、英语阅读(一二)、英语写作基础、英语国家概况、英语听力,口语等
本科
两年
英语写作、高级英语、英美文学选读、英语翻译、经贸知识英语、口译与听力、二外(日语)等
外贸英语
专科
两年
综合英语(一二)、英语阅读(一)、英语写作基础、英语国家概况、国际贸易理论与实务、英语听力、口语、外贸英语阅读等
本科
两年
英语写作、高级英语、英美文学选读、英语翻译、经贸知识英语、外贸口译与听力、二外(日语)等
公共事业
管理
专科
两年
计算机应用基础、公共事业管理概论、社会学概论、管理学原理、人力资源开发与管理、公共关系、社会调查与方法、行政管理学、文教事业管理、计划生育管理、秘书学概论、计算机应用基础(实践)等
本科
两年
英语(二)、公共管理学、公共政策、公共事业管理、公共经济学、非政府组织管理、行政法学、人力资源管理(一)、管理信息系统、毕业论文等
工商企业
管理
专科
两年
计算机应用基础、基础会计学、经济法概论、国民经济统计概论、企业管理概论、生产与作业管理、市场营销学、中国税制、企业会计学、人力资源管理、企业经济法(辅修)、民法学(辅修);
本科
两年
英语(二)、高等数学、管理系统中计算机应用、国际贸易管理与实务、管理学原理、财务管理、金融理论与实务、企业经营战略、组织行为学、质量原理、企业管理咨询、合同法(辅修)、行政法学(辅修)。
国际贸易
专科
两年
高等数学、法律基础、计算机应用基础、英语、国际贸易实务、国际金融、国际商法、中国对外贸易、WTO知识概论、市场营销学等
本科
两年
国际市场营销学、世界市场行情、国际商务谈判、企业会计学、国际运输与保险、西方经济学、外国经贸知识选读、涉外经济法、经贸知识英语等
金融管理
专科
两年
证券投资分析、保险学原理、银行会计学、商业银行业务与管理、货币银行学、财政学、经济法概论、基础会计学、管理学原理等
本科
两年
管理会计实务、国际财务管理、公司法律制度研究、英语(二)、电子商务概论、组织行为学、风险管理、高级财务管理、审计学、政府政策与经济学等
会计(电算化)
专科
两年
英语(一)、大学语文、高等数学(一)、基础会计学、国民经济统计概论、数据库及应用、财政与金融、会计电算化、成本会计、财务管理学、计算机应用基础、经济法概论(财经类)
本科
两年
高等数学(二)、、英语(二)、数据结构、审计学、管理学原理、通用财务软件、计算机网络基础、财务报表分析(一)、金融理论与实务、高级财务软件、操作系统。加考课程:会计电算化、财务管理学、成本会计、基础会计学、政治经济学(财经类)
人力资源
管理
专科
两年
管理学原理、组织行为学、人力资源管理学、人力资源经济学、企业劳动工资管理、劳动就业论、社会保障、劳动与社会保障法、公共关系学、应用文写作等
本科
两年
企业战略管理、人力资源战略与规划、人力资源培训、人事测评理论与方法、人力资源薪酬管理、绩效管理、人力资源开发管理理论与策略、管理信息系统等
文化事业
管理
专科
两年
英语(一)、写作、中国文化概论、文化管理学、文化行政学、文化政策与法规、文化经济学、文化策划与营销、艺术概论、社会学概论、民间文学、计算机
文化产业
本科
两年
英语(二)、中国文化导论、文化产业与管理、文化产业创意与策划、文化市场与营销、外国文化导论、媒介经营与管理、文化服务与贸易
经济信息
管理
专科
两年
高等数学、计算机网络基础、计算机应用技术、计算机软件基础、计算机组成原理、经济信息导论、计算机信息基础、信息经济学等
本科
两年
英语(二)、应用数学、中级财务会计、计算机网络技术、社会研究方法、网络经济与企业管理、数据库及应用、电子商务概论、高级语言程序设计、应用数理统计、经济预测方法。
游戏软件
开发技术
专科
两年
英语(一)、高等数学、计算机游戏概论、高级语言程序设计、游戏作品赏析、计算机网络技术、游戏软件开发基础、市场营销、动画设计基础等
本科
两年
英语(二)、游戏创意与设计概论、可视化程序设计、艺术设计基础、多媒体应用技术、DirectX、Java语言程序设计、游戏开发流程与引擎原理、游戏架构导论、软件工程、游戏心理学等
电子商务
专科
两年
电子商务英语、经济学(二)、计算机与网络技术基础、市场营销(三)、基础会计学、市场信息学、国际贸易实务(三)、电子商务概论、商务交流(二)、网页设计与制作、互联网软件应用与开发、电子商务案例分析、综合作业
本科
两年
英语(二)、数量方法(二)、电子商务法概论、电子商务与金融、电子商务网站设计原理、电子商务与现代物流、互联网数据库、网络营销与策划、电子商务安全导论、网络经济与企业管理、商法(二)
信息技术
教育
本科
两年
英语(二)、物理(工)、数据库原理、数据结构、计算机网络与通信、计算机系统结构、软件工程、数值分析、面向对象程序设计、计算机辅助教育、高级语言程序设计、数字逻辑、中学信息技术教学与实践研究
计算机
及应用
专科
两年
大学语文、高等数学、英语(一)、模拟电路与数字电路、计算机应用技术、汇编语言程序设计、数据结构导论、计算机组成原理、微型计算机及其接口技术、高级语言程序设计(一)、操作系统概论、数据库及其应用、计算机网络技术
本科
两年
英语(二)、高等数学、物理(工)、离散数学、操作系统、数据结构、面向对象程序设计、软件工程、数据库原理、计算机系统结构、计算机网络与通信
电子政务
专科
两年
行政管理学、公文写作与处理、公共事业管理、行政法学、经济管理概论、办公自动化原理及应用、政府信息资源管理、电子政务概论、管理信息系统、计算机应用技术
本科
两年