欢迎访问发表云网!为您提供杂志订阅、期刊投稿咨询服务!

程序教学法论文大全11篇

时间:2023-03-16 15:50:03

程序教学法论文

程序教学法论文篇(1)

程序题综合教学法教学目的明确、逻辑性强、重点突出、循序渐进、学生积极性高,能认真学习,因材施教,反复练习,教师能及时了解教学效果,又能结合电子计算机进行。

程序题综合教学法的课时计划在课的类型、教学目的,教具上与其他教学法相似,但在教具上要准备程序题图表(可制成挂图形式)及学生答卷等。在教学过程中与其他教学法大不相同。首先教师要根据教材内容,按次编写程序课题,注意重点难点,课本内容逻辑性等,列出问题。问题要具有吸引力,每一问题或图表作一分段主题挂在讲台上,也可将分段主题写在黑板上,比较节约,大的主题下也可再分小的主题,使学生思考和解答,然后叫学生自行按次阅读教材,使学生自愿或由教师指名答复,必要时进行讨论,再由教师正确总结解答,这样一个题目一个题目的提出,解答讨论总结将教材内容讲完。为了增强理解,反复练习,再由教师提出重点难点讨论讲解,最后可给题目答卷使学主进行书面解答,可使学生互相评分,这种教学法可不留给学生家庭书面作业。

现将九年制义务教育课本“生物”(华师大、上海师大编写,上海科技出版社1994),“细胞”一节程序题综合教学的课时计划列下供参考。

1 课的类型:

新课

2 教学目的:

使学生了解“细胞”是构成生物的基本单位、动植物细胞的结构和异同以及细胞的分裂繁殖和生长。

3 教具及器材:

程序题图表(可制成挂图形式)。挂图:虎克像及其自制的显微镜及软木细胞图,现代显微镜,动、植物细胞模式图,细胞的分裂和生长图表,学生书面答卷。器材:西瓜、番茄成熟果实,白菜或青菜(小白菜)叶柄。模型:细胞结构等模型。

4 教学过程

4.1 教师在组织教学后,可提问1~2个“绪论”中问题,如什么是生物学,怎样学好生物学等,也可不复习前课直接讲新课。

4.2 教师按次出示程序题有关图表,并宣读程序题。

程序题(分段主题)1:细胞是谁人发现的?怎样发现的?怎样才能看到细胞?教师然后使学生阅读“细胞”一节后,讨论、解答、总结。

程序题2:动物和植物细胞结构有哪些?有何异同?教师使学生阅读(1)细胞的基本结构一段课文,然后结合细胞结 构图表模型使学生解答,讨论综合题,这一段是本课的重点和难点,应加强学习。

程序题3:切割西瓜、番茄等果实时,流出甜味或酸味的汁液或切割白菜或青菜的叶柄流出汁液是从那里流出来的?使学生思考讨论,解答总结。

程序教学法论文篇(2)

(一)面向对象程序设计

OOP是一种计算机编程架构,它具备软件工程的灵活性、重用性和扩展性。OOP不仅具有丰富的理论知识,同时具有很强的实践性,坚持在真实的项目中锻炼编程能力,才能理解其精髓,进而活学活用。

(二)项目教学法

项目教学法以学生为教学中心,是学生在教师的指导下处理项目,提高自身能力的教学方法。其优势在实践性较强的OOP课程中体现得淋漓尽致。具体实施时,教师化身为顾问,主要的作用是引导学生把课堂所学用在实践过程中,理论联系实际,进而提高动手能力;学生是项目的具体操作者,知识水平和发现问题、解决问题能力均能得到提高。

二、改革的必要性

OOP是一门实践性很强的课程,如果不进行实践教学,学生不能全面掌握其核心思想。原因主要有以下两方面:

(一)难理解

由于面向对象概念较抽象,是基于现实世界的特点,对系统的复杂性进行概括、抽象和分类,对象是OOP的核心,是将代码和数据封装起来的具有某些特性的具体事物的抽象。从学生角度来看,以知识点为中心的讲解教学方式理论性太强,不好理解,甚至有部分学生自始至终也无法掌握OOP的重要概念,不能满足课程考核要求。

(二)理论教学多

教师上课采用多媒体教学,这种方式基本上是教师在课堂上唱独角戏,把理论和方法灌输给学生,学生被动地学习,只是把教师讲的内容在大脑中形成记忆,没有自己独立思考的过程,不利于培养学生的创造能力。

三、项目教学法的改革要点

项目教学法设计了完整的软件项目教学背景,克服了传统教学中注重理论知识忽视应用实践的缺点。学生在慢慢了解、逐渐熟悉软件项目开发的过程中,能够理解应用,学习和掌握各种知识并训练相关技能。

(一)项目题目的设定

教师在进行项目教学引导时需要策略,创设学习的资源,协调学习合作环境。教学项目题目的选取是其中的关键问题,选题最好能与软件公司进行交流或合作,应具备针对性和实用性,能体现出学生综合能力的运用,并且可以进行客观评价。首先,项目题目应尽可能覆盖教学大纲的多项知识点;其次,应该构建具有完整项目的项目案例库,项目题目应有不同的难易度和适当的工程工作量,适应所教班级的不同学生的实际水平;最后,项目题目应尽量贴近大学生的生活,并可以用一些标准,如软件是否易用、是否有良好的用户交互性等进行公平、准确的评价。

(二)互动增强

传统的教学环节中,老师和同学的交流仅限于课间十分钟或者课下较短时间的交流,交流时间少,沟通的问题也只是教学内容中个别的知识点。而在项目教学法中,沟通渠道是多向的,老师与学生之间沟通的宽度和广度都加大了。另外,即使在同一课堂上听讲,不同的学生在学习动机、学习心理、学习兴趣和学习能力等方面仍然会有一些差别。

(三)角色换位

程序教学法论文篇(3)

(1)介绍准备学习的概念;

(2)唤起学生对类比对象的记忆;

(3)确认类比对象的相关特征;

(4)对应目标对象与类比对象两者的相似性;

(5)指出类比的限制;

(6)归纳目标对象的重点。所谓目标对象指的是教师准备介绍的概念或问题,如类、对象、方法等,所谓类比对象指的是教师为了帮助学生了解不熟悉的概念而使用的比喻。

2类比教学法的应用实例

下面以作者在《C#程序设计基础》课程中讲授数据访问对象为例,介绍类比教学法在程序设计课程的具体应用。首先以表格的形式整理出类比对象和目标对象之间的相似之处,以便在教学过程中逐条对照便于理解。接下来,把供水到用户家里的过程与使用DataReader读取数据的步骤对应起来,便于学生理解(见表2)。再以表格的形式整理出应用类比教学法讲授相关知识点的流程。通过这样的类比教学,使学生对常见数据访问对象的作用、技术原理和编程步骤有了一个形象、清晰的认识,取得了良好的课堂教学效果。

程序教学法论文篇(4)

1 计算机专业学生程序设计能力培养现状

程序设计能力是计算机专业学生必备的一项基本技能。程序设计能力培养不仅包含技能培养,还包含学生分析问题、解决问题以及创新能力的培养。为此,各高校从大一开始就开设了高级语言程序设计课程以及后续一系列课程,以提高学生的程序设计能力。然而,即使各高校设置了丰富的程序设计能力培养课程,学生的程序设计水平也没有得到大幅度提高。

当前软件企业招不到合适的人才,计算机专业学生找不到工作,这种局面的形成归因于学生的程序设计能力并未达到软件企业预期的要求。调查表明,企业新招聘员工中只有15%直接来自高校毕业生,而85%来自社会招聘,因为社会招聘人员动手能力强,入职后能很快适应工作岗位。程序设计能力层次见表1,从表1可以看出,要胜任企业软件开发工作,至少需要100000行代码量;对于本科毕业生,至少需要有10000行代码量,而目前计算机专业大多数学生本科4年的代码量均在1000行,有的甚至更低。

1)程序设计类课程依然重教学,轻实践。理论教学依然是程序设计类课程的重点,理论学时多,实践学时少。教师花费大量时间进行语法、数据结构概念、算法理论讲解,因此也使得有针对性的实践太少,基于相关知识和理论的案例教学不足,学生很难将所学知识点和理论用于解决实际问题。

2)实践环节枯燥,学生无法提高学习积极性。

在传统程序设计实践教学中,教师布置3~6道作业题,学生当堂完成,然后将代码以及运行结果截图打包上传到服务器,教师一一评阅。教师给出的习题往往直接针对课堂教学的知识点,无任何实际背景或故事情节,实验枯燥乏味,学生学习积极性无法提高。

3)学生多,教师少,教师无法逐个解答学生的问题。

在大学不断扩招的情形下,师生比进一步扩大。实践教学过程中,教师无法一一发现和解答每个学生的问题。学生将作业代码和运行结果截图通过FTP上传至服务器,教师查看运行结果,由于学生多,教师无法逐个查看和运行学生代码,疲于应付,因而导致实践效果差。

4)实践能力评价方法单一。

目前的课程考核多采用笔试,学生的实践能力只能通过平时作业和实验进行主观性评价,难以激发学生自主训练实践能力的激情。在这样的教学模式下,久而久之学生就失去了编程兴趣,同时也降低了后续程序设计类课程的学习积极性,以致形成恶性循环,学生代码阅读量、代码编写量均得不到保证,程序设计能力自然无法提高。

