APP下载

构建以“理解”为核心的逆向设计信息课堂

2018-06-16沈姣娜

教育界·下旬 2018年1期
关键词:VB程序设计逆向设计理解

沈姣娜

【摘要】作为信息时代的原住民,学生面对的是爆炸性增长的知识量,这对学生的“理解”层次提出更高要求。教师在教学中尝试应用“逆向设计”,引导学生在体验中理解概念,在理解中提升素养,从“抓住核心,确定目标”“呈现理解,制定任务”“设计活动,体验学习”这三个方面来有效开展教学,通过作业统计和问卷调查来分析总结实践成效。

【关键词】逆向设计;理解;VB程序设计

一、问题的提出

对话背景:

九年级VB教学课堂,学习内容是第五课《顺序结构》。学生已经在窗体上添加了文本框控件,并将文本框的Text属性设置为“空”。

师:请同学们来看一下这句代码a=Val(text1.Text)。这句代码中前面的text1代表什么?后面的Text代表什么?

生1:我英文不好,看不懂。

生2:这个代码之前也没有学过,我不知道。

……

在VB程序设计教学中,教师明显感觉到界面设计部分学生之间的差异不大,但是一涉及代码,学生之间的差异就很明显。大部分教师会把原因归结于部分学生习惯太差,或者说他们太笨了。的确,程序设计要求学生对所学内容必须有更深层次的理解。在上面的例子中,很明显不能回答出问题的学生在之前学习命令按钮和Caption属性时,没有理解对象、属性等概念,也就没有进行知识迁移、学习新内容的能力。编程教学能有效地培养学生的逻辑思维、计算思维、创新思维,同时对学生的“理解”层次也有了更高的要求。

作为信息时代的原住民,学生面对的是爆炸性增长的知识量。学生的学习重心不再是对知识的记忆,而是要通过“理解”构建知识体系。教师不仅仅要让学生明白、知道所学的知识和技能,更要培养学生类推、迁移、应用的能力,发展核心素养,作为终身学习的手段。理解是创新的前提和基础,是发展学生核心素养的必要条件。

在信息课堂上,教师常常忽视对学生知识体系的构建,使得所学新旧知识无法产生联系。创建一个交织的、整合的知识体系,要求学生对知识深刻“理解”。目前信息课的主流设计方式是以“内容导向”的,就是先根据教学内容、学情分析来设计教学活动,布置课堂任务。我们从“输入”思考教学,关注的是我们要“教”什么给学生。学生在学习的过程中往往是被教师带着走。对一般的学生来说,为什么要进行这些操作?这跟之后的学习有什么联系?他根本回答不出或者他根本没有考虑过这些问题。显然,这部分学生需要教师通过有效的教学,帮助他们建立起知识体系。

如何构建追求理解的信息课堂?在《追求理解的教学设计(第二版)》一书中,作者提出了“逆向设计”的概念和方法。“逆向设计”的教学方式关注的重点是学生的“学”,是以“结果导向”的。它主要分为三个阶段,首先制定教学目标,即学生学习后能理解什么;然后根据目标确定评价任务,教师要思考通过什么来证明学生达到了预期的理解;最后根据预期的结果设计教学活动。通过这种方式,学生很明确自己要学什么,学习结果要达到哪种程度,也知道通过哪些活动能够帮助自己理解,对学习目标和学习过程都非常清楚。

图1 逆向设计的三个阶段

二、逆向设计在VB教学中的实践应用

(一)抓住核心,确定目标

制定学习目标,就是要确定学习中学生要理解的内容及学生能达到的程度。在常态教学目标的设计中,教师通常会着眼于一节课的内容,所教内容处于零散的状态,不利于学生架构知识体系。我尝试通过分析本册书或本单元的总目标,再来确定本节课中学生要理解哪些核心概念才能支撑后面的学习目标。确定一个学习单元中具有核心价值的内容,通过核心概念将整个学习单元中所学的内容联系起来,知识点则不再是零碎状态。

实现学习目标的主体是学生,很多教师在三维目标的制定中还是经常会出现“引导”“使”“培养”“让”等动词,显然这些动词的主语是教师。制定学习目标,要清楚、明确地体现出学到什么程度,而且应该是可观察、可测量的具体行为。以往的教学目标是给教师自己看的,但是学习目标要向学生公开。学生通过理解目标要清楚地了解这节课要通过哪些活动来学到什么,而且根据目标能够评估自己是否实现了目标。对于核心概念就要上升到理解的程度,具体学习结果可以表现为能解释,会应用,能洞察(即能用全局思想审视问题,用批判的眼光观察问题)。

以第三课《初识Visual Basic》为例,原学习目标:

