兴趣导向下的Python 程序设计课程教学模式研究

2018-07-14 17:44赵美林
科技视界 2018年29期
关键词:程序设计绘制语法

赵美林

(三峡大学计算机与信息学院,湖北 宜昌 443002)

0 引言

随着科技的进步,社会的发展,世界高等教育也在发生革命性变化。 2006 年, 美国 CMU 大学的周以真( Jeannette M.Wing)教授提出了“计算思维”的概念,倡导高等教育要培养学生利用计算机科学去求解问题的能力。 2016 年提出的“新工科”概念,更是受到教育部的密切关注和大力支持, 在不到一年的时间里,就组织各大高校进行深入探讨, 先后形成了 “复旦共识”、“天大行动”和“北京指南”,并发布了《关于开展新工科研究与实践的通知》、《关于推进新工科研究与实践项目的通知》,奠定了其在新科技革命、新产业革命、新经济背景下工程教育改革的战略地位。2018 年4月教育部印发《高等学校人工智能创新行动计划》,要求推动“新工科”建设,新工科专业主要包括大数据、云技术、人工智能、区块链、虚拟现实、智能科学与技术等相关工科专业。

人类日益普及的网络行为、全世界企业系统、工业设备、 各类传感器等产生了海量的数据信息, 各政府部门和企业等都看到了大数据的价值, 这也使得 “新工科”中的“大数据”备受关注,成为应用研究的热点。在2018 年3 月教育部公布的2017 年度新增备案本科专业中,“数据科学与大数据技术”最为热门。据统计,共有200 余所高校新增 “数据科学与大数据技术”专业。 未来社会将会是以数据为驱动的社会, 企业的各项决策都要以数据为依据, 这就要求高校培养的学生对大数据的认知要有所提升, 应该具备一定的数据素养,即:

第一,对数据的敏感度,既能了解数据的价值,又能认识到数据的局限性;第二,对数据的收集能力;第三,对数据的分析、处理能力,能够读懂各种数据表达的含义;第四,利用数据进行决策的能力。 在大数据时代, 数据素养应该成为我们适应潮流、 应对挑战的基础素养之一。

程序设计作为计算机基础课程教学的核心课程,承载着培养学生“计算思维”、“数据素养”的责任。 但是长期以来,我国高校的程序设计课程主要开设C 语言程序设计课程和VB 程序设计课程, 学习完毕之后就被束之高阁, 几乎不会再用, 无法满足非计算机专业学生在后续专业学习中继续使用该语言解决问题的需求。

1 Python 语言优势

Pyt hon 语言是一种既支持面向过程、 又支持面向对象的编程语言,而且,语法简洁、易读。 另外,Python是开源的编程语言, 拥有丰富而强大的扩展库、 优良的可扩展性和可移植性, 它还是一种灵活的粘合语言,可以把用其他语言编写的模块联接在一起。

1.1 语法简单、入门容易

我国高校的基础程序设计课程主要开设C 语言和VB 语言程序设计课程,虽然这类语言应用广泛,但是存在着学习难度大, 入门困难的问题, 几乎一大半的教学时间都要用于语言本身的讲授, 尤其是对于非计算机专业的学生而言,入门学习更是困难。 因此,在基础程序设计课程的教学中, 需要兼顾不同专业学生的接受能力,选择一种语法简单、入门容易、应用广泛的程序设计语言。

Python 是一种代码简洁、语法简单、上手容易的高级程序设计语言,实现相同功能的代码量只有C 语言的五分之一到十分之一, 而且应用范围广泛, 不管对于刚刚接触程序设计语言的学生, 还是已经有了一定编程基础的学生,Python 都能够满足他们不同的学习需求。 目前,全国已有多所高校,如北京理工大学、南京大学、 国防科技大学等都开设了Python 程序设计课程。

1.2 扩展库丰富,功能强大

