Python教学反思(三)

标签:
工作室 |
分类: 教学 |
本学期最后一节信息技术课是Python编程《恺撒密码》,受限于课时与学生的编程基础,未能按魏烁佳老师精彩的教学设计《恺撒密码》实施,我对相关的教学环节都做了调整与简化。教学过程大致如下:
一、创设情境,界定问题
课堂伊始,我展示一些字母“Vhoi-lpsuryhphqw”,问学生是否了解其中的意义,然后引出密码学相关概念(“明文”是原始信息,“密文”是加密后的信息)及恺撒密码的由来。接着,提出本节主要任务:通过Python编程,利用位移替换的方法自动加密信息或解密信息。
二、分析数据,抽象特征
首先分析如何加密,例如将明文的字母按字母表的顺序后移3位,从而实现加密。按后移3位的规则,明文与密文的对照表如下:
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWX
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZA
例如明文为RETURN
TO ROME,密文则为
这里引导学生抓住问题的关键:后移3位,明文与密文的运算表达式该如何表达?
例如录入一串字符Text,但Text中的英文字母不能直接进行算术运算,不能直接后移而得到相应的密文。这里可以将Text的每一个字符通过函数ord()转换为ASCII码,移位运算后,再通过函数chr()转换为相应的字符。
英文字母与ASCII码对照表
字母A向后推移3个单位,可以表达为chr(ord(‘A’)+3)。接着,再提出问题:是不是26个英文都可以用以上式子运算?哪些字母不能用?按后移3位的规则,它们的表达式是什么?这里通过问题导向,引导学生发现X、Y、Z后移3位为A、B、C,表达为chr(ord(‘*’)-23)。接着又继续问:如果偏移量不为3,而是5,运算式子又该如何表示?
抽象是计算思维的本质,这里尝试通过抽象的方法,分析数据,引导学生设计可计算的模型,从而达到培养学生计算思维的目标。
三、设计算法,实现自动化加密与解密
根据上述分析,引导学生理解恺撒加密算法的流程图,要求学生编写加密程序,然后又在加密程序的基本上编写解密程序。解密老师在课前展示的密文“Vhoi-lpsuryhphqw”(偏移量为3)。
当学生将密文“Vhoi-lpsuryhphqw”解密为“Self-improvement”(自强不息)后,进入下一个教学活动:已知密钥(偏移量)在1-13,请解密密文“Zbywhzz fvbyzlsm”。全班13个小组,每一个小组设计一个密钥的解密程序。全班学生分工与合作,兴致颇高,最终有一个小组发现了明文内容“Surpass yourself”(超越自我)。至此,学生发现了本节课解密的内容就是我校的校风“自强不息,超越自我”。我借此勉励学生弘扬校风精神,努力向上,刚毅坚卓,不断地自我完善。
四、总结与提升
我展示了一个通过用结构化的方法,编写的恺撒密码程序,它有加密和解密两种模式,可以自定义1-26以内的密钥加密码信息,也可以直接罗列所有密钥对应的明文内容,大幅度提高问题解决的效率。通过展示该程序,提升学生对编程方法的认识,也为他们优化程序提供了思路。之后,提出问题的延伸:本课加密与解密的内容是英文,如果需要对汉字进行加密与解密处理,该如何做?
课堂最后的总结,引用了魏老师观点:信息的加密与解密也是信息编码和解码的过程,编码与解码一般是一个可逆过程,如果将编码、解码规则表述为可计算的、机器能处理的模型,就可编写自动化的算法程序让计算机高效地完成。同时指出:密码学是一门古老又年轻的学科,数千年来,从古典密码学到近现代密码学,它一直在发展、创新。随着量子计算和量子通信的研究,量子密码学受到越来越多的关注,被认为会对已有的密码学安全机制产生较大的影响……
本课的教学内容仍是编程基础知识的初步综合运用。本学期初次展开Python教学,教学进度比预期的慢。开学初,我期望可以基本完成《必修一》的教学内容;学生可以灵活掌握程序控制的三种基本结构、字符串的处理、条件结构或循环的嵌套、爬虫技术的基本应用方法等;学生可以灵活应用所学的编程知识,自选主题,初步完成相关数据的抓取与分析……然而,一学期以来的整体教学效果与开学初的期望有不小的距离。除了课时、学科考核等客观原因,还有我在教学策略上的问题。考虑到许多学生家庭没有计算机,没有编程实践的条件,因而我很少布置课后练习,从而学生对相关知识的掌握不牢固。犹记我在大学二年级学习C语言编程时,也没有计算机,但通过笔纸抄写经典的代码,强化理解与记忆,也有过得去的学习效果。想必以后同样也可让学生在课后将代码写在纸上,同时,勉励有条件的学生利用计算机编程、调试、优化程序,乃至设计作品,完成项目学习,从而达到更有效培养学生计算思维的教学目标。