1.知识与技能目标:熟悉VB程序设计环境;学会对象的创建和删除;了解VB对象、属性的基本概念;了解VB编程的一般步骤。

2.过程与方法目标:通过完成课堂任务,培养学生分析问题、概括和运用的方法。

3.情感态度与价值观目标:培养学生学习程序设计的兴趣,培养学生发现问题、解决问题的能力和创新意识。

存在的问题:

1.核心概念定位得不够准确。对于VB编程而言,贯穿整个单元学习的核心内容为VB对象、属性、事件的基本概念。在这个目标中缺少对事件概念的说明,而且对于对象的创建和删除并不应该属于核心内容,对于熟悉Office操作的九年级学生来说并不能成为本节课的理解目标。

2.出现了部分以教师为主体的词,如“培养学生”“通过学生自己”。

3.对于学习结果的评估體现不够。对于知识技能目标,“了解”不能体现出学习结果的测量性和可观察性,“会写”“会用”“制作”“修改”这些词可能会更恰当。“培养”这一词也不适用于过程性目标,“经历”“体会”“感受”会更加合适。

修改后的学习目标:

1.知识与技能目标:通过解析示例程序,熟悉VB程序设计环境,能够指认出窗体、控件工具箱、属性窗口;通过尝试对示例程序的修改和“程序员冷笑话”程序的创建,能够理解VB对象、属性、事件的基本概念,能说出VB编程的一般步骤,能够修改对象属性,能够说出事件代码的含义。

2.过程与方法目标:通过编写VB程序,体验分析、概括问题的过程,体会面向对象的程序设计过程;通过对评价任务程序的分析,体验发现问题、解决问题的过程。

3.情感态度与价值观目标:通过程序设计,体验程序设计的创新性,感受到学习程序设计的乐趣。

(二)呈现理解,制定任务

评价任务是为检测学生目标达成情况而设计的任务,检测学生学会了没有,学到了何种程度,还有哪些地方没有达成目标。它可以是作品式评价,如修改、制作作品;也可以是试题式评价,如填空题、选择题、问答题等;还可以是表现式评价,如师生问答、演示、展示等。但它必须符合三个要求:描述清晰,学生看得明白;可以具体实施;与学习目标相匹配。对于知识技能目标基本可以用作品式、试题式的评价方式;对于部分过程与方法、情感态度价值观等目标可使用表现式评价,但是对于有些涉及核心素养的目标,那就不是短时间内能直接评价的,它更需要对学生长期的观察和检测,更需要过程性评价方式,或者通过综合性项目任务来评价。

评价任务体现理解的要素:(1)具有情境,我们对理解的知识概念具有迁移能力,能够帮助学生解决新情境下的问题,为任务设置情境,可以评价学生分析、解决问题的能力,能够帮助考查学生的综合素养;(2)包含目标中的知识和技能,如果所含的知识点越多,情境设置得越复杂,任务的难度系数就越大。

仍以第三课为例,通常我们的任务设计为:

任务一:分析任务,设计界面

1.按照示例要求,请同学分析一下窗体中出现哪些控件?

2.新建工程,设计程序界面,并设置好控件的属性值。

3.尝试修改Command1命令按钮的其他属性,观察按钮的变化。

任务二:编写代码

为按钮点击事件,添加“显示文字”的事件代码。

任务三:调试运行,保存文件

1.运行程序检测运行结果。

2.保存工程,并生成可执行文件。

提升任务:在窗体上添加“清除”命令按钮,单击该按钮时,清空Label1中的内容。

存在的问题:

上述的任务设计是信息课堂上的一种常态,设计的任务既作为学习任务也作为评价任务,通过教师讲解或通过学生探究学习来完成任务,检测学生对知识点的掌握程度。但是从实际情况来看,学习的功能大于检测功能。在基础任务完成过程中,一般是都是这两种情况:一种是教师或学生演示,学生模仿操作;另一种就是借助教师的帮助文件(任务书、帮助文档、微课视频等)学生自行探究学习,但是在完成过程中也得到了教师的很多帮助,所以这样的形式并不能完全体现学生的真实掌握情况。虽然有“提升任务”的检测,能让学生自行分析新情境下的任务,再运用所学解决任务中的问题,对学生理解“核心概念”,构建知识体系的确有很大的帮助,但是这个“提升任务”体现的是分层教学,并不是对全体学生作同样的要求,它只能对部分能力强的学生起到评价提升的作用。这就造成能力较弱的学生并不能通过任务来正确地评价自己的学习情况,也造成了两极分化的问题日益严重。逆向设计强调评价型任务的设计,可以把原有的任务作为学习任务,再增加针对学习目标的评价任务,让全体学生对自己的学习情况都有所了解,并能在以后的学习中设立一个调整改进的方向。

任务修改后:

教师展示示例程序“欢迎来到精彩的VB世界”。

学习任务一:分析任务,设计界面

1.按照示例要求,请同学分析一下窗体中出现哪些控件?

2.请参考微课视频1新建工程,设计程序界面,并设置好控件的属性值。

3.尝试修改Label1标签的Alignment、ForeColor属性,观察标签的变化。

学习任务二:编写代码

请参考微课视频2为按钮点击事件,添加“显示文字”的事件代码。

提升任务:添加“清除”命令按钮,单击按钮时,清除标签中的文字。

学习任务三:调试运行,保存文件

1.运行程序检测运行结果。

2.保存工程,并生成可执行文件。

评价任务:

1.分析图2中的窗体和属性窗口,窗体中出現的是______控件,控件的名称是_____________,控件的Caption属性值是____________。

2.分析程序填空。

(1)“程序员冷笑话”这一VB程序最初的界面显示为图3-1,点击命令按钮后显示为图3-2。其中命令按钮点击实践添加了一行事件代码Label1.Caption=“_____________”。

请问横线上应填写什么内容?

(2)小明在运行程序时发现,点击命令按钮文字没有变化,查看代码显示为

Private Sub Label1_Click()

Label1.Caption=“敲一下回车。”

End Sub

请问在________________事件发生后能显示“敲一下回车。”

(三)设计活动,体验学习

信息课中教师常常会陷入一个误区:概念并不重要,只要学生会操作就可以了。但这样的操作是机械式的,学生并不知道为什么要这么做,没有举一反三的能力。在学生的学习设计中,教师要把握的原则是不要将自己的理解告诉学生,而是让学生在活动中体验和探究,在一次次发现问题、解决问题的过程中产生自己的理解。也会有教师觉得,我们在设计活动时,要强调学生自我探究和发现,应该完全摒弃讲授法,但是一些不会引起误解、直观的知识技能并没有探究的意义,讲授法反而更高效。如何才能设计合理的学习方案,让学生在活动中实现深层次的理解?笔者尝试了以下四种策略。

1.以核心概念为重点,避免无意义的探究。

设计界面部分原教学设计:

在学生完成了任务一“设计程序界面,设置控件属性”之后,又有一个新的操作任务:尝试修改Command1命令按钮的其他属性,观察按钮的变化。

存在的问题:

在属性窗口中,能设置命令按钮30余种属性,学生在尝试各种属性的修改中花费了比较多的时间。如果想让学生尝试操作,加深对属性概念的理解,笔者认为再增加1-2种足矣;如果是为了熟悉各种属性的作用,那这样的尝试收效甚微,属性类型太多,学生一一尝试并不会留下多少印象。而且在之后的属性设置过程中,无论是通过属性窗口还是通过代码,属性名称和属性值都可以通过属性窗口或百度搜索了解到相关的信息,而不需要去记忆。这部分教学的核心任务应重点关注学生对属性概念的理解和设置属性的两种方法的理解。所以在改进的设计中,笔者认为在学生操作完属性的设置后,可以对对象、属性、属性值做一个归纳性的总结,加深对概念的理解;引入学生熟悉的科学中的属性概念,进行类比,帮助学生建构新知识。

修改后:

教师讲授:VB中的对象、属性名、属性值,从根本上来说和科学中的类似。比如水的化学式名称为H20,它有很多属性,例如气味、颜色、沸点等,那对应的属性值就是无味、无色、100摄氏度。

尝试修改Label1标签的Alignment、ForeColor属性,观察标签的变化。

2.由问题引发学生学习需求。

编写代码部分原教学设计:

师:接下来我们要为程序编写代码,大家回想一下,老师刚才的一个什么动作,促动了程序界面的变化?

生:点击按钮。

师:所以我们要把事件代码添加在单击命令按钮事件处理过程中。现在请大家双击按钮,在代码编辑窗口,添加一条事件代码。

教师巡视,学生操作。

生:老师,我的程序运行后,点击命令按钮没有反应。

生:我的也是。

教师再次强调要把事件代码加在Command1_Click()事件中。

存在的问题:

对于易错的问题,教师更要让学生弄清楚,搞明白,从根源上理解才能解决问题。如果教师反复强调该怎么做,学生只是按部就班,而不理解为什么要这样做,那么学生这个操作体验就不能归入自己已有的经验,内化成自己的知识。所以在后面几节课中,添加事件代码还是经常有学生犯同样的错误。另一方面,教师把自己的经验告诉学生,让学生只是记忆性地学习教师的经验,并没有调动学生内在的学习需求,这样的学习是被动的。在学习新知识前,教师要设置问题或者在实践过程中让学生自己发现问题,引发学生学习的动机,引领学生探究学习,追求深层次的理解。

修改后:

先尝试对比分析代码,然后再添加代码。

下发两个可执行程序,一个是由点击命令按钮事件触发代码的执行,另一个是由点击标签事件触发代码的执行。

师:现在我下发两个可执行程序,请同学们试一试,你分别做什么操作能引起标签文字的变化?

学生尝试操作,并回答问题。

生:点击命令按钮和点击标签。

师:接下来我们对照分析一下它们的代码有何不同。

生:代码添加的位置不同,一个是Command1_Click()单击命令按钮触发的事件,另一个是Label1.Click()单击标签触发的。

通过这样的对比操作,学生对“事件”的概念又进一步加深理解了,在后面的代码添加过程中,自然而然地就会关注到添加位置正确与否,而不用教师反复强调,提高了任务的完成度,也提升了教学效率。

3.先实践操作,后理论学习。

很多学生都觉得学习编程很难,主要原因是代码是抽象的,没有之前学习软件的应用那样具体直观,另外英文的编程环境让英语基础较差的学生感到很头痛。例如在讲解设置标签文字的代码中,通常教师是直接讲解代码的含义,初次学习代码的学生就很难理解。在讲解Label1.Caption=“”这一代码前,先在属性窗口中设置Caption属性,并在表格中记录下来,让学生把具体的界面图像与“Caption”这一单词建立起联系,并且通过表格的填写,也让英语较差的学生对“Caption”有一个印象,至少能知道它是什么;然后在讲解和编写代码前,让学生再进行一次实践操作,让学生尝试运行程序查看界面的变化;然后再让学生修改代码,将Label1.Caption=“”改为Command1.Caption=“”,再运行操作,让学生直观地体验代码的作用,从而理解代码。

4.思维导图,构建体系。

最后在课堂小结的设计中,我们通常的做法是提问“同学们我们这节课学习了哪些内容?”学生回答总结“1、2、3……”学生通过课堂小结能对本节课中所学的内容进行回顾复习,在某种程度上也加深了对知识点的理解。但是这些内容仍旧是零散、孤立的,我们可以通过让学生绘制思维导图(如图4),帮助学生构建完整的知识体系,把这些零散的概念连接起来,形成一个清晰的知识脉络。

三、逆向设计所带来的改变

逆向设计的实践应用,不仅让信息课堂更高效,也让学生的参与度与学习热情都有所提高。学生对于本节课所学的内容和需要达成的目标都清楚明了,不仅乐于学,而且变得更加善于学习,通过核心问题的引导,学会更主动地探究实践,达成学习目标。我们对九年级共8个班的学生进行了作业统计和问卷調查,其中4个班参与实验,4个班按原教学模式上课。对于回收问卷的数据进行统计分析,得出以下对比结果。

从数据中我们可以发现,实验班在基础任务的完成度上略有提升,略大于非实验班;而对于提升任务的完成度有了明显的提升,显示出了优势。在目标达成自评分中,实验班的优势也是存在的。本次作业统计和问卷调查可能还不够全面,比如每个班级中男女生对于这种教学方式的差异性是否也能成为我们调查的内容,有助于我们更全面地认识到逆向设计对教学的影响。

四、困惑与展望

逆向设计的实践时间还不长,在课堂的实际应用过程中还存在许多问题。

第一,对于核心概念的把握,目前主要是通过整个学期的教学总目标和对之前的教学经验进行总结判断,分析本节课的核心概念,但始终觉得定位不够准确,还需要在实践中不断摸索,得出好的策略和方法。

第二,对于评价任务的完成,课堂时间总是显得比较仓促。另外,评价任务目前主要还是通过storyline等软件制作任务书,让学生自行完成,学生可以直接看到测评分数,但是数据不能直接反馈给教师,还需要通过其他渠道进行统计,比如网络考试系统能否更高效地进行评价和统计,还有待实践验证。

第三,课堂小结,绘制思维导图还是不能完全落实,是否应该调整绘制周期,可以一单元绘制一次。

这些问题给笔者指明了后续的研究方向。时代在发展,知识在更新,面对作为信息原住民的学生,我们要努力不懈,追求深度理解,构建追求理解的信息课堂。

【参考文献】

[1]陈明选,包静娟.围绕理解的教学设计:为了理解而教[J].中国信息技术教育,2017(10):4-9.

[2]田莉,唐茜.逆向教学设计视野下的课堂评价:内涵、基本要素与设计思路[J].上海教育评估研究,2015,4(06):1-5.

[3]孙易新.思维导图应用宝典[M].北京:北京时代华文书局,2015:29-49.

猜你喜欢

VB程序设计逆向设计理解
核心置换
偏远地区高三英语学习方法探究
浅析VB程序设计教学方法的改革
逆向设计在高职“模具设计与制造”教学设计中的应用