为了提专业提供论文写作、写作论文的服务,欢迎光临dylw.net高学生的程序设计能力,文献[1]提出一种贯穿在系列课程中的程序设计能力培养方法,强调在一系列课程中持续不断地进行系统化训练,采用面向专业应用的分类教学,贯彻落实案例驱动、强化实训等教学方法。文献[2]初步将ACM模式应用到程序设计类课程实践教学中,使学生的编程能力和解题思维能力得到有效训练,教学效果显著提高。文献[3]也提出采用ACM竞赛形式的程序设计能力层次化培养模式。这些方法都是提高学生程序设计能力的有益尝试。

2 立体化程序设计能力培养模式

针对目前程序设计能力培养方面依然存在的一些突出问题,我们借鉴国内外一流大学的经验,与学校、学院教学部门配合,探索并建立立体化程序设计能力培养方法。立体化程序设计能力培养方法如图1所示。

1)培养方法和过程。

在立体化程序设计能力培养方法中,教学活动仍然分为理论知识讲授与编程实践,但理论课不再以单纯介绍语法知识为主,而是以具体的程序案例分析为主,让学生从案例中掌握语法。在实践教学环节中,教师设计若干有趣的问题,学生在解决问题过程中学会相关的语法知识与编程技巧。学生编写的程序代码全部通过安徽大学程序自动评判系统进行评判,学生只需在规定时间内完成,不再局限在实践课堂内完成,令学生有了足够多的思考和动手编程时间。对于学生在编程过程中出现的各种问题,教师和ACM/ICPC队员及时进行在线细致辅导。在每次作业结束后,系统公布所有学生的解题代码,以供所有学生在线查看和评价。获得优秀评价的代码将在系统上公布,以便学生有机会进一步学习优秀代码,增加代码阅读量。

2)立体化程序设计能力培养特点。

(1)以高级语言程序设计课程为依托。高级语言程序设计课程是学生接触的第一门程序设计类课程,其教学与实践对培养学生的编程兴趣和能力起着至关重要的作用,可以帮助学生树立自信心并步入程序设计的殿堂。

(2)课堂教学以案例为中心。程序设计=算法+数据结构。在高级语言程序设计课程的教学过程中,我们摒弃单纯讲授语法的课堂教学方法,改之以程序案例为中心。在课程早期,案例以语法知识为主,逐步增加基本数据结构和算法。整个教学过程以案例分析为中心进行语法教学,让学生在潜移默化中学习到基本的数据结构和算法。

(3)实践教学以问题求解为中心。在实践环节,教师通过设置有趣的故事和实际的问题,帮助学生在求解问题过程中掌握课堂上所学的语法知识、基本数据结构和算法。

(4)实践环节从课内延伸至课外。实践环节要求学生完成指定的编程题目。与传统实践环节不同,通过在线程序自动评判平台,学生所有的编程作业只需在教师规定的时间段内提交,学生既可以在实践课上完成,又可以利用课外时间完成课堂内没有完成的作业。将实践课延伸到课外的优点表现在:①学生有足够的时间思考分析问题并最终通过编程解决问题;②实践题目数量适当增加,学生的代码量随之增加 ,充分的课外实专业提供论文写作、写作论文的服务,欢迎光临dylw.net践可以进一步巩固学生的理论知识基础。

(5)经验丰富的ACM/ICPC队员参与程序设计实践环节辅导。ACM/ICPC队员经过长期的编程实践,积累了丰富的编程经验,代码能力强,因此我们利用ACM/ICPC集训队的优势资源,实行“传帮带”机制,对于每个学生编程过程中出现的问题及时给予解答,有效提高学生的编程积极性。集训队学生优秀的编程水平对于低年级学生也是一种激励,可以进一步激发其编程热情,增加其向更高编程水平迈进的动力。

(6)学生作业采用自动化评判模式。学生提交的作业通过服务器自动评判给出程序的运行结果。自动评判模式对于编译错误,会直接给出编译出错位置和出错类型,方便学生自查;对于运行错误,包括结果错误和运行超时,则需要学生重新审查程序代码。服务器自动评判能够有效减轻教师批改作业压力,还可以大大提高实践教学效果。此外,服务器上保留了每个学生的做题细节,包括以往的代码、做题的数量、错误类型等信息,可以进一步增强学生做题的成就感和积极性。值得一提的是该自动评判平台不仅支持高级语言程序设计,还支持C++、Java、VB和Pascal语言,因而吸引了省内一些初中、高中学生进入该平台进行程序设计能力实践。

(7)优秀代码展示有助于增加学生代码阅读量。学生代码量包括代码编写量和代码阅读量。代码阅读量是提高编程能力的一种重要途径,然而在实际教学过程中常常被忽视,通过教师评阅、学生互评等方式,可以筛选出优秀代码并加以展示。优秀代码主要指具有巧妙的算法、运行时间短、内存占用空间少、代码格式规整、符合标准编程风格的程序代码。展示优秀代码可以让学生有机会看到彼此对于同一道题目的多种解决方案,有效促进学生之间的交流,积极提高学生的代码阅读量。这种相互的交流还可以进一步激发学生的创新灵感,在提高学生编程能力的同时也提高创新能力。

与传统专业提供论文写作、写作论文的服务,欢迎光临dylw.net程序设计能力培养主要依靠“教师一学生”这种二维扁平的实践教学模式不同,立体化程序设计能力培养方法以案例教学为中心进行教学,以问题驱动为中心进行编程实践,采用机器自动评判和学生互评相结合的方式进行学生编程实践效果评价,在教师—ACM队员—学生之间建立一个跨越时间和空间的三维立体互动教学网络。这种教学方法将课内实践延伸至课外,将实验室实践延伸到实验室外,对学生的程序设计能力进行主客观相结合的综合评价与即时反馈。

3 实施成效

通过一系列的研究与设计,我们构建了立体化的程序设计能力培养模式,在安徽大学自主研发的自动评判系统基础上增加了高级语言程序设计实践模块。自2008年以来,学生通过该自动评判平台进行程序设计实践呈逐年增多趋势,多名学生参加了ACM/ICPC程序设计竞赛以及省级程序设计竞赛,获得各类奖励10余项,其中亚洲区邀请赛金奖2项、省级竞赛一等奖4项。实施该培养方法后,学生进行自主程序设计训练的积极性明显提高,目前在校生中程序代码量已经达到10000行的有200人左右,部分毕业学生直接进入腾讯、百度等企业工作,用人单位也对毕业生的编程能力普遍表示满意。安徽大学计算机专业学生2008—2012年提交代码量如图2所示。

该培养方法不仅提高了学生的程序设计能力,而且培养了学生的创新精神和可持续发展能力,还吸引了许多非计算机专业学生学习程序设计技术。近年来,陆续有电子学院、自动化学院、数学学院、化学化工学院、资源与环境工程学院和物理学院的学生参与到程序设计实践中,并且取得了不错的学习效果。例如,安徽专业提供论文写作、写作论文的服务,欢迎光临dylw.net大学物理学院一名学生经过该平台实践后,积极参与ACM/ICPC程序设计竞赛,获得2010年ACM/ICPC亚洲区竞赛铜奖并于2012年成功考取复旦大学计算机专业研究生。

4 结语

强调师生互动、实践反馈、学生互动足立体化程序设计能力培养方法的关键,而利用案例教学与趣味实践是重要途径。实践证明,立体化程序设计能力培养方法在提高学生编程水平和算法能力方面具有较大优势,取得了显著成效。今后我们将进一步注重教师与学生互动,探索更多的师生之间、学生之间互动手段,不断提高学生编程素养和创新水平。

程序教学法论文篇(5)

Improving the Experiment Equality on the C Programming

by Group Teaching in the Network Environment

ZHU Juan

(Information Science and Technology, Jiujiang UniversityJiujiang, Jiangxi 332005)

AbstractGroup teaching method is an important method that used widely in the practical classes. And it is important to reform the teaching model, and to improve the teaching quality. In this paper, the method of group teaching is introduced to the experiment of C programing class. By developing the group strategy, the students complete the experiment tasks by team working. The result proves that the method of group teaching is valuable in the C programing class.

Key wordsgroup teaching; teaching mode; teaching feedback

0 引言

C程序设计课程受众非常广泛,普通地方高等院校几乎都有开设,对计算机专业的学生而言,这是程序设计的入门课,也是专业核心课;对非计算机专业学生而言,这是通过计算机等级考试的核心科目,是必选通识课。

随着计算机理论教学的逐步深入,C程序设计课程的教学模式也几经改革,取得了很大的进步,但是,还存在着一些问题:C程序的教学往往过于强调语法的讲授,对如何分析和解决问题讲得不够透彻,没有把编程思路放在主体地位上;过于注重课堂讲授,对学生编程能力和程序调试能力的训练不够,忽视学生实际动手能力的培养。C程序作为一门程序设计类课程,实践能力是其重要的环节,虽然大多数高校都安排了实验上机环节,但是将近一百人的课堂,只有一个教师进行指导,这样的实际情况下,教师对学生实际操作的指导是远远不够的。因此,往往在一个学期结束之后,仍然有不少同学甚至不能进行简单的程序调试。

针对以上现状,本文试图构建分组实验的教学模式,提高C程序课程实验教学的质量,提高学生编程能力。

1 分组实验教学的概念

分组实验教学是根据实验课程及现有学生特点进行分组,使之以组为单位来完成实验任务,以提高实验教学效果,促进学生动手能力的提高。

2 分组教学的准备

2.1 分组实验设施的配置

C程序设计课程的实验教学一般都分配有专业的实验室,人均一台电脑,安装有专业的实验软件,一般为Turbo C2.0或Visual C++6.0,学生以自己的电脑为单位独立完成实验任务。本文拟提出的分组实验教学模式,在原有的实验设施的配置之上,还需要配置有网络连接,通过网络实现分组讨论。

