面向初中生Python编程的教学设计与实践研究
——基于项目式教学视角

2020-09-05 02:06孟杰龚波沈书生
数字教育 2020年4期
关键词:编程教学模式思维

孟杰 龚波 沈书生

(1.南京师范大学附属中学 新城初级中学怡康街分校,江苏 南京 210017; 2.南京师范大学 教育科学学院,江苏 南京 210000)

引言

1949年的圣诞节,荷兰的吉多(Guido)为了打发节日的无趣,决定开发一种新的编程语言,也就是Python,它语法简洁,极易上手,可以如同“胶水”一样把许多语言黏合在一起,由于它的简洁易懂和跨平台等特点,逐渐受到计算机编程领域的重视,目前已经成为最受欢迎的程序设计语言之一。

随着Python语言的逐渐强大,不少教师开始挖掘它的教学价值,将其引入到中小学的编程课中。在编程课中如何把握学科素养,提升学科思维,尤其是计算思维,成为教师们需要思考的问题。项目式教学作为提升学生实践动手能力和积累项目实践经验的有效途径和方式,开始进入到教师的视野。

一、项目式教学与编程教学的关系

项目式教学是一种围绕项目展开的教学模式,对学生而言,是围绕真实的情境开展学习,提升自我学习和实践创新能力;对教师而言,则是借助项目完成的过程,收集学生的成长数据,感受学生的集成性智慧,实现教学相长。

(一)项目式教学的内涵

何克抗[1]认为项目式教学是在建构主义的指导下,对传统的教学内容进行重新整合,将需要掌握的内容知识划分为独立的教学项目,并在每一个教学项目中设置不同的任务。胡舟涛[2]提出项目式教学就是学习者以某一个具体的学习项目为中心,通过实践体验、探索创新等方式,获得较为完整而具体的知识。宋朝霞[3]认为项目式教学是通过一系列完整的教学项目,以任务为导向,以培养学生的专业技能为教学首要任务的教学模式。结合以上研究可以发现,项目式教学是以项目为主线,学生为主体,教师为引导,立足知识内容,包含多个学习任务的一种教学模式。

(二)项目式教学的特征

项目式教学要求理论结合实践,应当具备以下特征:一是真实的项目情境。建构主义理论认为,学习是学习者基于自身的经验,通过同化、顺应等方式,与外界发生交互,实现从未知到已知的跨越,从而构建新的知识网络。因此,项目式教学构造的是真实、有意义的具体问题。二是具体的学习任务。项目式教学以任务驱动为主,关注项目完成的过程。在一个完整项目中,学生需要完成一系列的子项目,而这些子项目中都包含了具体的学习任务。三是多样的学习方式。项目式教学鼓励学生主动参与,合作学习,致力于培养学生处理、分析、应用信息的多种能力,需要学生运用多样的学习方式,如协作学习、探究学习等,从而达到解决问题的目的[4]。四是多元的学习评价。加德纳认为智力应该包含多样的内容,如语言智力、音乐智能等。项目式教学需要教师摆脱原有的评价方式,转而从多元的角度,发现和开发每个学生的智力强项[5]。五是多变的师生角色。当前社会,信息化飞速发展,协作的手段日益先进,教师不再是传统的授课者,而变成引导者。而学生作为数字土著,亦可能掌握了更有效的交流手段,此时,在一定的场景下,学生就会担任传授的角色,而教师则成为学习者。

(三)Python编程中实施项目式教学的价值

Python编程中实施项目式教学,需要从学生和教师两个角度思考。

1.立足核心素养,关注计算思维

《中国学生发展核心素养》文件,指明了学生应具备的,能够适应终身发展和社会发展需要的必备品格和关键能力。文件对信息技术学科的核心素养也进行了解释,包括信息意识、计算思维、数字化学习等。其中,计算思维,即运用计算机科学的基础概念进行问题求解、系统设计、人类行为理解的一种思维方式[6],主要是通过算法与程序设计模块进行培养的。