Python 作为一种开源的程序语言,具有非常丰富的扩展库,而且应用非常广泛。 目前,Python 语言拥有的各类扩展库已经超过10 多万个。[1]这也大大方便了我们在教学过程中, 根据教学内容和不同专业的学生需求来选择不同深度的扩展库来开展实际教学。 对于Python 基本语法和基本程序结构、 函数等内容的讲解可以借助于相对比较简单的、 内置的turtle 绘图库,或者是Matplotlib 二维绘图库, 通过图形的绘制让学生对Python 运行结果有一个直观的认识; 科学计算可以使用NumPy 库; 机器学习可以使用Scikit-learn 库, 深度学习可以使用TensorFlow 框架; 网络爬虫既有学习容易、 适合于小规模爬虫的requests 库, 也有更加专业、速度更快、 适合于中等规模爬虫的Scrapy 爬虫框架;Python 对中文的支持也比较友好, 有专门用于中文分词的jieba 库; 还有可以制作云标签的wordcloud 库。Python 语言构成了一个功能强大的计算生态圈。

1.3 利于培养学生的计算思维和数据素养

Python 语言是一种轻语法、 入门容易的编程语言,学生可以减少在学习编程语言本身所花费的时间,能够将更多的精力投入到分析问题、 解决问题的深入思考上, 有利于培养学生利用计算机语言解决实际问题的能力。 我们正在进入一个以数据为驱动的大数据时代,而Python 丰富的扩展库中,既有可以获取大量信息的多个爬虫扩展库, 又有可以用于数据分析、 数据挖掘的扩展库,可以充分满足学生学习的需求。Python 语言良好的计算生态圈非常有利于学生计算思维和数据素养的培养。

1.4 受用终身的语言

Python 语言的易学易用和丰富的开源库将会给学生带来一个全新的程序设计认识, 它既可以开发网站、爬取数据,又可以做数据处理与分析、数据挖掘、可视化展示,还可以处理图像、制作影视特效、进行游戏设计等,用武之地非常之广泛。Python 是一门让学生会终身受用的编程语言, 可以帮助他们更好地利用计算机解决学习、工作中所面临的各类计算问题。

2 Python 程序设计课程教学模式改革

2.1 教学过程中淡化语法

在传统程序设计课程的教学过程中, 非常注重程序语言本身语法的讲解。 在课程讲授之初, 就会花费大量的课时讲解程序语言的语句构成元素、 数据类型、 三大基本结构等语法内容, 使刚刚接触程序设计语言的大一新生直接面对枯燥、 乏味的语法知识,令其心生畏惧, 甚至认为程序设计语言就是 “枯燥、乏味”的代名词,从而产生畏难心理,失去学习的兴趣。因此, 程序设计语言课程讲授之初, 应该淡化语法知识的内容,重在激发学生的学习兴趣。

2.2 建立以兴趣为导向的教学模式

美国当代著名的教育心理学家奥苏伯尔提出了有关兴趣教学的理论。 他认为, 机械教学是一种死记硬背的记忆性的学习, 而带有兴趣的教学是一种以思维为核心的理解性学习。[2]兴趣是最好的老师,只有学生对教学内容感兴趣时, 才能学得最好。 课堂教学仅靠教师一个的努力是远远不够的, 需要师生的共同努力, 只有充分调动学生的积极性、 激发学生的学习兴趣,才能更好地完成课堂教学。

2.2.1 渐进式实例教学

要在教学过程中激发、并保持学生的学习兴趣,就不能采用平铺直叙的方式来讲解Python 语言的各语法和知识点, 必须根据教学内容和学生的兴趣点来设计教学案例,以“渐进式实例”来引导学生从基本问题到复杂问题的逐步深入学习。 充分利用Python 语言的优势和丰富的扩展库,让学生感受到Python 语言的魅力,培养学生的编程兴趣, 让学生掌握利用计算机解决问题的方法,提升利用计算机解决实际问题的能力。

教学案例应该以图形化案例为主, 图形化的案例既可以给学生视觉上的冲击, 又可以激发学生的学习兴趣。 更重要的是, 选取的教学案例既要有一定的趣味性,又不能过于复杂,要由浅及深,能够较好地融会贯通各相关知识点,实现教学目标。

