蓝调解码(学写作的典范!)|陈鸥辉老师作品(含写作点评)
《中国信息技术教育》2021.1蓝调解码专栏发表
点评内容为本号分析,发表中无此文字
用半成品深化项目学习真实性特征的设计方法
——以《我的生涯规划》项目学习为例
陈鸥辉
湖南省株洲市第二中学
【点评】1.题目很具体,针对真实特征很明确,不是想解决项目学习的所有问题,这很重要。有些题目往往想一网打尽,如“项目学习在---的应用”,就浮光掠影。2.对PBL的关键特征进行描述,而不是定义重复。指出本文关注的问题、原因,引出策略,解决单纯实例让人看不清晰意图的弱点。
【项目设计背景】
2020年下学期,为更好地落实新课程理念以及课程目标,我校信息技术教研组以高度的敬业精神来研讨实践每一堂新课。结合现在非常火的课程《生涯规划》尝试这个项目主题进行程序设计基础教学,整个项目共计8课时。在结合教学过程中,也遇到了不少困惑,最终通过反思改进,有了这张经实践后改进的项目规划图。
【点评】对课例、课时交待清晰。个人观点,课时数可以根据不同学校周课时安排适当调整,也可以先自行进行基础知识学习之后再对本项目进行精简,在2-4课时间完成。
【项目实施过程】
项目的改进主要在顺序结构的教学当中,需要2课时让学生按3-6人一组进行分工合作来完成整个项目中各个模块相关的性格心理测验自动化的设计。
1.选择结构程序的教学(2课时)
用选择结构实现生涯规划相关测验的自动化一共2课时。
为了保证教学效果,测验自动化需要教师提供足够的半成品程序代码,利用半成品加工策略来协助学生完成。以下为提供给学生的用选择结构实现《性格心理测试》自动化的程序半成品参考代码。
#第一题设置代码如下
print('1、你更喜欢吃那种水果?\nA、草莓 B、苹果 C、西瓜 D、菠萝 E、橘子 ')
ans = input('请输入你的选项:')
if(ans=='A'):
s+=2
elif(ans=='B'):
s+=3
elif(ans=='C'):
s+=5
elif(ans=='D'):
s+=10
elif(ans=='E'):
s+=15
else:
print('你输入的选项有错,请重新运行程序测试!')
print('你目前的积分为:',s)
#中间2-15题请同学们自行补充完整。
else:
print('你输入的选项有错,请重新运行程序测试!')
print('你目前的积分为:', s)
点评:提供具体又有空间的半成品,对学生学习减轻负担,突出分支的核心价值。对文章来说,提供程序局部,也是利于读者应用,避免有些文章的说的很好,就是不告诉你怎么做,那就虚了。
从代码中看出,各种测验半成品有机地将选择结构知识与项目《我的生涯规划》中的各大分工模块中的不同测验自动化有机地结合起来了。测验题中的每一道题都是一个完整的多重选择结构,通过一套完整的测验自动化实现,可以让学生深刻地理解选择结构的语法知识的同时,又能通过测验了解《我的生涯规划》不同模块的相关知识。
本程序完成后,一共有251多行代码,每一道题目都要单独写一个多分支结构,学生通过这个测试自动化实现,可以迅速体会到程序设计的实际应用价值。同时,该学习内容又与他们的现实学习生活需求紧密地结合在一起,极大地激发了他们的学习兴趣。学生通过自动化设计来完成自己感兴趣的各种测试来了解自己之后,又为完成《我的生涯规划》打下了基础。
【点评】分析程序的特点、意义,描述学习的方式、作用,针对内容来说,具体分析出了程序的价值。不能像有的文章空对空,只说好处,哪里的好处说不具体。
2.循环结构程序的教学(3课时)
(1)问题引导,突出项目真实性
在进入单层循环结构学习前,由上堂课留下的问题引出循环结构的教学。即采用问题导入,启发寻找高效算法:“上次课的《性格心理测试》的15道题用选择结构实现测试自动化时同学们写了251行代码,如果测试题有100道甚至更多怎么办?”
(2)半成品代码补充,推进项目实施
通过指导学生采用“循环结构程序”,可以将15个选择结构改为如下简短的代码实现,而题目个数不管多少个,都只需要这样简短的代码就能实现。在教学实践中,能力强的学生可以在课堂上独立完成三个测试代码。
s=0 #统计得分的总和数
with open('参考作品:性格心理测试题.txt', 'r') as f:
data = f.readlines()
data=[x for x in data if x!='\n']#去掉多余的空行
for i in range(0,len(data),2):
print(data[i])#每道题的标题
print(data[i+1])#每道题的选项
ans = input('请输入你的选项:')
if (ans=='A'):
s+=2
elif (ans=='B'):
s+=3
elif (ans=='C'):
s+=5
elif (ans=='D'):
s+=10
elif (ans=='E'):
s+=15
else:
print('你输入的选项有错,请重新运行程序测试!'
print('你目前的积分为:',s)
在这段代码的教学过程当中,教会学生利用文本保存数据、读取数据,从而可以利用循环结构将各个不同的选择题简化为循环读取出来。不仅解决了上一次遗留下来的问题,彰显出循环结构程序的自动化功能,很好地落实计算思维;同时又为下一次课进行多重循环探究打好了基础。另外,也为第五章大数据的学习埋下一个知识基础,因为在大数据读取的时候,需要涉及到记事本存读数据的同时引出数据库知识的需求。
【点评】过程很清晰,解决真实问题,与题目呼应起来,不能题目是题目、内容是内容,那才是写文章的忌讳。
for i in range(0,len(data),2):
print(data[i], data[i+1]) # 每道题的标题与选项
t=[t[0] for t in data[i+1].split()]#得到选项答案
ans = input('请输入你的选项:')
while ans not in t:#如果选项没有,则要求继续输入
ans = input('请输入你的选项:')
以上代码为参考作品代码,学生需要根据第一次课顺序结构教学时所完成的小组分工模块去完善不同测试自动化,部分小组分工测试题如学习潜能、人格、性格等测试,学生可根据需要补充或删减测试题。
【点评】课堂生成能更真实体现出教学过程,对文章来说课堂发生与问题解决就体现出设计的优化。
最后一节课,突出生涯规划项目应用,让学生利用同组同学完成的不同模块的测试题进行自测:让学生充分享受合作分享的快乐,同时也能根据测试分析进一步认知自我,最后参考测验分析结果结合自我要求完成《我的高中生涯规划表》,本项目教学到此全部完成。
【项目教学反思】
我们在《第四章程序设计基础》的项目实施的过程来看,学生完成的效果良好,大部分同学都非常有兴趣完成项目代码并提交最后的项目作品。对于选择结构与单层循环结构的教学内容,我们教研组在市里进行了研讨课展示,在研讨的同时有教师提出我们的教学没有进行明显的分组,所以本教学设计是改进的教学设计,加入了分工合作的小组模式来组织教学。
反思发现,本次课的教材上有两个细节需要订正,一个是教材中单分支结构试题的流程图为多重分支流程图;另一个为循环结构中的“for value in列表”,其列表最好改为序列,for循环可以遍历各种序列如列表、字符串、字典等。另一个是,学生的层次分化非常明显,在测验自动化的完成过程当中,有学生能够一次课完成三个,也有学生一个都出现各种问题,所以小组分工的同时还要提倡小组合作,尽量发挥小组长带头作用,提倡组长教会组员而不是帮组员去完成分工任务。
总的来说,测试自动化完成率比我期望的要高得多,有学生竟然开始试图设计自己的测验,大部分学生能够完成完整的测验自动化,从学生的作业完成情况来看,学生对程序的应用实现兴趣较高。编程本身并不值得诟病,纯粹抠语法的编程教学才值得诟病,如果有一种程序语言非常简单实用,能够让学生很快就上手,并设计实用的应用程序,本身是一件非常有意义有成就感的事情。作为技术课程,立足于课程本身的价值是必不可少的。
【点评】教学的反思针对内容、问题、改进,不仅仅从效果上自我表扬会更接地气,也更有学术味。