基于计算思维的“趣味拼图解密”教学设计
作者: 刘灵
摘要:计算思维是解决问题的灵魂,但目前针对学生的思维训练匮乏,为顺利开展教学,作者以趣味拼图解密项目进行实践,所选项目具有趣味性和一致性,学生在解决问题的过程中感受算法魅力,提升计算思维。本文详细描述了凯撒拼图的教学设计并进行反思,希望可以为高中Python编程教学中如何培养计算思维提供有价值的参考。
关键词:计算思维;凯撒密码;高中Python
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2024)08-0039-04
《普通高中信息技术课程标准(2017年版2020年修订)》强调了计算思维的重要作用,具体表现为学生在解决问题时所运用的分解、抽象、算法能力,以及学生能够总结利用计算机解决问题的过程与方法,并将其迁移到与之相关的其他问题解决中。[1]而在目前的教学中,大部分学生存在思维训练匮乏、计算思维不足的问题。计算思维作为一种思维方式,需要在解决问题的过程中不断经历分析思考、实践求证、反馈调试而逐步形成。笔者通过教学实践,发现在具有趣味性和一致性的项目中,学生能在解决问题的过程中充分发展和提升思维。下面,以“凯撒拼图”教学设计为例具体阐述。
“凯撒拼图”内容取自教科版高中信息技术必修一《数据与计算》第3单元“认识数据”中的第四节“加密与解密”,主要围绕3.4中的凯撒加密算法进行课程教学,并以解密拼图为项目主题(如图1),通过学习凯撒密码一系列的算法,完成四块小拼图的解密,从而得到拼图背后隐藏的信息。
拼图初探,小试牛刀
开门见山地给出拼图,点出解开拼图的关键就是掌握凯撒密码算法,学生根据学习资源,自学凯撒密码的历史和加密原理。加密原理如下页图2所示,将英文字母顺序向右移3位,3就是凯撒密码的密钥。假设此时明文是ABCD,那么通过凯撒加密后的密文就是DEFG。
如果要用Python来实现凯撒加密,存在字符和数字不能直接相加的问题。在3.1数据编码中提到ASCII码,ASCII码是用二进制数表示一个字符,体现出字符和数字相互转换的算法。教师可以参照此思路,利用Python中的函数ord,将字符转换为十进制,学生自学ord函数,在初探拼图中输入ord函数将字符A转换为数字的表达式,就得到第一块碎片。
设计意图:拼图开始就抓住学生的眼球,解开拼图的关键就是掌握凯撒密码,将相对枯燥艰深的算法和拼图联系起来,激发学生的学习兴趣;在初探中给一个简单的ord问题,让学生能有一个适应的过程,建立学习自信。
拼图二探,承上启下
有了ord函数的助力,明文字符可以转为数字了,但数字如何转换为密文字符呢?Python中还有将数字转换为字符的函数chr,学生自学chr函数,完成字符移位的半成品代码填空(如图3),将代码运行后的结果填入二探拼图。
在活动中,一方面学生快速掌握了ord、chr函数的用法,意识到凯撒加密算法的实现实际上就是字符和数字的相互转换;另一方面在发现代码运行后,字符X对应的密文[显然不正确,这是因为在凯撒加密的规律中,W的密文对应26个字母中的最末一个字母Z,接下来的XYZ又要重新开始对应ABC,所以会对26个字母的凯撒加密再次进行分情况讨论。
设计意图:二探拼图的解密难度依然不高,可以得到第二块密文碎片;以错引正,承上启下,自然过渡到下一个问题,进而充分发挥学生学习的主动性,启发学生对凯撒加密算法进一步研究。
拼图三探,水到渠成
学生在凯撒加密中分情况讨论,总结出加密的规律:如果明文是大写字母A~W和小写字母a~w,进行ASCII码+3的操作;如果明文是大写字母X~Z和小写字母x~z,就进行ASCII码-23的操作;如果处理的字符不在小写字母和大写字母中,就进行原封不动的输出。
又因为凯撒解密是加密的逆运算,解密规律如表1所示。学生完成凯撒解密的半成品代码(如下页图4),解开qhaw nhb lv wzhqwbrqh密文,得到明文next key is twenty one,将明文输入三探拼图中,得到最后一块碎片。目前,三块拼图碎片拼接起来就是一串密文:Fijrdib tjpmnzga viy ocz zizht dn diqdixdwgz di v cpiymzy wvoogzn。
设计意图:三探拼图的解开需要学生掌握密钥为3时凯撒加密解密算法,难度逐渐提升,让学生对凯撒密码的原理和算法的理解越来越深入,同时也能为课堂营造解密的氛围感;解开后已知破解密钥为21,但仍然存在一段亟须解决的新密文,留下悬念,继续探索。
拼图破冰,一以贯之
已有的知识无法对破冰密文完成密钥为21的解密,所以能不能有一个通法呢?根据凯撒密码的特性,加密实际上就是将26个英文字母向后循环移动key位,对于每个明文字母c和密文字母b,加密公式如下所示:b=(c+key)%26。明文字母c对应0~25的编号,对c+key整除26取余数,保证密文字母b永远在0~25内。
那么,如何给大写明文字母C进行0~25的编号呢?可以将编号和现有的ASCII编码联系起来,通过下页表2会发现编号即当前的字母编码和大写字母A编码的差。
任意密钥是教学设计中最难的部分,通过演示文稿结合板书给学生展示这个算法过程,第一步将字符c转换成数字,板书ord(c),第二步由于c对应0~25的编号,所以计算c和字符A编码之差,板书ord(c)-65,第三步带入公式,板书b=(ord(c)-65 +key)%26,第四步b对应0~25的编号,所以再进行和字符A编码相加,板书b=(ord(c)-65+key)%26+65,最后一步b转换为字符,板书b=chr((ord(c)-65+key)%26+65)。
根据解密是加密的逆运算,解密公式为c=(b-key)%26。小写明文字母a~z求解算法同上,学生完成破冰拼图解密的半成品填空,如图5所示。
设计意图:在通过前面三个拼图确保学生快速准确掌握传统凯撒密码方法的基础上,破冰拼图让凯撒密码更具挑战性,理解任意密钥的关键就是理解通式,所以,通过演示文稿的五步骤和同步板书,简洁明了,带领学生快速获得算法要领。破冰是必不可少且至关重要的一部分,它让整节课更加完整,不是简单地对凯撒密码进行浅显的表面的学习,而是深入内部,洞见底蕴。同时,传递出算法是灵活多变的思想,鼓励学生从多种角度思考问题。
拨云见日,深化主题
最后,拼图里隐藏的信息是Knowing yourself and the enemy is invincible in a hundred battles。如图6所示,学生很快能从英文和背景中知道这是《孙子兵法》中“知己知彼,百战不殆”的英译,这句诗的意思是只要对敌人的情况和自己的情况都有透彻的了解,作战就不会有危险。从中可以发现,信息在战争中的价值非常之高,所以就打响了信息加密战。从罗马帝国的经典加密方式——凯撒密码诞生起,密码学就一直被用作争夺全球主导地位的有力武器,它能深刻影响战争的结果。在现代社会,密码学以保卫者的姿态守护在我们身边,它对个人隐私和公共安全都有着至关重要的作用。学生有兴趣的话可以在拓展资源里了解密码学的相关知识。通过隐藏的信息,点出信息的价值性,深化加密解密在过去、现在和未来的意义,让学生能合理认识和利用密码学,提高信息安全保护意识。
教学反思
1.设置趣味情境,激起学习兴趣
趣味的情境,可以快速抓住学生的注意力,让信息技术的教学变得很容易出彩。本文中设置解开拼图背后的信息情境,以掌握凯撒密码为主线继续解密,寓教于乐,每个学生都是解密的主人公。学生在创意情境下经历从发现问题到解决问题的全过程,在此过程中,不断激起学生探索新知的兴趣,落实学生知识、技能、方法高度融合后的综合运用。[2]
2.明确目标方法,深入分解问题
本文中的拼图项目具有一致性,项目自始至终都就是解决一块拼图,并且解决的方法就是掌握凯撒密码。在明确目标的基础上,教师根据学生的学习规律和学习情况进行分解:第一层自学理解凯撒加密的原理;第二层掌握ord、chr函数,理解凯撒加密的算法,这实际上就是字符和数字的转换;第三层由解密是加密的逆运算,过渡到解密算法;第四层从传统型凯撒密码延伸到通用型凯撒密码。在分解过后,设置相应的任务,符合学生的思维认知。从低阶到高阶,完成一个任务相当于获得一个学习激励,所以在延伸问题深度的过程中,学生能够保持学习的兴趣和主动性。由于任务多而重,课堂时间有限,所以采用了半成品的程序填空形式,降低代码编写难度,重在让学生理解凯撒密码的算法。
3.重构组织方式,加强自主探究
教师是学生项目设计和实施过程中的引领者和咨询者,在教学中,教师应淡化知识的单一讲解,鼓励学生通过自主探究解决项目中的问题。在本文中,在前面两点的基础上,教学设计是流畅通顺的,所以教学实施就可以从教师主导变成教师引导,引导学生串联以往的知识和经验来解决现有问题,如解决字符和数字相加的算法可以类比3.1中文字编码的ASCII码,又如通项公式中的%26是为了让数值在0~25中,类比2.4可以复用的代码中生肖计算时使用到的%12,从而总结取模的规律。鼓励学生在遇到新的问题时,自我探究寻找合适的解题策略,通过联系已有知识,从中得到启发,将其迁移到新问题中来,为要解决的问题指引方向。
所以,教师应积极发现可以运用于课堂教学的趣味情境,对其进行一致性设计,并对目标问题层层分解,逐步深化,重构课堂教学组织方式,让学生在自主解决问题的过程中感受算法魅力,发展计算思维。
参考文献:
[1]郭芮.深度学习算法,提升计算思维——以“青蛙跳台阶”的递归算法为例[J].中国信息技术教育,2023(17):46-48.
[2]朱益.基于问题解决的高中信息技术单元教学设计探索——以“数据问题”单元教学为例[J].中国信息技术教育,2023(07):45-48.