目前,对于一般问题,计算机的计算性能已经不再是求解问题的瓶颈,有关计算思维的实践才是大部分学生需要的体验。在实践中,思考如何将计算问题转化为计算机程序,成为Python编程课必须解决的问题。项目式教学可以将计算问题包装为有趣的社会化问题,帮助学生实现从计算思维意识到方法,再到能力的转变,让学生掌握利用计算机解决计算问题的通用方法。

2.依托真实问题,实现教学相长

当前中小学教师的编程水平普遍不高,但是“算法和编程”的模块,却在其课程标准中占有重要的地位,因此教师必须立足已有的教学方法,寻求一种有效的教学模式。而项目式教学以真实情境、协作化的特点,在Python编程教学中,展现出了独有的优势。情境化的项目,可以激发学生的探究热情;多样的学习方式,可以削弱学生的畏难情绪。

在项目完成过程中,教师不仅需要帮助学生搭建“脚手架”,而且要根据学生的学习情况,收集、分析生成性的问题,调整教学航线,因此教师不得不随时补充自我的知识脉络图,当然,学生的集成智慧也扩充了教师的知识库。在项目实施过程中,教师不再仅限于引导者,也成为学习者和协作者。

二、Python编程课中的教学模式设计

面向Python编程开展项目式教学,首先需要关注学情,从学习者的角度去思考,然后根据学习目标,落实学习过程,提升学生计算思维。

(一)设计原则

在Python语言的项目式教学中,不仅要关注学情,还要分析编程语言的特点。

1.结合学情,师生共导

初中学生处于青春期,好奇心强,喜欢探索,尤其是以自我为中心的建构活动。在这一时期开展教学,要充分考虑学生学习动机的启发和学习兴趣的持续性。因此在教学过程中,需要设计学生感兴趣的情境,让学生能感受到学以致用和学习的成就感。另外,这个阶段的学生自我意识强,喜欢掌控自我,但是能力又不足,所以需要教师和他们一起主导学习的节奏。

2.先易后难,激发兴趣

江苏省教材中,原有的编程板块是VB,它具有可视化的设计平台,相较于Python,VB作为入门的编程语言,可能更易让学生接受。但是Python简洁清晰的语法和结构,又是其他语言无法替代的。在实际教学中,如何实现Python的入门呢?考虑到学生在小学阶段接触过Logo语言,这与Python中的绘图模块,在概念和编程方法中具有相似性,恰好可以作为切入点。这样不仅削弱了学生的畏难心理,也可以帮助学生实现知识的同化、顺应。从了解Python,到体验绘图,再到使用Python解决实际问题,不仅提升了学生的编程兴趣,也在潜移默化中培养了计算思维。

(二)“目标—任务”教学模式

结合初中生年龄特点和Python编程的语言特点,笔者认为Python编程的项目式教学模式可以如图1所示。从学习目标出发,结合内容,借助层级任务的实现,实现思维的提升,即“目标—任务”模式,包含五个步骤。第一步,基于课程和教材,分析学习内容,确定学习目标;第二步,根据内容,设计导入课;第三步,说明和分解项目任务,帮助学生明晰每一个子任务的内容和要求;第四步,根据层级子任务,重组课堂学习,设计多样的学习任务,主要使用的是任务驱动和学习单,以从帮助学生完成围绕知识点的层级相关任务,最终指向项目子任务的实现。在此过程中,可以采用半成品的教学策略。第五步,学生探究合作,完善项目任务。

图1 面向初中Python编程的项目式教学模式

三、案例设计与实施

教学的实施,是在分析教学要素,如学情、编程语言特点、教学安排等的基础上,制订切实可行的教学计划,并根据学习内容,开展教学。

(一)教学计划

为从教材出发,笔者首先分析和对比了七年级信息技术苏科版和青岛版教材在程序设计单元的知识结构,发现无论是VB编程还是Python编程,都包含了输入输出命令、变量、条件语句、循环语句、自定义函数(通用过程)等知识,不同之处在于算法部分,青岛版是单独列出,而苏科版是与程序设计融合在一章。考虑到学生已经学习了算法章节,掌握了判断、循环结构,因此在实际的教学中,直接从Python编程起步。