2.2 小组的划分

在以往的类似分组实验教学活动中,对学生的分组一般是按学号顺序进行分组,这样的分组会导致学生学习能力在各小组分配不均匀,可能会出现有的小组实验能力特别强而另外小组实验能力非常弱的情形。因此,本文拟提出以学生上一学期的期末成绩作为分组的依据,每五人一组,使得成绩好和成绩较差的学生在各组基本平均分配。

2.3 小组组长的指定

每个小组指定一名组长,组长在小组里很大程度上起到教师的作用,不仅自己完成实验任务,还要负责组织小组成员的讨论安排以及,帮组解决小组成员程序调试中出现的问题。所以,一般指定小组内成绩最好的同学为小组组长。

3 分组教学的实施

3.1 实验任务的布置

利用QQ群功能,以班级为单位构建一个班级群,然后各小组成员构建自己的小组群,便于实验任务的布置以及群之间的讨论。教师在班级群将实验任务出去,实验任务包括指定实验名称、实验内容、调试计划等,各小组的实验任务可以相同也可以不同。

3.2 分组实验教学的实施

算法讨论。由于C程序设计是一门程序设计类课程,实验内容主要以编写程序代码为主,而编程的核心是算法的分析与设计。以往很多同学无论是计算机专业还是其他非计算机专业的学生拿到程序题目就开始编写代码,没有算法设计这一环节,因此对于程序调试过程中的逻辑问题无(下转第40页)(上接第38页)法解决。所以,算法设计纳入本实验环节,小组长组织本小组成员在QQ小组群里首先对算法的思路进行讨论,确定行之有效的算法,甚至为了强化大家对于算法概念的掌握,可以要求一个题目用多个算法来实现。

代码编写。通过算法讨论,并确定算法的正确性之后,各小组成员分别独立完成自己程序代码的编写。

程序调试。程序调试时C程序设计实验课程的重要环节。再有经验的程序设计者也不可能将所有程序一次性编写成功,调试――修改――调试,这是程序设计必经的环节。而限制学生C程序实验课程教学效果提高的重要因素就是学生程序调试能力太差。学生往往缺乏程序调试的意识,成绩好的同学遇到问题问老师,成绩不好的同学遇到问题干脆放弃,长此以往,很多同学上机的兴趣就遗失了。本文拟通过分组的形式,遇到问题,小组讨论,众人拾柴火焰高,在小组长领导之下,对于简单问题,成员之间共同解决。对于实在解决不了的,由小组长发给教师,在教师的指导下解决。这样的解决方式,一方面锻炼了学生调试程序的能力,另一方面自己的问题自己内部解决也激发了学生的成就感启发了其继续学习下去的兴趣。

实验报告的编写。以往的实验报告按人头上交,每个学生每次实验课均提交一次实验报告,大部分同学的实验报告均照抄程序代码,敷衍了事。实验报告是对一次实验过程的总结,包括算法的设计,程序的调试等,认真的总结也是一次学习的过程。在本论文中,拟每个小组只需以小组为单位提交一份实验报告。这种形式,一方面避免学生将大部分精力投入抄写实验报告中,另一方面,通过小组长督促本小组成员对本次实验认真总结,除了算法的设计之外,更重要的是调试程序的经验。

4 分组实验教学的反馈与调整

笔者在所授课班级通过实施分组实验教学,班级学生实验动手能力整体比较高,国家计算机等级考试过级率也高出同类班级。

同时,对班级不同小组成绩进行横向比较,发现实验内容难易程度、小组长的沟通和组织能力以及小组成员的学习积极性是影响教学效果的重要因素。因此,需要在教学实践中不断加以关注和调整,发挥有利因素,抑制不利因素,使得分组实验教学模式在C程序设计课程教学中发挥更加重要的作用。

5 小结

将分组式教学模式引入C程序设计课程教学,就课程改革而言具有重要意义,实践证明通过分组式教学,学生的C程序设计理论知识得到了很好的巩固,编程动手能力得到了很大的提高,同时对学生的学习积极性也起到了很好的激励作用。

程序教学法论文篇(6)

1引言

编译原理课程是高校计算机类专业的重要基础和骨干课程。编译原理对计算机专业的学生的重要性与高等数学对理科学生的重要性几乎可以相提并论。同时,由于这门课程涉及其他多门课程的知识,使得它成为大学阶段中最难学的课程之一。

从表面上看,编译程序是将高级语言源程序翻译成低级语言程序,但编译程序构造的基本原理和技术也广泛应用于一般软件的设计和实现,其中的设计思想、算法、思维方式和技术都可能会对学生今后的职业发展产生比较大的影响。

当今,程序设计已经基本上从传统的过程式转向对象式,并且正在从对象式转向组件型。这其实是程序设计范型的变迁,是在计算机技术背景下认识世界的观点的变化:过程式将完成事务看成是一系列的步骤,而对象式却将世界看成是由一系列对象组成的,这些对象之间交互合作完成特定的事务。从过程式到对象式,有着质的变化,而非一般的修改和完善,由此带来了语言(算法描述工具)的变化。编程语言影响思维,面向对象的思维方法又促进了编程语言的发展。

目前,程序设计的一些后继课程,如数据结构等都进行了同步跟进,出现了诸如用c++或java描述的数据结构教材。但编译原理课程却没有及时跟进,上述改变基本上没有反映到编译原理课程中。这门课程近20年来基本上没有大的变化,教学内容仍然是基于过程式语言展开的,编译算法和模型描述是用pascal语言或者c语言。虽然个别教材加入了少量关于对象式语言编译技术的内容,那也是稍加点缀而已,作用不大。这就造成了一种奇怪的现象:对象式语言已经成了高校计算机教学的主流语言,社会上大量使用的也是对象式语言,而我们的编译原理教学仍然沿袭旧的一套。这种“状态”严重地脱离了计算机技术的发展和社会的实际需要,因此需要进行“调态”,其根本做法是“转型”,即将本课程的讨论对象从过程式语言转到对象式语言。

国外近年关于编译原理方面的新教材已经有了重要改变,不再连篇累牍地讨论那些已经过时的内容,增加了许多新的内容。其中一个重大改变是出现了用对象式语言描述编译算法和教学模型的编译原理教材,如:用java语言描述的编译原理教材,且其教学模型为minijava。

这种改变也涉及到课程上机实践。众所周知,编译原理课程的学术性和实践性都很强:学术性是这门课程的生命所在,实践性是这门课程的活力所在。因而本课程的上机实践也要作同步调整。

2课程内容围绕对象式语言展开

研究程序设计语言的语法描述需要有文法理论的支持,老教材中文法、词法分析和语法分析部分内容基本上不需要作什么变动。词法分析主要依赖有穷状态自动机理论,语法分析主要讲述ll方法和lr方法,其他方法略做介绍即可,无需展开讨论。ll方法和lr方法含盖了许多分析技术,理论性和应用性都很强,完全可以代表主流技术。

重要的就是研究对象和教学模型的改变。首先,研究对象将从过程式程序设计语言转到对象式程序设计语言(当然还可以兼顾过程式),例如java、c++等,围绕实现这类语言的编译实现技术展开讨论。对象式程序设计语言的要素是封装、继承、多态性,在编译实现时都必须仔细考虑。其次,涉及到对象式程序设计语言编译程序教学的模型选择问题。目前传统的教材选择的教学模型有pl/0、tinic等。实践证明,围绕某个模型展开编译设计技术的讨论,效果是比较好的。课程研究对象和教学模型的改变涉及到调整的章节主要有语法分析、语义分析、代码生成、符号表管理、存贮分配等方面。

一旦我们讨论的模型发生变化,这些章节的内容就要作很大调整。如对象式语言的作用域规则、语言动态特性、模块化封装(类)、类的继承、多态性的实现等,都需要具体的技术来实现,这些都要反映在教材和教学中。

就课程中关于代码生成内容来看,目前java编译程序生成java虚拟机(jvm)代码,c#生成msil虚拟机代码。这两个虚拟机作为教学模型来说可能比较复杂了一些,在教学中可以选定一个简单的子集;或者在pl/0虚拟机上适当增加一些指令代码,以便于代码生成、存贮分配等部分的讲解。

实践证明,作为教学模型,在教材上提供一个小型语言的编译程序供学生分析和研究,非常有利于加深对基本原理的理解和掌握。这个小型编译程序可以比较小但应该能够说明一些基本问题,例如传统的编译原理课程中选择pl/0编译程序作为教学模型,就收到了比较好的教学效果。在对象式程序设计语言编译原理课程中选择object-pl/0或者minijava作为教学模型是比较恰当的。前者是在传统的pl/0语言上增加类,补充封装、继承、多态性之语言成分得到的;后者是对java语言进行适当简化得到的,

编译原理课程可以围绕此模型展开讨论。国外已经有这类教材出现,并且不少大学已经开始使用。

3用对象式语言描述编译算法和教学模型

本课程中各类编译算法都应该伴随着教学模型的变化,改用对象式语言来描述,如用java语言描述或者用c++语言描述。其中一个重大的变化是教学模型如minijava或object-pl/0要用对象式语言实现,也就是提出了教学模型的面向对象构造问题,这就比较好地将讨论对象和描述讨论对象的语言统一起来了。国外有的教材就选择了用java描述minijava编译程序。

