APP下载

如何上好第一堂课

2014-04-29谌志群王荣波黄孝喜

计算机时代 2014年3期
关键词:教学

谌志群 王荣波 黄孝喜

摘 要: 第一堂课如何上,很大程度上决定了课程教学的成败。首先介绍了第一堂课的教学内容和教学方法,然后重点介绍了我们课程组在“编译原理”第一堂课中采用的教学手段和教学方法,如图表法、动态演示法等。本研究对计算机相关专业的课程教学,以及其他工科专业的课堂教学可起到一定借鉴作用。

关键词: 第一堂课; 编译原理; 教学; 动态演示

中图分类号:TP314 文献标志码:A 文章编号:1006-8228(2014)03-59-03

0 引言

请经验丰富、学术造诣深厚的名师为大学新生开设学科导论课,可让学生更好地了解本学科和专业的知识体系及发展趋势,掌握本学科和专业的研究方法和思维方式,解决本专业“为何学、学什么、怎么学”的问题[1]。同样,对于一门课,也需要在教学的开始安排导论性的内容,以帮助学生解决这门课“为何学、学什么、怎么学”的问题。这就要求任课教师精心进行教学设计,上好课程教学的第一堂课。

1 如何上好第一堂课

如果说学科是一片森林,那么课程就是一棵棵树木,如果说学科导论课是为了让学生掌握森林的导航地图,那么课程导论就是为了让学生掌握某棵树木的总体概貌。课程导论要说清楚树木在森林中的位置与作用,以及树木本身的主要枝杈,而不是去研究细小的枝丫,甚至树叶。第一堂课如何上,很大程度上决定了课程教学的成败。

1.1 第一堂课的教学内容

第一堂课应以教师讲授为主,需要向学生讲授的内容有以下几个方面。

⑴ 课程在学科体系中的地位

学科的知识体系是由一门一门的课程构建起来的,每门课在学科知识体系中都有其特有的地位和作用。第一堂课首先要介绍课程的历史、现状和发展趋势,介绍该门课的前导课程和后续课程,以及该课程与前导课程和后续课程之间的关系,让学生对该课程在学科体系中的地位和作用有个清楚的认识,使得学生在后续的学习过程中明确大方向。

⑵ 课程主要内容概览

每门课都有自身的核心内容和知识结构,对学生来说,课程学习首先就需要解决“学什么”的问题。第一堂课需要向学生概略性地介绍本门课程的主要内容、知识点,以及知识点之间的关系。最好是能将课程的主要内容以知识点为单位串联起来,形成一个完整的知识图谱,使得学生在后面的学习过程中做到胸中有丘壑,在学习具体章节或者知识点的时候不会迷路。

⑶ 课程的作用

学习某门课程,其作用体现在很多方面。一是可以通过课程学习来构建完整的学科知识体系,并为后续学习打下基础;二是可以通过学习掌握本课程的相关知识,为将来解决实际问题提供帮助;三是课程学习对培养学生专业素养和能力的促进作用,这一点很重要。在第一堂课中应向学生介绍本课程的多方面作用,解决学生“为何学”的问题,这对于激发学生的学习兴趣非常重要。

⑷ 课程的学习方法

每门课都有其自身的性质和特点,计算机专业的课程可分为理论类、实践类、编程类等。课程的性质和特点不同,学习方法也各不相同。第一堂课需要向学生介绍课程的类属,本课程与别的课程的区别与类同之处,课程各部分内容的比例,课程的实验或者上机要求等。然后结合课程特点,介绍本课程的学习方法,比如是采用理论思辨、算法分析,还是编程验证,为学生解决“如何学”的问题。

1.2 第一堂课的教学方法

第一堂课的目的是介绍课程的总体概貌,激发学生的学习兴趣。要达到这个教学目的,需要采用合适的教学方式。首先不能让课堂气氛严肃压抑,而应该营造得轻松愉快一点。最好以讲故事的方式开始,介绍课程的发展史和发展过程中重要科学家的事迹。在介绍课程内容概貌时,应该采用形象、直观、易记的方式,比如图、表、动画、音频、视频等。为介绍课程的作用,增强学生学习动力,可以用具体实例说明课程知识在解决实际问题过程中的应用,以及在专业素养和专业能力培养方面所发挥的作用。可以说上好第一堂课,课程教学就成功了一半。

2 “编译原理”第一堂课

“编译原理”是计算机专业的重要基础课,在教学中存在着教难、学难、实验组织难等问题,是计算机专业教学中一门公认的难上课程[2],因此上好“编译原理”第一堂课显得尤为重要。

编译系统在现代计算机系统中占有重要的地位,它是直接运行在操作系统之上的一类重要系统软件,如图1所示。

[裸机][操作系统][编译系统]

图1 编译系统的地位

编译原理课程的目的在于系统地向学生讲述编译系统的结构、工作流程及编译程序各组成部分的设计原理和实现技术,使学生通过课程学习,既掌握编译理论和方法方面的基本知识,也初步掌握设计、实现、分析和维护编译程序的技能。编译原理课程与其他课程之间的关系如图2所示。

[高级语言程序设计][自动机和形式语言][操作系统][数据结构][离散数学][编译理论][素材] [控制对象][技术][基础]

图2 “编译原理”与其他课程的关系

向学生介绍编译原理课程在学科体系中的地位之后,还需向学生概略性介绍课程的主要内容。编译原理课程内容纲要如图3所示。编译原理课程教学中几乎所有内容都是围绕这一纲要展开的。