另外,为增加学生对Python编程的兴趣,笔者借鉴了Logo语言的特征和VB的可视化平台的特点,从海龟绘画模块进入,并嵌入了变量、分支语句、循环语句等知识,让学生先对Python编程有一个感性认识。之后从学校的智能图书柜入手,引入了图书管理系统。教学计划如表1所示。

表1 Python编程项目式教学进度表

(二)实施策略

围绕项目化的Python编程教学不仅强调项目作品的生成,也要关注每节课的学习任务,让学生通过完成不同的任务,掌握相关的编程知识。在此过程中,可以借助多样的学习形式,帮助学生攻克学习重难点。另外,明确的学习单和半成品的任务,可以作为学生的“脚手架”,帮助其顺利实现知识结构的同化、顺应。

1.项目作品引领层级任务

要想确保项目作品的最终实现,需要在教学过程中,要时刻关注项目主线,但对于初中生来说,独立地完成单元项目,难度很大。而且由于Python编程的特殊性,学生需要完成一些子任务来掌握基础知识。项目作品分解如图2所示(见下页)。本单元项目为智能图书柜系统,笔者首先借助流程图,帮助学生梳理程序,然后分解相关知识点,帮助学生明确学习内容,形成“项目任务引领层级任务”和“学以致用”的思维意识。

图2 项目作品知识点分解

2.学习单明晰任务逻辑

考虑到Python编程学习的特殊性,需要先夯实编程基础知识,再进行项目整合。因此,必须在课堂教学中借助学习任务,帮助学生掌握完成项目需要的知识,在这个过程中,可以使用学习单作为“脚手架”,一方面帮助学生明晰学习任务的逻辑结构,根据学习单要求开展学习活动,另一方面帮助学生反思学习过程,调整学习方向和节奏。学习单样例如表2所示。

表2 For循环语句学习单

当然对于初中生来说,只有学习单是不够的,还需要适当的讲解和帮助,如“知识点加油站”“学习网站”等。

3.半成品辅助任务成型

在中小学开展Python编程教学,并非培养计算机专业的预备生,而是借助这样一种高级语言,培养学生的计算思维。半成品策略(即在学习过程中,提供“待完成”的作品)作为一种辅助式的教学方法,可以减少学生在编程语言和技巧上的耗时,增加他们的软件开发体验[7],激发程序设计的乐趣。实践发现,应用项目式教学,必须考虑初中生的能力状况,他们尚不具备独立完成所有子任务的能力,因此在具体的学习任务中提供半成品,可以有效地提升学生的学习效率。

4.多样形式助推作品生成

项目式教学中,学生面对的是半结构化或者非结构化的问题,需要在多节课中围绕同一类的问题开展学习[8],必须要借助师生交流、生生交流等方式,所涉及的学习和教学形式,包括但不限探究式学习、合作学习等。考虑到初中生初次接触Python编程,基础比较薄弱,因此在项目式教学之初,小组学生需要先独立掌握基础知识,如Python中的变量、判断、循环等。在学生能够熟练地应用编程,完成小任务后,再合力完成项目化大作品。这样既可以帮助学生夯实编程基础,又可以避免边缘人的出现。

四、结语

在中小学信息技术编程教学中,教师对知识和原理一般都能较为正确地把握和传授,但是往往忽略其学科思维的培养,尤其是对计算思维的强调。在初中Python编程课中实施项目式教学,可以实现学生在真实的情境中,学技术,用技术,培养信息技术学科思维,特别是计算思维,养成用学科知识解决实际问题的习惯。只有这样,学生才能在这个飞速发展的信息社会中,更好地生存与发展。

猜你喜欢
编程教学模式思维
思维跳跳糖
思维跳跳糖
思维跳跳糖
群文阅读教学模式探讨
“思”以贯之“学、练、赛、评”教学模式的实践探索
思维跳跳糖
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程