编译程序是一个重要的中大型软件,传统的编译程序大都是用pascal、c等语言描述的(参见图2)。像编译程序这样的中大型程序如何用类这个工具来进行分解,其实是对学生的对象式程序设计能力的一个重要检验。学习用对象式语言来描述编译程序,学生可能会受到一次严格的对象式语言程序设计训练,编译程序如何用类这个工具进行分解,这些类(对象)如何合作完成编译任务,都需要较好的对象式程序设计基础。图3是一个程序设计语言文法的面向对象表示。

传统的编译程序构造主要存在如下一些问题:

(1)传统编译程序试图通过将编译程序根据功能模块分解,而使整个编译程序的复杂性降低。这种方法虽然在一定程度上简化了编译过程。但为了处理大型、复杂且多变的编译程序,仅仅将它按照功能分解成词法分析、语法分析、语义处理和代码生成几个阶段是远远不够的。

(2)传统的编译程序构造中,编译的每个阶段依然是大型、复杂的,且每个阶段内部依然存在复杂的联系,这对编译程序的可维护性没有实际上的改变,反而造成维护困难。

(3)虽然传统的编译程序构造有着丰富的理论基础,也有一些工具诸如lex、yacc等,但对一个具体的编译程序的构造仍然要从最基本的描述开始。传统的编译程序构造的功能分解方法缺乏支持复用的良好机制。

总之,过程式程序设计范式存在的问题在编译程序设计中广泛存在。而用对象式程序设计语言来描述编译程序,则对象式程序设计范式带来的好处基本上都能够得到。具体主要表现在:

(1)编译程序效率高。由于面向对象的编译程序构造采用的是语法树构造法,可以得到上下文相关信息,并根据上下文进行语法树的优化,所以生成的代码效率高。

(2)复用方便。由于语法类和具体的语法结构一一对应,所以在复用语法结构时,可以直接得到能被复用的语法类,不需要经过查找过程。

(3)修改方便。由于面向对象方法中的封装和多态等技术的实现,语义处理方法中所用到的数据都是局部数据,因此要做语义修改时,只要继承相应的语法类,并且重载相应的语义处理方法即可,需修改的内容较之传统方法要少。

(4)有利于构造编译程序类库,使得编译程序的构造能够大量复用已有的类,这是更高层次上的复用。

4课程实验的设计

计算机学科是一门技术学科,它虽然有一定的科学的成分,但工程技术的成分更多一些,因此需要加强动手能力的培养。编译原理课程除了注重它的原理性,还必须注重其实践性。学习这门课程时,学生对编译的理解往往只停留在书本的概念上,而不知道怎样把编译理论应用到实际的编译程序设计的实践中。另外,有些学校只将教学内容锁定在文法、词法分析(有穷状态自动机)、语法分析(ll、lr文法)上,以应付学生考研的需要。这些做法使得学生很难掌握这门课程的精髓。

图2传统的编译程序功能分解

图3程序设计语言文法的面向对象表示

编译系统可能是所有软件系统中最复杂的系统之一,通过本课程实践环节的教学,还可以帮助学生掌握一些大、中型软件设计的技术和技巧,提高学生面向对象软件开发的综合能力。

传统的编译原理课程往往要求学生自己实现一个词法分析程序;实现一个基于递归子程序递归下降分析程序或基于预测分析表的语法分析程序;为某虚拟机(例如pl/0虚拟机)生成代码;对教学模型(例如pl/0)进行扩充,写出完整的编译程序等。且在此过程中学生可以借助词法分析自动生成程序lex和语法分析自动生成程序yacc进行有关实验。我们要求学生通过对教学模型的分析,能够在机器上动手实现一个小的编译系统,以加深对编译整个过程的一致性、连贯性、整体性的理解。

一旦我们的讨论对象改变为对象式语言,则其编译程序语法和词法分析的自动生成不能再采用lex、yacc这类工具了,需要改用javacc(javacompilercompiler)或sablecc等,它们都能生成java语言代码;或者使用jikespg(jikespasergernerator),它生成c++代码。

我们初步制定了本课程的实践环节,它主要分四个层次:

(1)借助javacc或sablecc等工具让学生自动生成小语言的词法分析和语法分析程序。这个实验的目的是教会学生关于词法分析和语法分析的自动生成,同时弄清这些工具生成出来的代码的程序结构,特别是面向对象的类结构。

(2)为上面生成的语法树添加语义动作,完成生成代码的工作。这个实验的目的是让学生理解如何在抽象语法树上添加语义动作,理解为虚拟机生成代码的知识。

(3)扩展教学模型,如minijava,为其增加一些语言成分,如有关语句等,然后为其构造完整的编译程序。这一实验让学生把握编译的总体,弄清各部分之间的关系。

(4)逐步构造面向对象的编译程序类库,使得“编写”编译程序逐步走向“组装”编译程序。

程序教学法论文篇(7)

诉讼法学课程在我国法学本科教育中占有比较重要的地位。教育部的“全国高等学校法学专业核心课程”中,刑事诉讼法、民事诉讼法都是独立的一门课,行政诉讼法和行政法合成一门学科。对于诉讼法学的教学内容,哪些应当固守、哪些应该拓展,笔者谈一点个人己见。

一、诉讼法学教学内容的组成与固守

纵观改革开放以来,我国诉讼法学统编教材的体例和内容,就会发现诉讼法学的教学内容安排有两个基本的特点:第一,体例和知识点与法典几乎是同质同构;第二,理论内容主要是对法典条文的注释。例如,陈光中先生主编的《刑事诉讼法》教材,其第一编“总论”主要对应《刑事诉讼法》法典第一编“总则”;教材第二编“分论”主要对应法典第二编“立案、侦查和提起公诉”、第三编“审判”、第四编“执行”。[1]再如,宋朝武教授主编的《民事诉讼法学》,教材“理论编”包含了《民事诉讼法》法典第一编“总则”的第一章“任务、适用范围和基本原则”;教材“制度编”主要对应法典第一编的第二章至第十一章;教材“通常审理程序编”主要对应法典第二编“审判程序”的第十二章至十四章、第十六章;教材“特殊程序编”主要对应法典第二编的第十五章、第十七章和第十八章;教材“民事执行程序编”主要对应法典第三编“执行程序”;教材“涉外民事诉讼程序编”主要对应法典第四编“涉外民事诉讼程序的特别规定”。[2]这样安排诉讼法学的教学内容是科学合理的,它的好处在于便于学生迅速地掌握国家法律规定,在较短的时间内理解现行法律法规。

以法典为基础、着力注释法典内涵其实是诉讼法学教学的传统风格,在大陆法系各国以及旧中国都存在着这种现象。例如,民国时期陈瑾昆著述的《刑事诉讼法通义》就与当时的“刑事诉讼法”法典有紧密的对应关系。[3]再如日本学者松尾浩也著述的《日本刑事诉讼法》与日本刑事诉讼法典也存在着密切的对应关系。[4]在西方,中世纪后兴起的法学,首先一个流派就是注释法学派。通过对罗马法的注释,传播法学知识、灌输法律理念,对西方法制的发展做出了巨大的历史贡献。今天我们进行包括诉讼法学在内的法学教育,尤其是本科教育,应当坚持这个传统,提高人才培养的有效性。

当然,言讲诉讼法学的教学内容与法典同质同构、以注释法典条文为主,绝不意味着我们的教科书和课堂教学就是简单的法条释义。理论的铺垫、理性的解剖、理智的批评、理想的建议,在诉讼法学教学中是随时都存在的。比较而言,本科教育着重解决“是什么”的问题;研究生教育则以“为什么”或“应该怎么样”为主。笔者认为,可以把我国现行以法典为基础、结合理论论述的诉讼法学教学内容分解为四大组成部分,它们分别是:

1.基础理论

该部分主要讲解这门学科的基本概念、历史沿革、若干诉讼原理和诉讼理念等。[5]台湾学者的教科书也有这部分内容,尽管有人阐述得多,有人介绍得少。[6]???

2.基本原则

这部分基本都是把相应法典中的基本原则加以详细介绍。稍微复杂一点的会增加外国法律中的基本原则和学理上主张但立法尚未采纳的一些基本原则。从法的要素角度看,法律原则是与法律概念、法律规则并列的组成部分。从法的适用角度分析,法律原则有助于准确理解法律、正确运用法律,以及可以弥补具体规则之漏洞。因此,这部分的学习其实非常重要,但常被学生所忽视。

3.诉讼制度

诉讼法学对诉讼制度的介绍可以分为两个部分:一是三大诉讼法共同的、内容基本一致的诉讼制度,往往称之为“基本制度”,例如回避、合议、两审终审、公开审判、陪审等;另一类是某诉讼法独有的,或者其制度安排有特色的诉讼制度,例如刑事诉讼中的辩护制度、强制措施制度,民事诉讼中的和解制度等。诉讼制度作为比较集中的规则安排,对于确保诉讼程序的顺利进行至关重要,是学习的一个重点内容。

4.诉讼程序

诉讼程序是诉讼法学教学内容的重中之重,是最为复杂的一个版块。以民事诉讼程序为例,首先,它可以分为国内诉讼程序和涉外诉讼程序;其次,国内诉讼程序可以分为审判程序和执行程序;第三,审判程序可以分为通常审理程序和特殊审理程序;第四,通常程序又包括一审程序、二审程序和审判监督程序,特殊程序又包括特别程序、督促程序、公示催告程序、海事诉讼程序等;第五,一审程序可以分为一审普通程序和一审简易程序。如此众多的诉讼程序构成一个严谨的体系,内容复杂,学习难度也大,但是也最重要。

笔者认为,以上这些教学内容都是诉讼法学应该固守的。但是,除此之外,诉讼法学的教学内容还需要拓展。

二、诉讼法学教学内容的拓展与理由

