用半成品深化项目学习真实性特征的设计方法

    陈鸥辉

    

    

    

    我们在教学设计时往往会对项目学习望而生畏,在教学实施中常常也手忙脚乱,本次解码就让我们从教学设计与教学实践两方面来探讨项目学习困难的解决之道,用可行的策略、方法与资源让项目教学在课堂上得到良性孵化和优化发展。

    项目式学习(PBL)是一种动态的学习方法,学生们通过PBL主动探索现实世界的问题和挑战,更深刻地学习知识和技能。目前,项目学习出现的重大问题之一是内容的虚拟化,即把操作任务、假设背景或数学问题作为简单的项目进行学习,这其中的原因很多,如学时安排、内容缺乏、项目过大不易操作等。利用半成品加工策略,可以更容易地解决项目学习的前、后困难,突出核心问题,突出项目学习的真实性特征,让学生在项目活动中学有所用、用中能思、思中成长。

    ● 项目设计背景

    2020年下学期,为更好地落实新课程理念以及课程目标,笔者所在学校的信息技术教研以“生涯规划”课程作为项目主题尝试进行程序设计基础教学,整个项目共计8课时。在教学过程中,遇到了不少困惑,最终通过反思改进,有了如图1所示的项目规划图。

    ● 项目实施过程

    项目的改进主要在顺序结构的教学当中,需要2课时让学生按3~6人一组进行分工合作来完成整个项目中各个模块相关的性格心理测验自动化的设计。

    1.选择结构程序的教学(2课时)

    用选择结构实现生涯规划相关测验的自动化一共2课时。为了保证教学效果,测验自动化需要教师提供足够的半成品程序代码,利用半成品加工策略来协助学生完成。下页图2为提供给学生的用选择结构实现《性格心理测试》自动化的程序半成品参考代码。

    从代码中看出,各种测验半成品有机地将选择结构知识与“我的生涯规划”项目中的各分工模块中的不同测验自动化有机地结合起来。测验题中的每一道题都是一个完整的多重选择结构,通过一套完整的测验自动化实现,既能让学生深刻地理解选择结构的语法知识,又能通过测验了解“我的生涯规划”项目不同模块的相关知识。

    本程序完成后,一共有251行代码,每一道题目都要单独写一个多分支结构,学生通过这个测试自动化实现,可以迅速体会到程序设计的实际应用价值。同时,该学习内容又与学生的学习生活需求紧密相关,极大地激发了他们的学习兴趣。学生通过自动化设计完成感兴趣的测试来了解自己,为完成“我的生涯规划”项目打下了基础。

    2.循环结构程序的教学(3课时)

    (1)问题引导,突出项目真实性。在进入单层循环结构学习前,由上节课留下的问题引出循环结构的教学,即采用问题导入,启发寻找高效算法。

    (2)半成品代码补充,推进项目实施。通过指导学生采用“循环结构程序”,可以将15个选择结构改为如下简短的代码实现(如图3),而题目个数不管多少个,都只需要这样简短的代码就能实现。在教学实践中,能力强的学生可以在课堂上独立完成三个测试代码。

    在这段代码的教学过程当中,要教会学生利用文本保存数据、读取数据,使其可以利用循环结构将各个不同的选择题简化为循环读取出来。这样不仅解决了上节课遗留下来的问题,彰显出循环结构程序的自动化功能,很好地落实计算思维,而且为下一节课进行多重循环探究打好了基础,另外,也为大数据的学习奠定知识基础。

    (3)修订程序,优化项目价值。在教学过程中,要注意通过修订、优化程序来体现项目学习在真实发展中的价值。例如,在单层循环结构代码中,留下了两个明显的BUG,但是有少数学生在上循环嵌套前就提出来了。在上课前经过引导,大部分学生能够回答出来以下两个问题:①如果在测试的时候不小心选错了怎么办?②《性格心理测试》的每道题的选项都是ABCDE吗?

    首先,要解决用户输错答案后不重新运行程序的问题,需要在for循环中加入while循环判断用户输入是否正确,所以自然而然就进入了循环的嵌套结构知识的学习。其次,通过讲解每道题的选项不同的知识点,既可以回顾教材上最早涉及的语句知识列表、字符串以及in、not in等运算符,又可以通过实践加深学生对知识点的理解进而掌握其应用价值。解决两个BUG后的代码如图4所示。

    以上代码为参考作品代码,学生需要根据第一节课顺序结构教学时所完成的小组分工模块去完善不同测试自动化,部分小组分工测试题,如学习潜能、人格、性格等测试,学生可根据需要补充或删减测试题。

    最后一节课,突出生涯规划项目应用,让学生利用同组同学完成的不同模块的测试题进行自测:让学生充分享受合作分享的快乐,同时也能根据测试分析进一步认知自我,最后参考测验分析结果结合自我要求完成《我的高中生涯规划表》。本项目教学到此全部完成。

    ● 项目教学反思

    从项目实施的过程来看,学生完成的效果良好,大部分学生都非常有兴趣完成项目代码并提交最后的项目作品。对于选择结构与单层循环结构的教学内容,笔者所在教研组在市里进行了研讨课展示,在研讨的同时有教师提出教学没有进行明显的分组,所以本教学设计是改进后的教学设计,加入了分工合作的小组模式来组织教学。

    反思发現,教材上关于本次课的内容有两个细节需要订正:一个是教材中单分支结构试题的流程图为多重分支流程图;另一个为循环结构中的“for value in列表”,其列表最好改为序列,for循环可以遍历各种序列如列表、字符串、字典等。

    另外,学生的层次分化非常明显,在测验自动化的完成过程当中,有学生能够一次课完成三个测试,也有学生一个测试都出现各种问题,所以小组分工的同时还要提倡小组合作,尽量发挥小组长的带头作用,提倡组长教会组员而不是帮组员去完成分工任务。

    总的来说,测试自动化完成率比笔者期望的要高得多,有学生已经开始尝试设计自己的测验,大部分学生能够完成完整的测验自动化,从学生的作业完成情况来看,学生对程序的应用实现兴趣较高。编程本身并不值得诟病,纯粹抠语法的编程教学才值得诟病,如果有一种程序语言非常简单实用,能够让学生很快就上手,并设计实用的应用程序,那么其本身就是一件非常有意义有成就感的事情。作为技术课程,立足于课程本身的价值是必不可少的。