python语言程序设计课程的研究与思考
罗晓玲
【摘要】对已经学习过python语言程序设计课程的学生进行了调查,得出了学生学习python的主要困难。针对这些困难和python语言自身的特点,提出了几点解决方案,为后续的python课程教学提供参考。
【关键词】python?程序设计?课程建设
一、引言
计算机程序设计类课程是大学计算机基础教学的核心课程,通过对编程语言的学习,理解计算机解决问题的思维方式,是培养计算思维最重要的课程。
近年来,Python语言程序设计课程在国内各大高校相继开设,作为程序设计入门语言。相比与传统的C语言程序设计,python语言更加的简洁、清晰,易于理解。此外,python还具有大量开源的第三方库,对于学生后续在各领域的应用提供了有力的支持。
二、python语言程序设计课程学习的困难
python语言程序设计课程开设时间善短,依然存在很多的问题。本文针对python语言程序设计课程教学中存在的问题和遇到的困难,对一个年级六百多名学生进行问卷调查,被调查的学生均学习过python语言程序设计这门课程。学生学习python语言程序设计主要的困难如下:
(一)算法设计
课程总是鼓励学生首先理解问题的定义,然后采用计算机能够理解的方式设计一个解决问题的算法。但是,30%的学生经过一个学期的学习,拿到程序设计题还是不知道该从哪入手,完全没有思路。还有一部分学生只会去背题,看似学会了,但是遇到一个新问题,仍然无从下手。
(二)将算法用python语言描述
将算法转换为python语言,比算法的设计更加的因难。学生必须清楚的记住python语言所有的语法规则,这点大部份学生无法做到。他们经常困扰于一些编程的语法细节问题,而无法实现自己设计的算法。
(三)语言库的使用
python语言具有大量的第三方库,但是对于初次学习编程语言的学生来说,在库函数中搜索,找到合适的函数并正确地使用它,是非常困难的。因为学生还没有充分理解函数的调用和参数的使用。
(四)调试程序
调试程序是编程中最困难的问题之一。调查结果显示,理解编译错误信息(主要指语法错误)对于发现和修改错误的学生来说同样困难。一方面,可能是学生的英语水平有限。另一方面,学生往往会对提示信息视而不见,在程序中随机地进行修改。
综上所述,是学生在学习python语言程序设计中遇到的比较重要的困难。此外,还有复杂算法的学习和面向对象程序设计思路都是学生非常困扰的地方,这些属于程序设计学习的提高部份,不作详细表述。
三、解决方案
(一)采用伪代码来讲解
计算机基础课程的侧重点还是要培养学生的计算思维,对于程序设计课程来说,就是提高学生用计算机解决问题的能力而不是语法细节。如何提高学生的逻辑推演能力、算法设计和分析能力更为重要。伪代码相对于编程语言来说要求不那么严格,让学生可以不用关注语法细节,帮助学生把精力集中在算法设计上。
(二)增加实践课时间
程序设计课程是一门实践性非常强的课程,讲授的内容通过语言和文字很难表述清楚。但是通过实践,却很容易让学生理解。每次理论课辅以两次的上机实践时间,学生们可以以自己的速度学习,辅以老师的帮助。通过更多的上机实践,调试解决问题,自然解决学生对于调试程序所述的困难。
(三)将知识融入到具体的应用场景
教师应多了解和学习python在各行业领域中的应用,选择与学生专业相关的教学案例,提高学生对于第三方库的使用的兴趣。例如,对于计算机专业的学生来说,可以将语音识别技术、人脸识别技术等应用基本成熟、可视化效果好的技术作为课程教学案例;对于侦察情报专业的学生来说,可以将雷达图像目标识别等作为教学案例。这样不仅能够让学生体会到python第三方库的强大,对学生将来专业上的学习也大有益处。
在课程结束之前,每个人完成一个python的应用实例,作为本课程的大作业。学生可以围绕python语言在自己专业领域的相关应用自主选题,设计实现特定的功能程序。最后采用提交程序说明书、团队答辩等形式进行考评。这样,一方面,可以让学生将python与自己的专业紧密联系起来,另一方面,也可以让学生对软件开发和软件工程有一些简单的理解,并对今后的毕业论文答辩有初步的了解。
(四)引入在线考核平台
学生在学习过程中,一旦落后,就会越来越难跟上后面的课程的内容。然而,如果掌握了基本概念,学生们就会发现新的、更难的知识点学起来变得越来越容易。
在教学过程中引入在线考核平台,学生只有在限定的时间内通过了前面的考核才能进入后期的学习,否则会有相应的惩罚措施。多次的考核,可以让学生时刻保持警惕,让教师能够及时掌握学生的水平,及时地对他们所存在的困难提供帮助。在线考核平台需按知识点建立试题库,并划分难易程度。学生在统一时间地点抽题考试,系统自动评分。每一次的考核成绩记入平时成绩一部份。未通过考核人员,作为重点对象,给予补考机会。
(五)融入学科竞赛
近年来,“蓝桥杯”全国软件和信息技术专业人才大赛、ACM大赛、各种物联网大赛、机器人大赛等计算机类竞赛日趋增多。学科竞赛是对学生综合能力的考核,不仅考查学生基础知识是否掌握扎实,更为重要的是考查学生应用知识解决问题的能力、创新能力以及团队协作能力。可以将历年的一些竞赛的题目作为小案例,融入到教学过程当中去,设计一些小竞赛,把程序设计学习变为学生快乐的、有竞争意识的经历。同时也为后期学生参加相关竞赛打下基础。
(六)引入机器人程序控制
机器人近年来越来越热,学习机器人控制的门坎也越来越低,有很多控制芯片都支持python语言进行编程。在python课程的教学中,引入机器人控制编程,可以极大的提高学生的学习兴趣。可以将学生分组,一级一套学习套件,学生通过编写程序来控制机器人的动作,可以直观的看到自己所编写的程序所产生的效果。这样,原来枯燥无味的编程课程变成了生动、直观的形式。学生通过机器人的实际动作,可以很容易理解程序控制过程,掌握程序控制的思想。学生在具备了这些直观认识的基础上,再进行理论的學习,会更有方向和激情。
四、结语
Python语言程序设计课程虽然相对于传统的语言教学降低了学习的难度,但是对于初次接触程序设计的学生来说,还是存在很多困难。本文就该课程目前教学过程中存在的问题,提出了采用伪代码来讲解算法更方便学员理解和转化成编程语言实现,针对python语言的特点让学生将程序设计与自己的学科专业紧密结合,引入在线测评平台让落后的学生及时跟上,融入机器人和学科竞赛激发学生的学习兴趣。在后续的教学过程中,将逐步引入上述方法,优化教学设计,提高教学质量。
参考文献:
[1]Hetland M L.Python基础教程[M].第二版.北京:人发邮电出版社,2010.
[2]?Georgantaki,S.,& Retalis,S.Using Educational Tools for Teaching Object Oriented Design and Programming. Journal of Information Technology Impact,2007,(2) :111.
[3]Xinogalos,S.Difficulties with Collection Classes in Java-The Case of the ArrayList Collection.Proceedings of the 2nd International Conference on Computer Supported Education (CSEDU),7-10April,Valencia,Spain,2010.120.