笔者一直主张且在自身的教学实践中施行,诉讼法学应当拓展法律适用技能的讲授。

1.在诉讼法学中增加法律适用的教学内容的理由

(1)这是司法裁判的本质要求。陈光中先生指出:“司法”从中外的词义来说,具有以下三项相关的内涵:其一,实施法律;其二,解决狱讼;其三,体现公正。而作为司法中心的审判,则是指法院或者法庭对案件通过审理,认定事实,适用相关法律,加以裁判的活动。[7]这充分表明,诉讼活动是一个法律适用的活动,就是把相关法律规则作为大前提、把案件事实作为小前提,运用三段论推理得出裁判结论的过程。诉讼法学作为研究诉讼活动的法学学科,为什么重视事实认定而轻视、甚至忽视法律适用呢?为什么看到裁判推理的小前提而忘却大前提呢?笔者认为这是一种误解。那就是认为事实认定困难、法律适用容易,是法官就自然会法律适用。其实,不是这样,至少不完全是这样。

(2)这是诉讼程序救济的审查内容。我国的《刑事诉讼法》第189条、《民事诉讼法》第153条、《行政诉讼法》第61条都规定:适用法律、法规正确是二审法院维持一审裁判的必要条件之一;适用法律、法规错误是二审法院更改一审裁判的充分条件。可见,在程序救济的体制安排中,一审中的法律适用是与事实认定、程序规范一样作为审查的内容的。毫无疑问,诉讼程序有三个主要问题:一是事实认定,它要求清楚、证据确实充分;二是程序操作,它要求规范合法;三是法律适用,它要求正确、准确。既然都是程序的组成部分、都要面临上级法院、社会大众的监督,为什么只是关注程序操作和事实认定,偏偏又忘却了法律适用呢?

(3)这是有效解决疑难案件、遏制司法错案的具体措施之一。什么是疑难案件?无非是事实认定难、法律适用难,或者案件事实与法律法规结合难。[8]什么是错案?也无非是事实认定错误、法律适用错误。如何解决这些疑难案件或者错误案件?当然应当采取包括提高法律适用技能在内的各种综合措施。如果仅仅解决了事实认定中可能出错的地方,而忽视法律适用中的错误,同样会发生疑难案件和错误案件。

有人认为,外国和民国时期的诉讼法学教育也没有法律适用的专门内容,不是照样培养了许多合格的法律人才,这如何解释?笔者认为如果一个国家或者地区的法科学生,他们本身的教育模式就是以法律适用为教学依归,那么诉讼法学教科书中有无这个内容就不重要,因为他们每堂课都在学习着活生生的法律适用。美国的判例教育法就是如此。如果一个国家或地区的法科学生的教学计划中有专门的、必修的法律适用方面的课程,那么诉讼法学也可以忽视这部分内容,因为学生可以在其他课堂上学习到法律适用的技能。德国注重法律方法论的学习就是如此。假如这两类情形都没有,试问:法科学生何以获得法律适用技能的理论学习与培训呢?仅仅在法理学课程中讲一点就足够了吗?笔者认为不够。而我国法科学生现行的教育模式和教学内容恰恰就是欠缺这方面技能学习的。所以,作为诉讼法学教师,笔者主张应当首先在诉讼法学教学内容中拓展法律适用技能的学习。 转贴于

2.诉讼法学中增加法律适用部分的内容

如果说在诉讼法学教学内容中增加法律适用的部分是有必要的,那么我们应当给学生讲授哪些具体内容呢?笔者主张最低限度应当告诉学生如何找法、定法、释法、用法。

(1)所谓找法就是三段论裁判大前提的寻找与确立。找法可以分找到、找不到、找到不太适合的等情形,出现这些情形时法官如何采用体制内许可的方法加以解决是一项重要的技能。[9]笔者认为:找到合适的法律规则需要对其进行结构分析;找不到法律规则就要进行诸如漏洞补充的措施;找到不太合适的法律规则就要进行诸如利益衡量的措施。

(2)所谓定法就是排除已经找寻到的法律规则之间的冲突。如果说找不到适合于本案的法律规则是法律的消极冲突,那么找到两个以上可以适用于本案的法律规则、而彼此又有矛盾,就是法律的积极冲突。由于立法主体的不同、立法背景的不同、立法目的的不同等原因,法律规则之间的积极冲突是一个无法根本杜绝的现象。出现这些现象就要遵循一定的法律适用规则加以确定。这些规则很多,诸如“新法大于旧法”、“特别法大于一般法”等皆是。

(3)所谓释法就是对确定下来的法律规则进行一定的解释,包括文义解释和各种论理解释。[10]正如本文前述,诉讼法学本身的内容结构就是一种对诉讼法典的解释。培养的法律人才也应当会对实体法和程序法进行必要的解释。

(4)所谓用法就是将法律规则这个大前提与案件事实这个小前提进行结合推理和法律论证。推理要遵循一定的逻辑规则,包括形式逻辑的规则和辩证逻辑的规则。这种规则的运用还要体现为心证公开中的裁判理由公开。也就是说法官不仅要会推理论证,还要把这个过程表示出来接受上级法院和当事人以及社会的监督。

三、结束语

诉讼法学应当为培养合格法律人才做出应有的贡献。

在某些场合,法学已被人戏称为“垃圾专业”了。当然这种说法是否正确值得讨论。但是,某种程度和某些方面的贬抑应当引起我们从事法学教育的人的思考:我们应当如何培养法科学生?合格法律人才的标准又是什么?笔者认为,法学教育不能培养“华而不实”、“夸夸其谈”的人,应当培养能够熟稔运用法律的人才。法学是一门应用之学,不能教给学生“屠龙之技”,而应当传之以“杀牛之术”。

参考文献:

1 陈光中.刑事诉讼法(第三版)[M].北京:北京大学出版社,2009

2 宋朝武.民事诉讼法学[M].北京:中国政法大学出版社,2008

3 陈瑾昆.刑事诉讼法通义(郭烁整理)[M].北京:法律出版社,2007

4 [日]松尾浩也.日本刑事诉讼法(丁相顺译)[M].北京:中国人民大学出版社,2005

5 刘玫.刑事诉讼法[M]. 北京:中国政法大学出版社,2008

6 褚剑鸿.刑事诉讼法论[M].台北:台湾商务印书馆股份有限公司,2001

7 陈光中.中国司法制度的基础理论问题研究[M].北京:经济科学出版社,2010:4~9

程序教学法论文篇(8)

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)27-0183-02

目前,高职教学中的考试还是延续了采用试卷化来考察学生的成绩,将成绩的好坏作为衡量学生学习结果的标准。为了更好的进行教学评价方式的改革,适应在新时期教育发展趋势对考试评价提出的要求,就需要引入一些科学化,系统化的评价方式来进行有关课程的评定。S-P表是一种采用形成性评价理念为基础,使用图形化的数据表现形式和强大的数据处理能力的评价法,被广泛地应用在各种类型的测验评价中。本文主要以《C语言程序设计》课程为研究对象,运用S-P表分析法的相关参数计算结果的同时结合理论研究方法,将试卷的测验作为切入点,对《C语言程序设计课程》相应教学内容的教学情况进行分析研究。

1 《C语言程序设计课程》中存在的问题

近年来,高职院校对于C语言程序设计的课程实践教学非常重视,加大了对基础学科的投入,从教材的编写,师资的培养到参加各种类型的竞赛相比有很大的改善,但仍然存在很多的不足,主要表现在以下几个方面

(1)课程学习目标不明确。

在高职的《C语言程序设计课程》教学过程中,发现学生对于课程的认识非常浅,仅仅认为该课程是其他程序设计类课程的基础,具体会对高职的计算机专业的学习有多大的帮助完全不理解,因此导致学生在学习的过程中不够重视。

(2)理论教学过程忽略培养学生的综合能力

在传统的理论教学过程中,都是采用章节式的教学形式,引导学生从循序渐进按照章节来进行学习,在每一章学习的过程中,采用判断题,程序填空题,编程题的方式来进行对理论过程的消化,因此这种效果看上去可以起到对知识点有益的补充,但是缺乏从整体结构上进行把握,忽视了对综合应用能力的考察。

(3)实践教学开展的效果不佳。

目前,高职院校的程序设计主要是教学理论的讲解和上机的实践过程,实践环节的地位始终都是摆在理论教学环节之后,主要是用来对理论教学加强实践过程中的一种表现,因此课程的安排初期,无论是从实践学时的分配、以及实践课程的开展次序来看都明显的弱于理论教学。因此在教学过程中学生对实践过程的教学不够充分重视,造成了在考核过程中有些学生的理论很强,但实践上机调试偏弱,在一定程度上严重违背了程序设计课程的学习宗旨。

(4)课程评价机制落后,严重束缚学生的创新能力。

课程评价一般分为理论评价和实践评价两种方式,理论评价多以选择题,判断题,程序填空题等方式出现,考察学生对于程序的理论知识点的掌握情况,这种方式无法从根本上考察C程序设计的运用,在上机过程中的考核方式由于学生的人数和时间的关系,无法做到对每一个学生进行考察,即使在考查过程中,也往往是依靠程序的正确结果来进行给分,而对于一些错误答案的程序往往不够重视,在这其中可能会导致有些错误的程序往往包含了一些学生的新的思想和想法,这样会严重打击学生的积极性,使得学生放弃自己的想法复制一份结果正确的标准格式代码进行提交,不利于提高对学生创新能力的培养,降低了他们对于学习的热情。

2运用S-P方法分析《C语言程序设计》课程

2.1 S-P分析法简述