[符号表管理][中间代码生成][语义分析][语法分析][词法分析][目标代码生成][代码优化][源程序][目标代码][错误诊断处理]

图3 “编译原理”课程内容纲要

编译原理课程要重点介绍编译的整个过程,这一过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等步骤(见图3)。编译过程是非常复杂的,但是编译过程中每个阶段完成的主要工作又是非常明确的。

让学生掌握编译过程各阶段分别完成哪些编译工作,并在脑海中建立深刻印象,对后续教学是非常关键的。为此,我们采用多媒体开发工具FLASH CS3[3],自行设计开发了一个“编译过程动态演示系统”,系统导航界面如图4所示。

图4 编译过程动态演示系统导航界面

系统将文本、表格、图形、音频、视频等不同的媒体结合在一起,以形象直观的方式动态演示高级程序设计语言编译过程各个阶段对源程序或其中间表示的处理工作,并以一个典型的源程序例子为对象,展示其编译过程中的变换情况。图5是代码优化阶段的实例变换情况动态展示。

图5 代码优化实例展示

通过播放以上演示系统,可以使学生轻松掌握编译中的几个核心概念,更重要的是可以牢固把握整个高级程序的编译过程及其特点,更深刻理解编译原理课程学习的核心内容,使得学生在后续学习中无论在学习哪部分内容都明白当前内容在课程知识体系中所处的位置。

编译原理是计算机相关专业尤其是软件类专业的核心课程,对于学科知识体系的构建是不可或缺的,这对于提高学生的专业素养和软件开发能力是至关重要的。如果一个软件类专业的学生不能深刻理解高级语言程序的编译理论与核心算法,在进行程序开发的时候也就无法写出高质量的程序。虽然编译原理课程主要讲述编译理论(形式语言与自动机)与经典的编译算法,而绝大多数学生毕业后并不会从事编译器开发工作,但是学习该课程仍然是重要的和有益的。首先编译器本身就是一个大型软件,剖析这一大型软件的系统结构,对于培养学生的软件开发能力非常有帮助。另外,编译原理课程中涉及到的算法与技术可应用到其他软件的开发中,如文本分析与处理器、情报检索软件、模式识别软件等。应该在第一堂课向学生讲述课程的重要作用,激发学生对本课程的学习兴趣。

编译原理是一门典型的理论与实践相结合的课程,如何学好这门课程也是在第一堂课需要向学生重点阐述的。学好该课程,首先需要牢固掌握编译的经典算法,虽然这些算法已有几十年的历史,但是在现代编译器设计中仍然被广泛采用,这一点必须向学生说清楚,以免其对学习产生抵触心理。为了让学生能轻松掌握编译中的主要算法,我们采用Flash CS3,设计实现了一个编译算法动态演示系统[4],能够对几个经典的编译算法(NFA到DFA的等价转换算法、LL分析器的组成和分析算法、SLR分析器的组成和分析算法)进行全方位动态演示。

要学好编译原理,只学习理论是不够的,也是难以真正掌握的,根据学习进程去剖析一个实际编译器的源代码是一个很好的学习方法,最好在第一堂课就提供这样一个编译程序实例,并向学生提出具体的要求。

实验部分是编译原理课程教学中的重要环节。目前大多数高校在编译原理课程的实践环节都要求学生能上机实现一个小型模型语言的编译程序。这对于大部分学生来说似乎是一个不可能完成的任务。为了克服学生的畏难心理,我们在第一堂课向学生提供一个类Pascal语言的可拆卸式编译器[5]。该编译器是往届学生在课程实验中设计实现的。这样,一方面提供了一个编译器的范例供学生学习参考,另一方面也告诉学生,编译器设计并没有那么神秘,通过他们自身努力是可以实现的,从而增强学生上机实验的动力,并进一步激发其学习兴趣。

3 结束语

第一堂课是教师和学生的第一次见面,第一堂课教学效果的优劣在很大程度上决定了整个课程教学的成败,因此教师必须高度重视第一堂课。第一堂课的内容一般是导论性的,涉及课程的性质、地位和作用,课程的学科基础、主要内容、知识结构、学习方法和应用领域等多个方面。本文简要介绍了第一堂课的教学内容和教学方法,重点介绍了我们课程组在“编译原理”第一堂课中的教学手段和教学方法,如图表法、动态演示法等。在教育界不断强调提高本科教育质量,强调素质教育的今天,希望本文研究不仅对编译原理教学,也对计算机相关专业课程,甚至对其他工科专业的课堂教学起到参考作用。

参考文献:

[1] 朱振岳.杭州电子科大教授给新生做“向导”[N].中国教育报,

2013.10.11.

[2] 谌志群,王小华,朱文华.编译原理课程的教学改革思路[J]. 杭州电子

科技大学学报(社会科学版),2007.3(4):69-72

[3] 王环,李安宗.新编中文Flash CS3实用教程[M].西北工业大学出版

社,2009.

[4] 谌志群,王荣波.基于Flash的编译算法动态演示系统设计[J].计算机

时代,2011.9:59-61

[5] 谌志群,王小华.面向试验教学的可拆卸小型编译器设计[J].现代教

育技术,2009.19(6):111-113

猜你喜欢

教学
微课让高中数学教学更高效
「微写作」教学实践的思考
“以读促写”在初中写作教学中的应用
如何让高中生物教学变得生动有趣
谈高中音乐欣赏教学中的“听、看、想、说、动”
“自我诊断表”在高中数学教学中的应用
对外汉语教学中“想”和“要”的比较
对识谱教学的认识与思考
《可以预约的雪》教学探索与思考
对高等数学教学的一些思考