胡金成
(上海立信会计金融学院信息管理学院,上海 201209)
Python是一种广泛使用的解释型、高级和通用的编程语言,支持多种编程范型,包括函数式、指令式、结构化、面向对象和反射式编程。它的语言结构以及面向对象的方法可以帮助程序员为小型的和大型的项目编写清晰的、合乎逻辑的代码。2021年10月,TIOBE排行榜中Python成功地超越了霸榜已久的C和Java语言,夺得编程语言排行榜首的位置。TIOBE CEO Paul Jansen评价称:“20多年来,我们第一次有了一个新的领导者:Python编程语言。Java和C的长期霸权地位已经结束。Python,起初是一种简单的脚本语言,作为Perl的替代品,现在已经变得成熟。它的易学性、大量的库以及在各种领域的广泛使用,使它成为当今最流行的编程语言。”而Python成为新时代编程使用率最高的原因并不是偶然的,而是其迎合了时代的特征。在大数据时代,Python依赖大量宿主语言以外部脚本形式运行,综合了各行各业的人,把经验价值代码以模块的方式可以随意组装编译运行,扩展了Python第三方包,大大增加了Python编码的高效性和易用性。目前Python在金融数据处理、人工智能等领域广泛使用,具备独特优势。
在高等财经类院校开设对所有专业开设Python课程,有助于财经类人才编程能力的培养。对于非工科类院校,学生的计算机思维和实践能力相对薄弱,他们的基础计算机理论知识相对匮乏,如何制定合适的Python课程教学目标,设计合理的教学内容,选择恰当的教学方法,提高学生的学习兴趣,凸显财经类院校办学特色,成学校计算机类基础课程教学研究中需要解决的主要问题。
Python课程内容一般包括:Python环境配置、基本语法、程序流控制、列表、字典、元组、集合、类与对象、文件处理、异常处理、第三方库等知识。
这些知识的讲解需要大量的时间,但学校通识类课程只有32课时。现实授课过程中,既要对理论知识进行讲解又要让学生上机实践,难以系统地覆盖这么多内容。
大一学生的计算机水平差异较大,主要原因有两方面。首先由于不同地区在计算机教育资源和教育水平上的差异导致的,这是比较常见的原因,比如一些地区教育资源比较丰富,很多同学在初、高中,甚至是小学阶段就会接触到一些计算机知识,还有很多同学会参加一些计算机专业比赛,这部分同学进入大学之后,由于前期积累了部分相关知识,会有比较明显的优势。其次是一部分同学在高考结束之后,会通过网络或线下培训等方式重点学习一下计算机专业知识,比如学习一下计算机操作系统或者编程知识,这些同学进入到大学之后,相对于没有任何计算机基础知识的同学来说,也会有比较明显的优势。按照历史经验来看,在高考结束之后学习计算机知识是比较常见的,尤其是选择计算机相关专业的同学,还是应该提前了解一些专业知识。
财经类院校学生相对理工科院校对计算机课程相对多一些畏惧,而Python课程由于涉及许多理论、计算机内部工作原理等,大一新生没有任何编程基础,刚开始的学习曲线有一些陡峭。所以很多学生在学习时往往表现为信心不足,兴趣不大,再加上一些畏惧心理,导致学习效果下降,上课难度加大。
Python程序设计作为一种语言类工具,是一种描述和解决现实问题的一种新的方式。类似于语言、绘画、数学等描述世界的方式一样,学习编程也需要培养一种新的程序思维表达方式。而这种思维方式的获得需要大量的时间进行编码、思考解决实际问题。
如今,大多学生的学习方式大多跟着老师把书上的很多简单案例重复敲代码,然后运行成功就认为掌握了相关知识点,便迅速开始下一个知识点的学习。学生在这个过程中,一般只是机械性的敲代码,并没有加入多少自己思考过程。这会导致学生真正自己解决具体任务时,抛开书本,却发现无法下手、错误频出。所以要真正掌握这门语言,仅仅通过重复性、机械性得跟着老师抄写代码的学习方式是不可取的。要真正掌握Python语言编程的精髓,除了掌握基本语法结构之外,更多的是需要结合具体项目案例进行综合训练,加入自己对实际问题思考的过程,进而才能够培养出编程思维方式。所以,传统的课程的实践环节并不能有效培养和提高学生抽象思维和编写完成程序的能力。
课程的考核是教学的最终环节,也是授课过程的指挥棒,合理的考核方式能够指导整个教学环节的设计。目前关于Python程序设计课程的考核多数是通过平时成绩(一般占比30%)和期末考试成绩(一般70%)两部分来衡量。平时成绩主要以平时的考勤和课堂表现以及作业为考核方法。期末考试一般以闭卷方式考试,题目涉及选择、填空、判断、程序设计题,主要考查学生对基本概念语法和结构的记忆和理解。但对于Python程序设计这类偏实践类的课程用闭卷考试的方法难以考查学生运用编程语言解决实际问题的能力,并且这种考核也难以调动学生学习的积极性。
美国周以真教授曾提及过计算机科学的基本目标,他说:“运用计算机科学的基础概念进行问题求解和系统设计,即主要通过抽象、转化、仿真和迭代等方法,把一个复杂的现实问题转化为可以利用计算机自动解决的问题。它与传统的阅读、写作和计算能力一样,是信息时代的每个人应该拥有的基本思维能力。”乔布斯说,“每个人都应该学习编程,因为它教会你思考的方式。”所以能够通过学习使用Python解决实际应用问题,培养学生计算思维能力、创新能力和发现问题、分析问题和解决问题的能力,是课程的基本目的。
考虑到学生学习能力不同,在具体实施环节,对于本课程设置了一个基本目标以及进阶目标。基本目标为:掌握脚本语言程序设计的基本知识,掌握程序设计的基本方法,掌握程序设计的基本理论、方法和应用。进阶目标为:能够较正确而熟练地使用Python进行程序的设计,能够识读和编写较复杂程度的程序。
由于本课程只有32课时,内容多,课时少成了关键难题。所以需要确定教学核心知识点,合理分配教学内容和课时来解决课程内容多、学时少的问题。本课程在具体内容方面,对教学内容和课时进行适当调整,以减轻学生的学习负担,学有重点。在实施过程中,重点讲解Python基本语法、列表字典元组集合作为课后讲解。对于类与对象、综合案例、文件异常处理部分,作为扩展内容让学生根据需求观看视频资源。
集体备课有利于发挥集体智慧,弥补单个教师备课过程不足,将集体智慧与个人特长有效结合起来取长补短,提高教学整体水平。Python教学组有十几位老师,定期开设教学研讨会,讨论包括教学方案、教学计划、教学案例等修订,以及教学实施过程中遇到的问题以及解决方案。团队反复打磨知识点,聚焦考点,并建设了Python在线题库。
建设线上课程,课程组在超星课堂上建设了一套完整的教学视频、并配合配套习题以及习题的视频讲解。同学们可以根据线下课程的掌握情况进行合理选择相关视频进行观看。教师可以对学生在超星平台上的观看、讨论、测验等对学生的知识点掌握情况能够更深入的了解。如果,某一些知识点视频观看比较多,说明学生掌握得不太透彻,那么可以根据这种情况,对这一内容进行补充。
每部分知识点都进行了细化,对于基础较薄弱的同学,课后可以通过观看视频的方式加深对知识的理解,对知识点进行查漏补缺。
采用高等学校计算机等级考试《Python程序设计基础》作为参考教材,本教材以初学者为起点,由浅入深、循序渐进地讲述了Python程序设计的基本概念和基本方法。学生配合教材,通过一学期Python课程的学习,掌握了基本的语法后,能上机调试运行程序,解决了简单地实际问题,并可以冲刺计算机二级等级考试。
传统的程序设计类考试需要人工完成出题、印刷以及判分等工作,需要花费大量时间和精力。而通过Python在线考试系统达到了简化考试流程的目的,实现了出题、自动批阅、统计成绩等的自动化,减轻了教师和管理人员的工作量。
考试系统相比于传统试卷考试,能够更好地模拟上机编程环境,学生在平时练习过程中,可以在系统上反复练习,系统可以自动判分,并提示错误信息,学生在练习过程中可以有针对地根据错误信息纠正,降低了学习难度,提高了复习效率。而系统中的题库由Python教学团队精心设计,紧扣课程知识点,案例丰富,能较好地考查学生知识掌握情况。教师可以“智能组卷”模块进行随机组卷和发放题目,学生可以反复练习配套试卷。
通过Python在线考试系统进行在线考试、自动判分、随机出题、成绩统计等功能,给学生提供了真实上机编程的环境,减少了教师的工作量,提高工作效率,并保证了考试的公平性。
采用科学的评价方法对于学生的学习效果进行客观公正的评价至关重要。因此,结合Python程序设计课程轻理论重应用的特点,选择多元化的考核方式。考核方案由平时成绩(50%)、期末成绩(50%)组成,其中平时成绩由课程视频学习、课堂考勤、课外作业、阶段性测验、期中测验组成。课程视频部分根据学生在课程平台上观看视频学习的情况;课外作业部分指是学生在在线考试平台上的实验环节完成作业的情况;阶段性测验是在教学过程中设置若干次在线测验,测验的题目主要紧扣课外作业中的题目,能够检查学生相关知识掌握情况和效果;而期中测验是学期中期对学生知识点进行的综合考察。由于课外作业、阶段性测验、期中测验统一采用线上实验和考试的方式,统一题库,环环相扣。最后是期末考试,同样采用线上考试的方法,在规定时间内从题库中生成试卷进行作答,为了保证公平性随机试卷中所涉及的知识点、分值以及题型均保持一致,力争通过多元化考核方法实现科学评价。
计算机编程具有抽象性,很多学生刚开始接触时难以理解,致使学生认为计算机知识非常枯燥,逐渐对课程感觉厌烦。为了增强学生计算机学科的兴趣,应做到与时俱进,将可视化的方法运用到教学过程中来。在实施过程中,比如讲到列表那一块,我们会画出一个大的容器,在容器里面来存储多个元素,并通过箭头的方式来表现对象和空间的分布情况。通过这类方法能够让学生在学习过程中大脑里构建知识点,能够快速理解、掌握直观化的课程内容,提升了学生学习效率,还构建了高效课堂,有效提高计算机教学的有效性和趣味性。
Python课程初学者时需要对程序设计的一些基本概念建立一定的理解。一个新的领域总会面临着新概念的讲解,比如说变量、地址、结构、面向过程、面向对象、函数等知识,这些概念对初学者较较抽象,接受起来难度比较大。因此,在课堂中涉及新理论的部分,可采取类比教学方法,让同学们脑海里能够对概念有较形象的理解。比如对变量的理解,可以通过打比方,变量就是一个“带标签的盒子”,你需要把数据放进去。然后通过图形化的界面,把变量的名称,赋值运算符以及具体数值放进去。
通过合理设计的案例可以加深学生对各类语句以及使用场景的设计。如在ifelse语句里面,我们以描述人的活动作为案例,如果是晴天那么去公园玩,如果下雨在家里看书,如果多云那么就去跑步。这些典型契合实际的案例会加深学生对知识的理解。
为平衡学生之间的学习差距,让同学们互帮互助,教学采用学习小组形式。具体实施方式,在实验室里实操知识讲解部分,只广播每小组固定电脑,小组成员跟着老师一起编写代码,在练习过程中,老师会进行提问抢答环节,小组同学共同合作完成课堂练习部分。这样子形成一个共同学习的场景,小组式学习激发了学生的参与度,提高了学生的积极性、主动性。
根据Python课程教学实践,结合学校课程体系与学生个性特征,在教学过程中,不断分析和总结,对该课程教学进行了一系列改革,获得了较显著的教学效果。在今后的教学中,探索建设财经类相结合的教学Python配套案例,并在教学模式和手段探索两个方面继续深入研究,不断提高教学质量,加强财经类学生的信息素养,培养学生计算思维能力、创新能力和发现问题、分析问题和解决问题的能力。