S-P 分析法是一种非常好的试卷评价方法,它主要考察学生的学习情况、辅导内容和考试方式为主旨,将考察学生的方式采用图形化的方式进行表达,是一种理论结合实践的验认知诊断评量技术。

2.2课程数据导入

本文将各试卷的知识点对应的成绩作为研究的对象,对原始的成绩进行合并转换,画出相应的 S 曲线和 P 曲线,并采用 S-P 方法进行评价分析。本步骤中所做的工作主要分为两个阶段:

(1)学生成绩的准备。首先,对三份试卷的原始成绩进行收集和整理,将收集好的试卷中的原始题目和成绩进行合并,得到全新的考试成绩表。表中的每个成绩数值对应题目的知识点都不尽相同,为后续的转换组好准备。

(2)将新的学生成绩考试表转换成学生原始得分布尔矩阵。为了更好的进行研究,本文采用的问题平均的得分值作为赋值的标准,所以试卷中题目都需要进行布尔转换,在新学生成绩考核表中分数的转换均需严格按照赋值标准进行判断和转换。

2.3 S-P分析课程课程因素

(1)试卷信任度

本文选取了近三年的三次《C语言程序设计》的期末测试,本次测验根据经典测量理论,即采用分半法来计算相关系数的方法来计算信任度系数值。

计算过程如下:

步骤1:计算出整个测验中每个学生在试卷中的奇数题目的总得分()和偶数题目的总得分()。

步骤2:用下列公式求出奇数题和偶数题这两组分数的相关系数:

步骤3:用如下斯皮而曼-布朗公式进行校正:

依据经典测试理论,本文对三份《C 语言程序设计》课程试卷计算各自的信任度系数值,来进行客观的分析这些试卷的测试结果是否具备真实性。计算的过程是首先对所有参加测试学生的试卷按照题目的奇偶编号进行统计,累计统计每份考卷中的奇数题目的得分,以及偶数题目的得分 ,将这些值导入到 Excel 的环境中对所有的奇数题目总分和及偶数题目总分和以及的值、的值和的值,并分别求得这些值各自的总和,最后将这些结果都代入公式(1) 和公式(2)中即可求得最后的信度系数值。

(2)试卷效度

根据经典测试理论有关效度的分析方法。本研究结合近三年来的三次《C语言程序设计》课程考试答题情况和标准答案的分析得到了三次考试本身的效度情况,其次,对三份试卷的所考察的知识点进行计算和统计,并根据考试教学大纲中的要求进行对比,发现试卷考察的知识基本覆盖所规定的教学知识点。

(3)差异系数

将三份试卷的数据导入S-P表中,按照差异系数公式(3)来计算差异值。

式中:表示差异量,表示正确回答率。

一般来说,考试类型的不同导致的差异系数的值也会不同,一般对应检测学生成果的考试取值在0.5左右,而本次使用的试卷符合这个测试类型。 三次试卷的测试差异系数值为表1所示:

3使用S-P分析《C语言程序设计课程》反馈

(1)学生学习状况方面

统计计算三个班级中参加期末考试的学生的原始分、平均分、差异量三个考试班级中学生的得分率和学生成绩差异情况,对三个班级的学生学习状况按照这些指标进行分类。这种分类是动态的,由多种统计数据划分,将学生的个体与全班的表现对比,可以多角度的了解学生状态,以便他们在考试中发挥出现异常都能帮助授课教师继续分析和追踪。

(2)试卷整体质量方面

本课题中使用的《C语言程序设计》的试卷质量不尽相同,每份试卷的信度和效度都不同,特别是在效度方面,三份试卷的效度都比较高,其次,三份试卷的难度情况和分值情况不同,特别是在2013年的试卷中,P曲线存在明显的断层,这说明该年的试卷在出题方面存在一定的问题。

(3)教学环节和因素分析方面

通过S-P分析得到,任课教师仅仅关注教学知识点是不够的,分析中发现学生和教师对于存在的知识点的学习感受和教学效果是反应到一些具体的教学环节和因素上的,例如学生对于课程的学习兴趣,分析程序的思维能力,教学过程中的多媒体的手段以及课程内容的安排等等,这就要求教师在课程的日常教学实践中能够从教学环节和饮食上进行分析和改进,提示教学知识点的教学效果,这样不仅可以帮助教室解决教学过程中的问题,还可以根据学生的具体情况设计更适合学生的教学方法。

(4)学生能力方面的挖掘分析

使用S-P分析方法对课程的诸多因素进行了分析,课程的评价也是学生的学习能力和学习兴趣的反应,因此使得授课教师加强学生对《C语言程序设计》中语法细节掌握情况的反馈,以及学生具备的基础能力情况,进一步挖掘和培养学生的学习能力。

4贡献及总结

本文以 2012,2013和2014三个年度的《C 语言程序设计》课程作为研究对象,通过使用S-P参数公式得到相关的反馈信息,针对参与考试的学生的学习情况、试卷质量和相应的教学知识点的相关情况进行了分析和研究,得到了如下的内容:

(1)对《C 语言程序设计》课程大纲下的三个年度的学生考试成绩进行汇总,并对学生的考试情况、试卷质量和教学知识点覆盖等情况进行了统计分析;

(2)通过S-P分析法得到试卷中的部分的异常试题和需要重视的知识点多注意的教学知识点,分析和总结出这些引起共性的知识点的教学效果教学环节和因素,并反馈给了任课教师,以便能够更好的提醒和帮助老师进行课程上的改革,以便取得更好的教学效果;

(3)将S-P分析过的部分班级的学生学习《C 语言程序设计》课程中的状况及时反馈给教师,并能够在今后的教学过程中能够注意学生的学习状况并加以指导;

(4)不断完善S-P表的评价分析理论,并需要结合教育学中经典教育测量理论中的有关信度、效度值的指标计算分析内容,可以弥补自身的不足,并能够与课程的其他方法进行补充,不断完善提高。

5综述所述

需要不断在《C语言程序设计》课程中进行改革,本文的S-P评价方法还存在一定的不足,需要在今后的教学过程中不断改进S-P评价方法,使之能够为计算机课程的改革教学提供有利的支持。

参考文献:

[1] 冯丽娜.S-P表分析法的教学应用研究-以《C语言程序设计》课程测试为例[D].内蒙古师范大学硕士论文,2013.

程序教学法论文篇(9)

文章编号:1672-5913(2013)03-0022-04

中图分类号:G642

计算机程序设计类基础课程是高校计算机基础教学体系的核心课程,从国内教学现状来看,许多学生对程序设计技能训练不够,不能很好地树立“程序设计思维”,多数学生不能独立编写解决实际问题的程序。究其原因,一是在有限的课时内灌输大量繁杂语法知识,导致程序设计技能培养投入不足;二是限于初学者的认知水平难以建立程序设计的逻辑思维方式。死的语法知识是“鱼”,而程序设计能力是“渔”,“授人以鱼”不如“授人以渔”。因此,我们提出精简和优化语法教学内容,以核心语法子集进行教学的思想,以认知理论为指导,探讨优化的教学方法,以此提高程序设计基础类课程的教学实效。

1 基于语法子集的教学内容优化

目前大多数学校在教学内容方面注重语句、语法等语言细节,基本是以高级语言的语法体系为脉络展开教学,没有把逻辑与编程解题思路放在主体地位,对如何分析问题和解决问题讲得不够,对学生的编程能力、上机解题能力训练不够,以至于学生难以独立编写正确的程序,面对实际问题求解的编程显得束手无策。由于在语法教学内容上追求大而全,导致教师迫于完成教学任务进行“填鸭式”的“满堂灌”,忽略了学生的学习主体特征,不能很好地调动学生的主动性。学生创新能力的重要性已普遍共识,程序设计类课程对创新能力的培养主要体现在解决实际问题的独立编程能力上。只有重视算法和程序设计技能的教学,才能达到这一目的。对于语言的语法内容,够用即可,每种程序设计语言应选择其核心语法子集来教学。因此,首先要按照教学目标要求确定所要解决的各类基本问题,得到基本问题所构成的问题空间;然后确定问题空间求解涉及的基本算法范围。根据算法范围寻找核心教学语法子集。通过实验研究结合人工经验,分别得出实验语法子集和经验语法子集;再将两者结合起来,最终确立核心教学语法子集。

1.1实验语法子集的确立

实验语法子集的确立要通过客观实验完成,需要利用计算机信息处理技术,对主流教材、课件和其他材料中出现的程序设计语言关键字和语法点的频率进行统计分析;利用计算机对统计分析结果进行使用频度排序,获得各种语法点的实际应用频率的客观度量,然后以使用频度为依据确立实验语法子集。获得实验语法子集需要经历如下3类步骤。

1)实验分析。这个阶段要分析“程序设计基础”类课程的教学内容要点,确定问题空间,从而确定系列课程所涉及的算法大类;结合具体语种的特点,分析具体语言涉及的关键字。为便于采用计算机信息处理技术进行研究,可以只从关键字的角度研究基本语法要素构成的语法子集,不必考虑语法结构问题。

2)实验设计。包括以下几个子步骤:①原始数据数据采集。原始数据可以来源于目前国内外用于“程序设计基础”课程的典型教材、课件和其他资料。②数据处理,对符合基本算法范围的程序进行单词划分和标注,由实际材料中经典程序里面出现的单词组建词表文件。③数据统计,对数据处理阶段得到的词表文件进行统计;找出具体程序语言的关键字在所有实际材料中出现的总频数,得到语言关键字使用频数统计表。④数据分析,通过对语言关键字使用频数统计表进行分析,得出统计结果。

