论文部分内容阅读
摘要:随着我国文化创意产业蓬勃发展,处于底层架构的程序员职位需求增多,随着程序基层架构语言的逐渐丰富简单化,以及我国中小学对于人才培养方案的调整,逐渐自发地与市场刚需接轨。本文分析了农村中学Python编程教学的问题,然后提出了具体的解决方法。
关键词:农村中学;Python编程教学
目前,农村中学编程教学仍然面临不少困难,有的是对教材教学内容陌生造成的,有的是对教学起点定位不同造成的。对于编程和算法部分的教学内容,我们首先应该明确这部分教学内容的设计意图和培养目标,然后考虑根据学情如何具体实施。
1.明确计算思维的范畴
编程教学的核心是培养学生的学科核心素养——计算思维,那就要明确什么是计算思维,以何内容和方式培养计算思维。综合欧美国家计算科学课程和我国信息技术专家的观点来看,都提到计算思维是一种跨越数学、工程、计算机等多学科领域的思维方式,所以不能把计算思维的计算简单理解为“计算机”或者“数据计算”。计算思维的实质是把一个看起来困难的问题重新阐释成一个我们知道如何解决的问题。由此可以看出,计算思维首先是思维培养,其次才是计算机语言编程问题。
由此可见,教材或教学设计不能抛出具体问题(或项目要求)就提供程序,而是要循序渐进地从提出問题、分析问题、抽象建立模型开始,通过一个一个活动,带领学生梳理完成项目的具体思路,优化方案,最终实现运用计算机解决实际问题或者设计开发作品。
计算机解决问题的思路完全来自于“人”,所以我们关注的首先是解决问题的思路和方法,不是具体的编程语句或代码。学生只有有了“想法”,才能告诉计算机怎么做,将来才有可能写出属于自己的程序。正因为有了想法,学生才可能读懂教材上代码的内涵,而不是单纯地记忆程序语句。学生思维水平提升了,才有可能达到知识创新,学会选择合适的方式分析、解决现实世界的复杂问题,从而真正理解计算机在现实世界中的优势和局限,才能促进信息技术的发展。
从另外一个角度来看,如果教学时一上来就拿出代码给学生,反而会限制学生的思维水平和关注点。因为作为初学者,学生不可能用程序代码这种自己不熟悉的方式来表述自己的解决思路,过早地看到代码可能会导致其思考焦点转移到陌生的程序语法学习中去。
2.学习内容的界定
基于项目的学习,是因“需”定“学”的学习方式。完成项目需要用到什么,教材(或教学设计)就提供相应的内容。所以,基于项目的学习,看上去不会像“编程语言教学”一样,系统地从基础知识、基本数据类型、基本结构等内容讲起。
中学Python教学的定位是体验和简单应用,不是系统开发。而且,我们的课程既要早发现、早培养有志于IT行业的从业者,也要考虑到大众化的群体将来就业需要的基本知识和素养,系统的语言学习不应是中学教学的本意,而且在中学阶段有限的时间内也不可能将它完成。所以,我们可以根据学情在教材的基础上做适当调整,但不宜拓展太多,因为对于普通水平的学生来讲,不适合难度过高的程序代码设计。在教学设计(教材)中能用简单代码解决的,力求不用函数或第三方库等方式,这一方面是避免知识面过大,另一方面是考虑到简单内容的灵活运用有助于学生思维的培养。
为了面向更多的学生,在进行教学设计时,可以参照教材中基本项目和科学探究、技术探索等不同梯度的内容,根据本地学生的实际情况和评价要求灵活进行选择,一般情况下基本项目是必学内容,科学探究、技术探索等可以根据学情做一定程度的取舍。考虑到Python的特性,部分内容可以适当增加不同的表述方式,如Python中两个变量的值交换这种颠覆传统的方式。但是,这些内容也只是为了引导学生了解Python的设计是灵活的,不能理解为扩大知识面。其实Python有很多更灵活的内容,但是对农村中学学生来说不易推广。Python的学习要考虑延续性,农村中学生无法做到对Python进行全面系统学习。
对于学习内容的设置,我们不妨看一下这样一个事例:我们从小学一年级开始学习汉字,但是在不同学段,对识字难度、数量、应用熟练度乃至学习方式等要求都是不同的。学习编程也是如此,不能有一步到位的想法。任何时候,都要清晰地认识到,我们是成年人,学生是未成年人,要考虑他们的思维水平和学习接受能力。正如我们都学习过数学,但是我们没有都成为数学家一样,我们不可能通过中学教学让所有人都成为IT工程师,培养他们具备信息时代数字公民的基本素养才是我们最重要的任务。所以,体验和简单应用,是相对符合农村中学教学要求的。
3.教材应用的灵活性
为了便于中学学生特别是初一年级学生的学习,编程教学的设计需要做很多折中,如缩短变量名,以降低输入错误导致的时间浪费;选择掷硬币等简单生动又具备思维深度的活动,以吸引学生;选择经典的算法案例,以拓展学生思维等。
当然,大家完全可以根据自己学生的情况进行调整和拓展。任何人都无法做到对同一问题穷尽其解决方案,我们只需要关注教学的核心是培养学生思维即可。所以,通常情况下解决方案只是列举一例,给学生留下更大的自由空间发挥自己的聪明才智。
还需要注意的是,为了培养学生建立抽象模型的能力,要重点引导学生如何把具体问题抽象成数学问题乃至计算机问题,这是计算思维的根本所在。
4.善用编程语言的灵活性
Python是一门灵活性很强的编程语言,并且随着人工智能的发展,其发展势头极其迅猛。但是,功能强大不等于说它所有的特点都适合教学。例如,使用列表的sort方法可以实现快速排序,但是学生无从知晓排序的原理是什么,对其思维的提升并无益处,所以选择经典的冒泡排序等算法作为案例进行示范更有价值。通过学习、讨论,引导学生了解计算机排序的方法,观察其优缺点,并提出改进建议。这样,学生将经历一个从无到有、从有到优的思维过程,有助于提升其思维水平。类似的案例还有很多,不逐一列举,提出这个问题的目的不是反对Python的灵活性,而是要说明强大的功能应该在学生掌握基本思维和方法之后给出才是合适的。所以类似的内容,适合在科学探究或技术探索等提升内容中来设计,提供给学有余力的学生。同时,因为不用拓展太多内容,学生就能够将精力集中于某些基础内容的学习,可以加深理解并提高学习效果。
教学案例的选择需要考虑生活化、趣味性、应用价值以及效果反差等多个因素,需要激发学生的求知欲。如采用37%法则了解算法,可能有的教师会很意外,但这样是为了提醒学生,看似无解的问题不见得就无法优化,只要潜心研究、认真思考,再学习掌握必要的知识,很多问题是可以解决或者优化的。桶排序、素数等内容看起来是比较无聊低效的劳动,但其实都有其存在的价值,并且现在仍然在用,如搜索引擎的关键字搜索、大型图书馆的图书检索,仍然是桶排序与其他快速排序等方法结合使用,超大素数目前仍在金融行业的加密传输中发挥作用。我们的教学要引导学生认识到,算法都有价值,也各有优缺点,通过学习不仅能掌握其特点从而在面对现实问题时,可以做出合理选择,而且在这个学习过程中可以使自身的计算思维素养得到发展。
综上所述,为此,为了让学生学好Python编程这项计算机能力,要从教学中入手,立足在学生的角度上开展教学,更好的促进中学计算机教学的发展,提高学生的思维能力,让学生在多样化的教学手段上进行学习和成长。
参考文献
[1]邹正丽.如何激发学生学习程序设计的兴趣[A].新锐讲坛,2015(9).
关键词:农村中学;Python编程教学
目前,农村中学编程教学仍然面临不少困难,有的是对教材教学内容陌生造成的,有的是对教学起点定位不同造成的。对于编程和算法部分的教学内容,我们首先应该明确这部分教学内容的设计意图和培养目标,然后考虑根据学情如何具体实施。
1.明确计算思维的范畴
编程教学的核心是培养学生的学科核心素养——计算思维,那就要明确什么是计算思维,以何内容和方式培养计算思维。综合欧美国家计算科学课程和我国信息技术专家的观点来看,都提到计算思维是一种跨越数学、工程、计算机等多学科领域的思维方式,所以不能把计算思维的计算简单理解为“计算机”或者“数据计算”。计算思维的实质是把一个看起来困难的问题重新阐释成一个我们知道如何解决的问题。由此可以看出,计算思维首先是思维培养,其次才是计算机语言编程问题。
由此可见,教材或教学设计不能抛出具体问题(或项目要求)就提供程序,而是要循序渐进地从提出問题、分析问题、抽象建立模型开始,通过一个一个活动,带领学生梳理完成项目的具体思路,优化方案,最终实现运用计算机解决实际问题或者设计开发作品。
计算机解决问题的思路完全来自于“人”,所以我们关注的首先是解决问题的思路和方法,不是具体的编程语句或代码。学生只有有了“想法”,才能告诉计算机怎么做,将来才有可能写出属于自己的程序。正因为有了想法,学生才可能读懂教材上代码的内涵,而不是单纯地记忆程序语句。学生思维水平提升了,才有可能达到知识创新,学会选择合适的方式分析、解决现实世界的复杂问题,从而真正理解计算机在现实世界中的优势和局限,才能促进信息技术的发展。
从另外一个角度来看,如果教学时一上来就拿出代码给学生,反而会限制学生的思维水平和关注点。因为作为初学者,学生不可能用程序代码这种自己不熟悉的方式来表述自己的解决思路,过早地看到代码可能会导致其思考焦点转移到陌生的程序语法学习中去。
2.学习内容的界定
基于项目的学习,是因“需”定“学”的学习方式。完成项目需要用到什么,教材(或教学设计)就提供相应的内容。所以,基于项目的学习,看上去不会像“编程语言教学”一样,系统地从基础知识、基本数据类型、基本结构等内容讲起。
中学Python教学的定位是体验和简单应用,不是系统开发。而且,我们的课程既要早发现、早培养有志于IT行业的从业者,也要考虑到大众化的群体将来就业需要的基本知识和素养,系统的语言学习不应是中学教学的本意,而且在中学阶段有限的时间内也不可能将它完成。所以,我们可以根据学情在教材的基础上做适当调整,但不宜拓展太多,因为对于普通水平的学生来讲,不适合难度过高的程序代码设计。在教学设计(教材)中能用简单代码解决的,力求不用函数或第三方库等方式,这一方面是避免知识面过大,另一方面是考虑到简单内容的灵活运用有助于学生思维的培养。
为了面向更多的学生,在进行教学设计时,可以参照教材中基本项目和科学探究、技术探索等不同梯度的内容,根据本地学生的实际情况和评价要求灵活进行选择,一般情况下基本项目是必学内容,科学探究、技术探索等可以根据学情做一定程度的取舍。考虑到Python的特性,部分内容可以适当增加不同的表述方式,如Python中两个变量的值交换这种颠覆传统的方式。但是,这些内容也只是为了引导学生了解Python的设计是灵活的,不能理解为扩大知识面。其实Python有很多更灵活的内容,但是对农村中学学生来说不易推广。Python的学习要考虑延续性,农村中学生无法做到对Python进行全面系统学习。
对于学习内容的设置,我们不妨看一下这样一个事例:我们从小学一年级开始学习汉字,但是在不同学段,对识字难度、数量、应用熟练度乃至学习方式等要求都是不同的。学习编程也是如此,不能有一步到位的想法。任何时候,都要清晰地认识到,我们是成年人,学生是未成年人,要考虑他们的思维水平和学习接受能力。正如我们都学习过数学,但是我们没有都成为数学家一样,我们不可能通过中学教学让所有人都成为IT工程师,培养他们具备信息时代数字公民的基本素养才是我们最重要的任务。所以,体验和简单应用,是相对符合农村中学教学要求的。
3.教材应用的灵活性
为了便于中学学生特别是初一年级学生的学习,编程教学的设计需要做很多折中,如缩短变量名,以降低输入错误导致的时间浪费;选择掷硬币等简单生动又具备思维深度的活动,以吸引学生;选择经典的算法案例,以拓展学生思维等。
当然,大家完全可以根据自己学生的情况进行调整和拓展。任何人都无法做到对同一问题穷尽其解决方案,我们只需要关注教学的核心是培养学生思维即可。所以,通常情况下解决方案只是列举一例,给学生留下更大的自由空间发挥自己的聪明才智。
还需要注意的是,为了培养学生建立抽象模型的能力,要重点引导学生如何把具体问题抽象成数学问题乃至计算机问题,这是计算思维的根本所在。
4.善用编程语言的灵活性
Python是一门灵活性很强的编程语言,并且随着人工智能的发展,其发展势头极其迅猛。但是,功能强大不等于说它所有的特点都适合教学。例如,使用列表的sort方法可以实现快速排序,但是学生无从知晓排序的原理是什么,对其思维的提升并无益处,所以选择经典的冒泡排序等算法作为案例进行示范更有价值。通过学习、讨论,引导学生了解计算机排序的方法,观察其优缺点,并提出改进建议。这样,学生将经历一个从无到有、从有到优的思维过程,有助于提升其思维水平。类似的案例还有很多,不逐一列举,提出这个问题的目的不是反对Python的灵活性,而是要说明强大的功能应该在学生掌握基本思维和方法之后给出才是合适的。所以类似的内容,适合在科学探究或技术探索等提升内容中来设计,提供给学有余力的学生。同时,因为不用拓展太多内容,学生就能够将精力集中于某些基础内容的学习,可以加深理解并提高学习效果。
教学案例的选择需要考虑生活化、趣味性、应用价值以及效果反差等多个因素,需要激发学生的求知欲。如采用37%法则了解算法,可能有的教师会很意外,但这样是为了提醒学生,看似无解的问题不见得就无法优化,只要潜心研究、认真思考,再学习掌握必要的知识,很多问题是可以解决或者优化的。桶排序、素数等内容看起来是比较无聊低效的劳动,但其实都有其存在的价值,并且现在仍然在用,如搜索引擎的关键字搜索、大型图书馆的图书检索,仍然是桶排序与其他快速排序等方法结合使用,超大素数目前仍在金融行业的加密传输中发挥作用。我们的教学要引导学生认识到,算法都有价值,也各有优缺点,通过学习不仅能掌握其特点从而在面对现实问题时,可以做出合理选择,而且在这个学习过程中可以使自身的计算思维素养得到发展。
综上所述,为此,为了让学生学好Python编程这项计算机能力,要从教学中入手,立足在学生的角度上开展教学,更好的促进中学计算机教学的发展,提高学生的思维能力,让学生在多样化的教学手段上进行学习和成长。
参考文献
[1]邹正丽.如何激发学生学习程序设计的兴趣[A].新锐讲坛,2015(9).