陈洪生 吴亮 吴春辉
摘要:计算思维是以计算能力和思维能力为基础的一种思维方式。它是每个人需要具备的基本技能,也是人类求解问题的一条途径。任务驱动教学法就是将课程的教学内容设置成与其紧密结合而富有趣味性和挑战性的任务。文章介绍的教学法就是将计算思维和任务驱动教学法相结合。它不但可以更好地培养学生的思维模式,激发学生的学习积极性,还能达到较好的教学效果。
关键词:计算思维;思维方式;任务驱动式;编译原理课程
中图分类号:TP314 文献标志码:A
0 引言
计算思维教育的目的是培养一种思维习惯,一种像计算机科学家思考问题那样的习惯。它是每个人都要学会的一种基本技能,所以教师应将计算思维融入课堂教学,让学生能掌握这种基本能力。“编译原理”课程主要讲授高级语言程序是如何进行编译的,在计算机的专业教学中占据了很重要的地位。因为该课程具有一定的理论深度和难度并且涉及很多算法,所以学生在学习过程中就会出现畏难情绪,导致学生学习积极性不高,从而导致教学效果不佳。本文提出基于计算思维的任务驱动式教学模式。这种教学模式是将计算思维和任务驱动式的教学方法相结合,既能更好地培养学生的计算思维模式,又能提高学生学习的积极性。
1 计算思维概述
国际上广泛认同的计算思维定义来自周以真教授。周教授认为,计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学的一系列的思维活动[1]。
计算思维是一种概念化的思维方式,不是一种程序化的思维方式,因此,它不能按照预先编制好的“指令”来逐步思考。计算思维是一种递归思维,是人类求解问题的一条途径,但绝非要人类像计算机那样思考。计算机虽然具有强大的计算能力,但是计算机是枯燥和乏味的。人类聪颖并富有想象力,他们可以赋予计算机激情并配备计算机强大的计算能力,他们能用自己的智慧来解决在计算时代之前无法解决的问题;计算思维是数学与工程思维的互补和融合;计算思维是一种人的主观思想,常被人们用来求解问题、管理日常生活以及与他人进行交流和互动[2-3]。
2 任务驱动教学法的概念和意义
任务驱动是以构建主义教学理论为基础,既能够激发学生的学习动机,又与教学内容紧密结合,以富有趣味性的任务为载体,学习者通过完成某项任务获得知识与技能的一种开放式、探究式教学模式。任务驱动式教学方法体现了以任务为明线、以提高学生知识掌握与技能应用为暗线、教师为主导、学生为主体的基本特征[4-5]。这种教学模式改变了以往以教师填鸭式、满堂灌的方式讲授知识的教学观念,变成以学生为主体、教师为辅助,学生为了完成任务而自主学习自主思考的互动式的教学方式。
在任务驱动式教学模式下,教师不再处于整个课堂教学中的主宰地位,而在整个课堂中学生是主体。教师仅仅是起辅助作用,成为学生学习中的一个引导者,学生成为整个课堂教学的主人。教师围绕课程的知识点,发布学习任务,学生带着任务进入学习环境,由于学习过程中有了任务,有了目的,学习起来会更加认真。为了解决任务,学生会更主动地激活原有的知识和经验,通过新旧知识的衔接,理解、分析并解决任务。在解决任务的过程中,教师不能直接告诉学生应当如何来解决任务,而是要对学生进行适当的引导,如需要搜集哪一类资料及从何处获取有关的信息资料等,启发学生独立思考,倡导学生之间进行讨论和交流,通过不同观点的交锋、补充,来修正和完善任务的解决方案。教师鼓励学生自己动手通过实验来完成任务,这样不但提高了学生实际动手能力,也能引导学生更好地理论联系实际。学生完成课堂发布的学习任务。在完成任务的过程中,他们的独立思考能力及与他人协同合作能力都会得到提高,完成后也会获得一种成就感,这样可以激发他们的学习兴趣,从而逐步形成一种认真学习并主动解决问题的良好的学习氛围。这种教学模式不但极大地提高学生实际动手能力和思维能力,而且还能使整个课堂教学过程充满激情和人性,能真正地调动学生的学习积极性并能使课堂的氛围活跃起来。
3 基于计算思维的“编译原理”课程任务驱动教学法应用
3.1 “编译原理”课程中存在的问题
“编译原理”课程是计算机专业很重要的一门核心课程。本课程讲述的是将高级语言编写的源代码转换成目标代码的编译程序的基本原理和实现技术。通过本课程的学习,学生应掌握文法和形式语言的基础知识,理解词法分析器和语法分析器的原理和算法并能编程,理解程序设计语言原理。但由于其内容较难,算法复杂难懂,传统的教学方法主要是教师根据教学进度表的要求对相关内容进行讲述,通过例题的形式对算法进行演示,学生课下通过课后练习来加深对算法的理解。这种教学模式枯燥无味,学生在课堂上被强制要求接受教学内容,从而导致学生在学习过程中缺乏积极性,有的为了完成作业而相互抄袭。大多数学生觉得这门课很难,不愿意好好学习,导致教学效果不理想。
3.2 “编译原理”课程中存在问题的分析
按照以前以教师为主体的“满堂灌”的教学方法,学生学习积极性不高,教学效果不佳。为了提高学生的学习积极性,让学生更好地掌握知识,本文提出的任务驱动式教学方法可以运用在该门课程的教学过程中。该教学方法过程如图1所示。
3.3 “编译原理”课程中任务驱动式教学法的具体实践
下面以有限自动机章节的内容为例,来介绍该教学方法的具体实施情况。
该教学过程设计如下。
(1)当开始学习有限自动机时,教师先从易到难地提出该章节内容相关的任务:①确定的有限自动机和不确定的有限自动机的根本区别;②不能够被有限自动机识别的单词错误的原因;③将不确定的有限自动机确定化的算法用程序来实现。教师让学生带着任务来学习。
(2)逐一给出相关的定义概念。有限自动机的定义:一个不确定的有限自动机M是由5个部分组成,它是一个五元式,即M=(S,∑,f,s0,D)。其中,S代表有穷状态集,∑代表有穷字母表,f是从S×∑*→2S的多值映射,s0代表非空初态集,D代表终态集。一个确定的有限自动机M′由5个部分组成,它也是一个五元式,即M′=(S,∑,f,s0,D),其中S代表有穷状态集,∑代表有穷字母表,f是从S×∑→S的单值映射,s0代表唯一的初态,D代表终态集[6]。
有限自动机M (S,∑,f,s0,D)识别字时,对于集合∑*中的任何一个字,若存在一条从初态结点s0到终态结点集合D中某一个终态结点的通路,这条通路上所有弧的标记字符依序连接成的字符串等于α′,则称字α′能被该有限自动机M所识别。
不确定的有限自动机的确定化算法(子集法)描述如下:(1)假定集合I是不确定有限自动机M′的状态子集,定义集合I的ε闭包ε-CLOSURE(I)为:若状态s属于集合I,则状态s也属于I的ε闭包,即s∈ε-CLOSURE(I),也就是集合中的所有状态均属于该集合的ε闭包;若状态s属于集合I,则从s出发经任意条即一条或多条ε弧而能到达的那些状态,s′都应属于该集合的ε闭包,即s′∈ε-CLOSURE(I);(2)假定集合I是不确定有限自动机M′的状态子集,b∈∑,定义Ib=ε-CLOSURE(Q),其中,集合Q是从集合I中的任一状态结点出发经过一条b弧而所能到达的所有的状态结点的集合;(3)假定有限自动机输入字母表有i个字符,例如∑={b1,b2,…,bi},则可以构造一张含有i+1列的表,该表的每一行都有i+1列,第一列为I 列,第二列为Ib1,第三列依次为Ib2,依次类推,最后一列为Ibi。置该表的首行首列的值为ε-CLOSURE(X)。其中,X为不确定有限自动机的初态。一般情况下,如果某一行的第一列即I列的值已经确定,那么就可以通过上述求Ib的算法分别求出该行的第二列以及后面等列的值,然后检查第二列和后面列的值,看它们是否与表的第一列的值相同,将与第一列不同的值依次填入下面空行中的第一列。按照上述过程继续进行,直到该表中所有行的第二列以及后面列的值均在第一列中出现。将构造出来的表中第一列即I列中的每个状态子集视为转换后的确定的有限自动机的新的状态,那么这张表就可以看作是转换后的确定的有限自动机的状态转换表,这样就可以得到一个确定的有限自动机了,该确定的有限自动机的初态就是表中第一行第一列的值,终态为含有原来不确定有限自动机终态的那些值。
(3)学习完该章节的理论知识后,要求学生可以根据任务和理论知识对任务进行分析,分析哪个任务用哪个知识点来解决;分析完任务后,学生可以完成任务了。
(4)教师对任务完成的成果可以通过作业、练习以及编程实现的方式来检查。这是任务驱动式教学的最后环节。
3.4 教学效果的分析
在上述教学过程中,不再以教师讲解为主体,学生作为课堂的主人。在学习过程中,学生是带着“任务”来学习的,那么他们学习的专注度和学习积极性更高。教师将要讲解的整个课堂知识分解成小块的学习任务,可以让学生对知识有更深入的理解而不是被强制要求接受教学内容。为了解决每个任务,学生会自主地进行学习。遇到困难时,教师鼓励并倡导学生之间进行讨论和交流。学生也可以跟教师进行沟通,但教师不要直接告诉解决方法,而是要对学生一步一步地进行引导,鼓励他们自主解决困难并完成任务。在分析每个任务的过程中,学生可以从易到难地理解章节内容。在解决了每个任务后,学生掌握了所有与任务相关的内容。从平时学生的课堂表现和作业的完成情况以及最后该门课程的期末考试情况可以发现,任务驱动式教学法在该门课程中是有效果的。
3.5 教学方法的改进
对于大多数学生而言,任务驱动式教学方法效果显著,但有极少数学生,由于基础较差,效果不是很明显。笔者认为可以对该教学法做以下改进:对于基础较弱的学生,可以根据学生基础的不同提出难易不等的任务;对于基础差距不大的学生,可以提出一样的任务,但是可以引导他们看不同的相关资料,从而完成任务。
4 结语
本文提出了基于计算思维的任务驱动式教学法,以“编译原理”课程中词法分析这一章节为例,应用了该教学法。由于基于计算思维的任务驱动式教学模式的特点是以学生为主体,教师为主导,所以该教学模式有利于提高学生的学习兴趣,提高了学生自主学习的能力以及与他人合作的能力。
参考文献
[1]WING J M.Computational Thinking[J].Communications of the ACM,2006(3):33-35.
[2]陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2021(1):7-11.
[3]李廉.计算思维-概念与挑战[J].中国大学教学,2012(1):7-12.
[4]刘红梅.任务驱动式案例教学法的构建与应用[J].江苏高教,2016(4):71-73.
[5]任浩,叶常春,肖政.任务驱动教学法在程序设计课程中的实践与分析[J].计算机工程与科学,2019(41):109-112.
[6]陈火旺,刘春林,谭庆平,等.程序设计语言编译原理[M].3版.北京:国防工业出版社,2020.
(编辑 王永超)
Research of computational thinking task-driven teaching method: taking “Compiler Principles” as an example
CHEN Hongsheng1, WU Liang2, WU Chunhui1*
(1.Hubei University of Science and Technology, Xianning 437100, China;
2.No. 1 Middle School of Tongcheng County, Tongcheng 437400, China)
Abstract: Computational thinking is a way of thinking based on the ability of calculation and thinking. It is a basic skill that everyone needs to have, and it is also a way for human beings to solve problems. The task-driven teaching method is to set the teaching content of the course as interesting and challenging tasks that are closely combined with the teaching content. The teaching method introduced in this paper is a combination of computational thinking and task-driven teaching method.It can better train students thinking mode, stimulate students enthusiasm for learning, thus achieving better teaching results.
Key words: computational thinking; way of thinking; task-driven; course of compiler principles