3)实验实施。该阶段按照实验设计的步骤进行具体操作,其中,在数据采集环节要利用典型教材的电子版,有些教材电子版文件格式可能是非文本的,需要转换为文本格式。转换中可能用到的转换软件,如Pdg2Pic软件可以将PDG文件转换为TXT的文本格式;汉王PdfConverter(免费版)能快速准确地将PDF文件转换成Word格式的rtf文件或txt文本文件。

1.2经验语法子集的确立

与实验语法子集相并行的是经验语法子集,它是靠人工经验确立的语法子集。获得经验语法子集的操作过程有3步,第一步,针对具体的程序设计语言设计一种语法点使用频度的问卷调查表。第二步,利用调查表向教学经验丰富的一线权威教师进行问卷调查,从而获得第一手原始资料。第三步,对获得的调查表进行统计分析,对各语法点的使用频度得出经验排序,根据排序结果选取经验语法子集。

1.3核心语法子集的确立

结合实验语法子集和经验语法子集,取两者的公共交集,即可得到核心语法子集。将核心语法子集作为教学语法子集,实现语法教学内容的优化。

2 基于认知理论的教学方法优化

2.1认知理论与教学设计原则

认知学习理论是通过研究人的认知过程来探索学习规律的学习理论。主要观点包括,人是学习的主体,主动学习;人类获取信息的过程是感知、注意、记忆、理解、问题解决的信息交换过程;人们对外界信息的感知、注意、理解是有选择性的以及学习的质量取决于效果。

布鲁纳的认知发现说和奥苏贝尔的认知同化说是现代认知学习理论的两大典型学说。布鲁纳强调指出学习过程是一种积极的认知过程,他认为学习的实质在于主动地形成认知结构;重视人的主动性和已有经验的作用,重视学习的内在动机与发展学生的思维,提倡知识的发现学习。认知同化说认为,新知识的学习必须以已有的认知结构为基础;学习新知识的过程,就是学习者积极主动地从自己已有的认知结构中,提取与新知识最有联系的旧知识,并且加以“固定”或者“归属”的一种动态过程。

根据认知学习理论关于学习的基本观点,与教学实践相结合,国内外研究者们提出了一系列指导教学设计的原则,这些原则有许多非常适合于程序设计基础类课程的教学。比如用直观的形式向学习者显示学科内容结构,应该让学习者了解教学内容中涉及的各类知识之间的相互关系;学习材料的呈示应适合于学习者认知发展水平,应按照由简到繁的原则来组织教学内容;学习以求理解,才能有助于知识的持久和可迁移;学习材料既要以归纳序列提供,又要以演绎序列提供;学习材料应体现辩证冲突,适当的矛盾有助于引发学习者的高水平思维。

2.2优化程序设计基础课教学方法的若干实例

1)挖掘新知识的生长点,促进知识正迁移。正迁移就是要把已有知识经验作为新知识的生长点,引导学生从原有的知识经验中生长新的知识。

以“两变量值交换”的教学为例,可以用“酒、水交换”这种已有知识经验作为其新知识的生长点,促使“酒、水交换”操作向“两变量值交换”操作正向迁移,学生就很容易将新知识纳入已有知识结构,牢固掌握“两变量值交换”的算法。

又如,关于“循环”概念的教学,可以用近义词“反复”做类比,用累加算法作例题,以学生熟悉的身边学习生活事例为算法素材。如学生每周的固定时间都要来教室听同一门课就是合适的循环例子,以反复听课增加知识量为算法素材。这种教学方法容易引起正向迁移的发生,加深对“循环”新概念的理解。

再如,很多抽象概念可以用学生熟悉的概念做比喻,引发正迁移。笔者在教学面向对象程序设计“消息多态性”概念时,常举这样的例子:当老师向不同学生宣布同一消息“今天停课”时,不同学生的反应不同,这就是消息的多态性。在教学面向对象程序设计“构造函数与析构函数”的功能时,常用“接生员与火化员”的作用作类比,使学生牢牢记住构造函数的功能是对刚创建的对象进行初始化;析构函数的功能是对使命完成后的对象进行清除。

2)突出新旧知识对比,避免负迁移发生。在学习过程中,如果对表面相似的新旧知识把握不足,反而使某种旧知识对新知识的学习产生严重干扰,这就是负迁移现象需要有效避免。

如学生对“=”号形成了根深蒂固的概念,一看到“=”号就想到两边相等;在C/C++语言中经常将应当用等号“==”的地方误用“=”号。于是,数学“=”号对程序设计语言中的赋值符号“=”形成正确概念带来干扰。因此,在教学中要突出传统数学符号“=”与程序设计语言运算符“=”的差异对比。

又如,传统数学的运算符求值顺序规则对C/C++中“右结合性”算符的求值顺序规则理解有干扰,对于容易引起负迁移的知识点要突出其对比。

3)由具体到一般的教学模式。程序设计语言中有的句式有非常复杂的完整形式,如果先写出其完整的理论形式,再举例说明,往往开始就会引起学生的厌倦情绪。相反,若先通过具体实例说明,然后再总结出一般性规律,对初学者来说更易于接受。如,VB语言中的InputBox函数的运用问题,由于该函数有多个参数,每个参数有不同的含义,控制对话框中出现不同内容。为使初学者易于理解,可先对参数逐个演示其运行效果,用具体的结果突出每个参数的作用,最后总结出该函数的一般语法格式。这一教学原则可以推广到许多复杂语法格式的教学方法中。

4)归纳与演绎的综合运用。以C/C++中的二维数组“行指针”及二级指针的教学为例,为了突出该类指针的“性质”以及“*”号对指针的作用结果,可先进行演绎教学:将该类指针变量加减一个整数,观察值的变化规律,得出性质(移动的地址以什么为单位?);再将“*”号作用到指针变量前,观察值的变化,发现仍然为地址,再加第二个“*”号上去,观察得到的值,发现新地址性质的不同。通过演绎再归纳,笔者将“行指针”称为“二维指针”,而将简单变量或数组元素的指针称为一维指针,归纳出如下结论:二维指针加减一个整数n移动n个“行”的距离,而一维指针加减一个整数n只移动n个“元素”的距离。“*”号作用于二维指针或二级指针前,得到的值仍然是指针值(地址),前者得到的指针值数量不变但性质降为一维;后者得到的指针值是一级指针变量的值(即普通变量的地址)。“*”号作用于一维指针或一级指针前,得到的值才是普通值(非地址)。

3 优质教学资源的建设

精炼优化的教学内容和适合的教学方法为提高程序设计课程的教学实效打下了良好的基础。通过优质建材建设和优质电子资源建设将内容和方法体现在教学资源方面。

一是编写基于优化核心语法子集的简明程序设计教材。在教材中要充分体现优化教学方法的思想,精选例题,善用类比,尽量发现可引起正迁移的知识点;要有效避免可引起负迁移的因素,对复杂知识点的处理要遵循从具体到抽象、从简单到复杂原则;要善于将归纳与演绎进行综合运用。

程序教学法论文篇(10)

榆林学院 信息工程学院教改项目(《编译技术及应用》课程教学改革探索与实践)

编译原理是计算机科学与技术专业的专业必修课,是计算机学科的核心课程。主要介绍了高级程序设计语言编译系统的构造原理、设计方法以及主要实现技术,综合了数据结构、计算机语言、算法和软件设计、离散数学等知识。涉及形式语言描述、有穷自动机等抽象内容。也被视作该专业最难的课程之一。根据我院本课程的教学目标:通过编程语言实现技术的学习,了解编译程序的实现原理和技术;利用从本课程学习到的知识,增强编写和调试程序的能力。同时结合我校的实际情况,对本课程的教学与实践内容进行了选取。

1、“编译原理”在本科教学中的地位与教学现状

“编译原理”课程是专门介绍如何将高级语言翻译为低级语言的编译程序的工作原理和方法的课程。因此,可以说该课程是建立在高级语言或汇编语言基础上,综合运用编译理论及多门前修课程如“数据结构”“离散数学”等课程的相关知识来解决高级语言在机器上运行的实际问题的一门课程。课程内容丰富,具有严密的逻辑性,对提高学生计算机软件素质具有很大作用,可以使学生真正了解计算机的工作过程,认识计算机信息处理的实质,并综合运用所学的软件设计技术来分析解决问题。

教学效果不理想:课程直观性不强且理论性强,而且很多理论性概念容易搞混。通常教学过程并不涉及编译器的具体实现,因此学生学起来没有兴趣。理论知识理解不透彻影响学生的动手能力。由于涉及到离散数学、高级程序编程等课程,综合性、连贯性均很强。诸多原因致使实践环节相对薄弱。

2、教学内容的选取

针对我校刚升本的一般本科院校,教材采用及教学内容的选取应强调对编译原理和技术的宏观理解及全局把握,而不要把学生的注意力分散到一些细节的算法上,在讲述各章的理论的同时要有一些C语言小程序作为例题或习题。结合编译的各个阶段,对教学内容的选取如下:

词法分析:本部分主要以正规式、NFA(不确定的有限自动机)、DFA(确定的有限自动机)及其最小化为主线来讲解,同时对词法分析器进行介绍,演示用C语言写的一个简单语言的词法分析器,并要求学生上机实现;

语法分析:这一部分中,上下文无关文法是必备的基础知识。语法分析包括自上而下与自下而上的语法分析二种。

语义分析和中间代码的产生:静态语义检查通常包括:类型检查、控制流检查、一致性检查、相关名字检查,重点应放在类型检查上。中间代码生成主要介绍各种形式的中间语言,把赋值语句和各种控制流语句翻译成中间代码的语义动作。