Python 语言的Turtle 库是一个简单、 易用的绘图库,可以将其作为Python 语言学习的入门库。在讲解程序设计的三大基本结构时, 利用Turtle 库绘制不同的多边形来逐步展开。 首先, 通过引导学生思考如何手动绘制一个等边三角形, 进而引出如何利用Turtle 库绘制及顺序结构的概念; 其次, 利用绘制三角形时的转角问题,引出分支结构的概念,从而,让学生体验到如何在一段代码中绘制两个不同方向的三角形;最后, 引导学生思考, 如果要绘制边数较多的复杂多边形时, 该如何处理, 进一步引出利用循环结构来简化绘制代码。 这样,由绘制一个简单的等边三角形,让学生由浅入深地逐步理解了程序设计的三大基本结构。之后, 让学生思考代码重用的问题, 从而引出对函数概念的讲解及函数的调用。

为了能够继续探索学生的学习兴趣, 应再选取一些渐进型案例。 例如, 让学生自定义绘制五角星的函数,并绘制一面五星红旗;接着,通过介绍random 库,让学生了解随机函数的使用, 并让学生自己编写一段绘制随机五角星的代码, 以强化学生对函数以及随机函数的使用。 要真正成就学生的编程兴趣, 还应该选取一些开放性案例, 在这类案例中, 不必设定具体的实验目标,如,介绍简单的小蟒蛇的绘制方法后,让学生理解并修改代码,绘制出自己喜爱的“花样”小蟒蛇来, 这更有利于调动学生主动性, 甚至可以让学生根据自己的喜好,绘制各种有趣的图形,相互品鉴,激发学生创造力和成就感。

另外,还要选取一些趣味性较强的案例,以保持学生激发出来的浓厚学习兴趣。 例如,案例中可以融合一些有趣的历史文化故事,让学生进行情景编程,或是列举一些与现实结合比较紧密的案例、 应用比较热的案例,例如,可以利用jieba 扩展库对自己感兴趣的文学著作进行词频统计,发现著作中的主要人物,通过对英语四、六级考试中的阅读材料的词频统计可以找到出现的高频词汇, 以此来帮助英语复习, 并且还可以结合wordcloud 扩展库进行可视化的词云展示。让学生深刻体验到编程是一件有趣的、而且很有用处的事情。

2.2.2 翻转课堂

在传统教学过程中, 往往都是以老师为主进行课堂讲授,学生被动接受,致使学生学习积极性不高。 在Python 程序设计教学过程中,可以选取部分内容,采用“翻转课堂”教学方式,让学生变被动为主动,教师进行课堂辅导。例如,在讲解利用python 编写网络爬虫的内容时, 可以先让学生查阅相关资料, 并结合中国大学MOOC 网上由北京理工大学嵩天教授讲授的“Python网络爬虫与信息爬取” 课程, 进行课前学习。 在课堂上, 让学生互相交流学习体会, 探讨学习中遇到的问题, 教师进行引导讲授, 并以项目的形式给出一个实践案例,让学生实际动手来编写爬虫代码。

“翻转课堂”可以增加学生和教师间的互动和个性化沟通, 提升学生学习的积极性和主动性, 教师化主为辅,为学生营造一个自主学习的环境。

3 结语

在以兴趣为导向的教学过程中,改变了以往课堂教学方式,以学生的兴趣为起点,通过渐进式趣味性案例的讲解,使学生对程序设计产生浓厚的兴趣,并结合“翻转课堂”的教学理念,进一步激发其学习的主动性和创造性。 在后续的教学研究中,将根据不同专业特点和需求,深入探索如何将Python 程序设计课程与专业需求紧密结合,提高学生利用Python 解决实际问题的能力。

猜你喜欢
程序设计绘制语法
Art on coffee cups
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
跟踪导练(二)4
放学后
Book 5 Unit 1~Unit 3语法巩固练习
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用
在转变中绘制新蓝图
VBA在宗地图绘制中的应用