属性文法与语法制导翻译:语法制导的定义和语法制导的翻译方案是描述编程语言翻译的两种常用形式方法。

运行时存储空间的组织和管理:这是最需要搞明白的部分。尤其在用C这样比较低级的语言时,掌握这部分内容对编写程序和程序排错都很有帮助。

代码生成及优化:选择一种采用简单的寄存器分配策略的代码生成算法加以介绍,让学生对代码生成有所了解即可。用实例来介绍各类优化,让学生明白编译器能完成哪些优化,而不要给学生介绍各种优化算法。

3、实验内容的选取

设计一组适宜的实验内容:首先,要将编译理论和方法在实验中得以概括,使学生不仅掌握它们本身的具体应用,而且掌握由这些理论和方法所构造的编译程序的各个部件是如何在整个系统中协调运行的,这是实验最重要的目的之一。其次,必须合理地简化,使学生比较容易完成。针对编译原理课程的特点及要求,共设置了五个实验项目。这组实验既和理论课内容相辅相承,同时相互之间又互相关联,构成了一个实验整体:

1)、消去C、C++程序中的注释

对给定的带注释的C语言源程序,利用该程序去掉注释,输出去除注释的源程序。

2)、词法分析(必做,4学时)

通过设计编制调试一个具体的词法分析程序,加深对词法分析原 理的理解。

内容:用扩充的BNF表示例如:

{}

3)、递归下降分析法(4学时,选做)

根据给定的文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。

内容:用扩充的BNF表示例如:

=

4)、语法分析程序LL(1)(4学时,必做)

通过该实验使学生掌握描述语法规则的文法。

内容:对给定的文法建立预测分析表,利用预分析法对实验一中词法分析产生的符号进行语法分析,对符合下述文法描述的字符串(表达式或赋值语句),给出中间代码,不符合的字符串给出错误信息。

5)、语法分析程序LR(1)(4学时,必做)

通过该实验使学生加深对语法分析中自下而上分析法中的LR分析法的理解。

对给定的文法手工建立LR(1)分析表;利用LR分析法对实验二中词法分析产生的符号进行语法分析,对符合实验中文法描述的字符串(表达式或赋值语句)给出中间代码;不符合的字符串给出错误信息。

4、“编译原理”课程教改思路

根据培养目标和本专业主干课程间的内在关系来决定教学内容和教学方法。在“编译原理”教学过程中,要结合某种高级语言(如C语言),对其难以掌握、容易出错的语法难点用编译理论加以分析,培养学生灵活运用所学理论知识分析题、解决问题的能力。另一方面,要加强课外阅读指导。可布置学生阅读一些简单的由文法定义的网络协议等资料,拓展知识面,了解形式语言和自动机理论在计算机领域中的广泛应用。课程的实验,以编译理论中的一些经典算法的实现为主,培养学生的实践能力和动手能力;也可以通过对算法的实现的练习,准确、牢固地理解和掌握这些算法,从而提高实际应用能力。本课程的课程设计,要充分考虑编译理论与实际应用的结合,突出开创性和实用性。

5、结语

编译原理课程在计算机课程体系中的重要地位,决定了其课程建设和改革的长期性,对培养计算机专业的人才也有着重要的作用,探索该课程的教学方法,提高教学质量是从事计算机教育工作者的必须重视的问题,也是一个永远值得探讨的问题,我们根据我系的实际情况合理的运用现代手段,综合考虑多种因素,将该课程的教学改革推向更科学的发展道路。

参考文献

[1] 编译原理课程的教学研究与探索[J].教育信息化,2005(10):10-12.

程序教学法论文篇(11)

关键词:编译原理;课堂教学;实践教学

中图分类号:G642

文献标识码:B

1“编译原理”课程教学现状

编译原理作为计算机专业的一门核心课程,在教学中占据十分重要的地位。但由于其内容具有较强的理论性和实践性,学生在学习过程中感到内容抽象、算法复杂、难于理解,因此“编译原理”被普遍看作是计算机本科教学中最难讲解、最难学习的课程。总结起来理由如下。

(1) 本课程涉及不少理论知识,如形式语言和自动机理论、语法制导的理论等。这些理论的学习有一定的难度,特别是语法制导定义(或翻译方案)的设计,因为它本质上是一种事件驱动的程序设计,这对于三、四年级的本科生来说还是较难掌握的。

(2) 本课程包含了很多算法,大的有LL(1)分析算法和各种LR(1)分析算法等,小的有DFA化简算法、计算开始符号集合和后继符号集合的算法、各种数据流方程的迭代求解算法。这些算法要比数据结构中接触的算法复杂得多,学生在学习数据结构的时候,接触过很多算法,对于不理解的算法可以跟踪算法的执行过程,而跟踪编译程序中的算法则要麻烦得多,想深刻理解算法的思想很困难。

(3) 编译程序规模大,不可能在一门课的时间内把所有的细节都讲清楚,这使学生对编译程序各逻辑部分之间的接口和一些算法的实现是模糊的。

针对这种情况,如何提高这门课程的教学效果,是一个值得探讨的问题。笔者多年来一直从事“编译原理”课程的教学,对如何改进教学方法和提高教学效果做了一些研究和探索,并取得了良好的效果。

2明确教学目标,提高学生学习兴趣

很多学生认为“编译原理”只能应用在写程序语言的编译器上,而他们以后可能不会在编译器及其相关领域方面钻研,所以学习兴趣不高,其实这是一种误解。编译技术是计算机语言发展的支柱,也是计算机科学中发展最迅速、最成熟的一个分支。通过学习编译程序的构造原理和技术,将有助于深刻理解和正确使用程序设计语言。编译内容涉及到计算机的组织结构、指令系统以及操作系统,掌握编译技术有助于加深对整个计算机系统的理解。另外,由于编译程序作为系统软件在性能上具有严格的要求,这使得它所使用的算法经典、高效,而这些算法、思想和实现技术也可广泛地应用于一般软件的设计实现。如正规式和有穷自动机在文本编辑器中的广泛应用,有穷自动机在字符串查找中的运用,必经节点算法在网络中的运用,由文法来定义网络协议等。在教学中,可以鼓励学生尝试将编译程序中的各种算法和技术应用到各个应用领域,从而激发学生的创造性思维,培养学生的创新能力,为今后的学习打下坚实的基础。

3优化教学内容,搞好课堂教学

由于这门课程理论性强,内容丰富且抽象,具有严密的逻辑性,应用其他课程知识比较多,要在有限课时内很好地完成本课程的教学。教师首先必须吃透教学内容、把握课堂教学环节。这就要求教师对教材非常熟悉,掌握编译原理的主要内容及基本框架,对教材及教学内容作一定的优化。

3.1选取合适的教材

某些“编译原理”教材并不是完全面向学生的,可能是作为这门学科的大全来编写的。例如由美国著名计算机科学家编著的“龙书”《Compilers Principles, Techniques and Tools》,中文译名为《编译原理》,由机械工业出版社出版,这本书是最经典权威的编译教材,应该是教师教学的必备参考用书,但如果将其作为授课的教材,对大部分学生来说都不太适合,因为内容过多,难度过大。

笔者总结了多年的教学经验,编写了一本《编译原理》教材,已由人民邮电出版社出版,我们在教学中采用这本教材。结合教材的特点,我们在教学中力求做到以下几点。

(1) 考虑到学生对C语言较为熟悉,所讲授的主要算法、例题和习题均以C语言为背景。

(2) 把编译原理和编译技术两方面有机地结合起来。将“PL/0语言编译程序”模型的实现过程贯穿于各个章节,这样使学生在掌握相关的编译原理之后,通过阅读理解和扩充此编译程序,加深对所学内容的理解,使所学内容融会贯通,能够建立一个较为完整的编译系统模型。

(3) 对常用分析器的自动生成工具(LEX和YACC)的功能和使用方法做了详细的介绍,并给出了使用LEX和YACC实现的PL/0语言编译器的源程序,从而使学生真正掌握如何借助LEX和YACC实现一个编译器。

3.2抽象内容形象化

编译系统中的一些概念很抽象,学生无法理解,就只会死记硬背,当然更无兴趣可言。在讲解的过程中,可以选用学生最熟悉的一些实例,通过类比使抽象的概念更容易被理解。例如,从理论上来说,编译过程一般包括词法分析、语法分析、语义分析和中间代码生成、代码优化、目标代码生成这五个阶段。学生记住这五个阶段并不难,但理解阶段划分的依据有一定的难度。编译程序的功能是将用高级语言编写的源程序翻译成等价的用机器语言或汇编语言表示的目标程序。既然编译过程是一种语言的翻译过程,那么它的工作过程就类似于外文的翻译过程,不同之处仅在于由哪种语言翻译成另外哪种语言,但其原理是类似的。两者的翻译过程对比如表1所示。

例如,我们要将英文句子“I wish you success”翻译成中文,首先进行词法分析,根据英语的词法规则,识别出四个英语单词,并检查是否有单词的拼写错误。其次是语法分析,根据英语的语法规则,对词法分析后的单词串进行分析、识别,并做出语法正确性检查,看其是否能组成一个符合英语语法的句子。再次进行语义分析,即对语法正确的英文句子分析其含义,并用汉语表示出来。然后对译文进行修饰,根据上下文的关系及汉语语法的相关规则进行综合考虑,对初步翻译后的句子进行必要的修饰。最后翻译成中文,“祝你成功”。学生经常做这种翻译,对翻译过程非常熟悉。将它与编译过程进行类比,既加深了学生的印象,又有助于理解为什么将编译过程划分成这几个阶段。

3.3运用实例教学