python语言程序设计课程总结:Python语言程序设计课程教学改革的理想选择
python语言程序设计课程总结:Python语言程序设计课程教学改革的理想选择3.开设Python语言的必要性和重要意义 综上分析,结合计算思维时代性特点,我们提出面向非计算机专业本科生开设Python语言的建议,尤其是将Python语言作为首选语言开设。即使针对计算机专业本科生(“985工程”高校或“211工程”高校),我们也建议将Python语言作为第二门程序设计语言开设。对于以应用为主的计算机专业本科高校,更建议将Python语言作为首门程序设计语言开设,更多内容请观看“慕课浪潮”微信号。 我们选取非计算机专业本科生程序设计课程最主要的教学内容:C,Java,VB 三种编程语言,以及本文建议开设的Python 语言,逐一分析这些编程语言所阐述的计算思维外延。编程语言抽象自动化适用性C系统结构高效执行信息类Java主体关系高效复用计算机类VB交互逻辑高效交互信息类Python问题求解问题计算全部专业 与计算机专业理解并应用计算机系统结构、计算机网络等专业知识教学
摘 要
面向计算思维的教学改革需要理解计算思维的时代性,即计算思维是基于计算机技术的科学思维,教学改革要符合并适应计算机技术的发展阶段。Python 语言是目前最接近自然语言的通用编程语言,近年来在美国大学广受欢迎,并取得了良好的教学效果。面向非计算机专业本科生开展Python 语言教学是程序设计课程发展的重要历史契机,有助于进一步释放师生活力和创新热情,全面提升教学质量,使学生有机会掌握一门终身受用的程序设计语言。
一、计算思维培养视角下的程序设计课程
1.程序设计课程教学内容分析
我们选取非计算机专业本科生程序设计课程最主要的教学内容:C,Java,VB 三种编程语言,以及本文建议开设的Python 语言,逐一分析这些编程语言所阐述的计算思维外延。
与计算机专业理解并应用计算机系统结构、计算机网络等专业知识教学不同,面向非计算机专业计算机基础类程序设计课程的定位应该是:通过某一编程语言的教学传授利用计算思维解决一般计算问题的基本方法,并能够通过程序设计更好地利用计算机强大的计算性能。即:程序设计语言应该成为学生以计算思维将计算问题转变为计算机程序的有效手段。
计算机技术已经发展到“复杂信息系统时代”,普通计算机性能强大,对于一般计算问题,计算机的计算性能不再是求解问题瓶颈。因此,针对更广泛学生培养计算思维的实践,应该与计算机技术发展相适应,在这个技术“时代”更应关注问题的求解,超越对程序执行性能、代码高复用性或某一个特殊系统中视窗设计的关注,让学生真正掌握利用计算机解决计算问题的通用方法。
综上分析,结合计算思维时代性特点,我们提出面向非计算机专业本科生开设Python语言的建议,尤其是将Python语言作为首选语言开设。即使针对计算机专业本科生(“985工程”高校或“211工程”高校),我们也建议将Python语言作为第二门程序设计语言开设。对于以应用为主的计算机专业本科高校,更建议将Python语言作为首门程序设计语言开设,更多内容请观看“慕课浪潮”微信号。
3.开设Python语言的必要性和重要意义
从程序设计语言发展角度来看,高级编程语言的设计一直追求接近人类的自然语言。这样的高级语言需要两个基本要求:不存在自然语言中广泛存在的歧义性以及隐藏计算机系统的设计细节。C,Java,VB从各自角度抽象了程序设计,Python语言又进一步,提供十分接近人类理解的语法形式。应该说,Python语言发展了高级语言的表达形式,简化程序设计过程,提升了程序设计效率。
从计算思维培养角度,表1说明了已有教学语言的局限性和技术时代的关联性,即传统C,Java和VB语言过分强调语法并不适合非计算机专业学生。从传统应用技能教育向计算思维培养转变过程中,教学内容变革是重中之重。对于程序设计课程,选择适合技术时代发展的编程语言是显著提高培养效果的前提和基础。
从解决计算问题角度,传统C,Java和VB语言过分强调语法并不适合非计算机专业学生解决一般计算问题,Python语言作为适应新技术时代的轻语法程序设计语言,应该得到大学计算机教育领域的重视。
从上述三方面看,Python语言相比其他语言具有更高的教学价值。这一技术趋势也得到了国外众多大学的直接响应。以美国斯坦福大学为例,该校从2009年开设Python语言程序设计类课程开始,每年新增约5门课程,截止到2015年,该校年度开设22门与Python语言相关课程,并替换了之前的Java语言和部分专业的C语言课程。
随着大数据、云计算、网络空间安全等概念的兴起,当代信息社会要求大学生在具备操作计算机的基础技能外,还要具备一定的编程能力,用于解决工作和学习中遇到的各类非通用计算问题,理解并实践计算思维。这种信息时代深入发展的趋势为程序设计课程的内容改革提供了依据。
程序设计课程教学内容的变化是一个正常的技术更迭过程。从20世纪90年代开始,程序设计课程的教学内容经过几次较大变化,曾经广泛教学的Pascal语言、Fortran语言被C语言、Java语言、VB语言等取代。然而,从21世纪开始,程序设计语言教学内容基本没有改变,针对非计算机专业学生主要开设C语言、Java语言和VB语言。教学内容近15年的稳定并非因为上述教学内容达到了教学预期,而是受制于特定技术时代的历史局限性。我们认为,用Python语言替代传统教学内容是程序设计课程发展中的一个重要历史契机,这种教学内容的变化将在十年甚至更长的时间尺度上影响本科生计算思维和基础计算机应用能力的培养,值得高校领导和教师在认识上给予足够重视。
由于计算机技术在科学技术体系中的广泛性和基础性,将Python语言全面纳入大学计算机教学计划具有重要意义和深远影响。
Python语言解释器是开源的且开源协议限制很少,任何基于该语言编写的代码都符合我国“自主可控”的信息安全要求。
Python语言的易学易用和丰富的开源库将会给学生带来一个全新的程序设计认识,改变主观渴望学好编程语言但客观上学不会学不精的状况,有助于帮助学生学会一种终身受用的编程语言,进而帮助他们更好地利用计算机解决所面临的各类计算问题。
Python语言的高编写效率会进一步加快程序实现和修改节奏,降低程序错误率,缩短计算服务和产品的上市时间,提高国民综合生产效率。
在我国全面提高高等教育质量、广泛开展本科教学工程背景下,Python语言教学改革将会开启一个全新的程序设计语言教学时代,进一步释放师生活力和创新热情,全面提升教学质量。以Python语言教学为手段,将更容易开展计算思维教育教学活动,使学生在思维和技能两方面终身受益。
北京理工大学自2013年面向非计算机专业开设了全校公选课“Python语言程序设计”,取得了学生的高度认同,不及格率明显下降,学生反馈教学效果显著提高。鉴于对高级语言发展的理解和实际教学效果,我们建议国内高校普遍针对非计算机专业开展教学改革,开设Python语言程序设计课程,更多内容请观看“慕课浪潮”微信号。
二、Python语言和高校教学改革
1.Python语言特点
Python语言是Guido van Rossum在1990年开发的编程语言,至今已经有26年历史,目前最新版本是3.5.1。Python语言的全部实现都是开源的,遵循类似GPL但比其更宽松的开源协议,该协议可以允许不公开基于Python的修改版本,并将Python与其他软件共同在GPL下发布。Python语言的版权由PSF(Python Software Foundation,Python软件基金会)持有,该基金会是一个非营利组织,通过接受捐款来推进Python语言的推广和开源事业。
Python语言是一个轻语法、弱类型的脚本语言。与C语言相比,Python语言没有指针、地址等计算机系统结构元素;对于变量无须定义直接使用,由解释器自动匹配;语言内部采用UTF-8编码实现,具有独立的字符串类型,简化了多语言文本的操作,对中文有良好的支持;通过使用变长列表而不是定长数组,兼容多种数据类型并灵活表达集合长度。
除了基本语法外,Python语言是一个脚本语言,即通过直接运行源代码来执行,这使得程序运行与源代码不可分离。对于非专业学生来说,源代码执行这种模式有助于代码维护、跨多个操作系统和交流代码设计与实现。
Python语言代码十分简洁,可以支持面向过程和面向对象两种程序设计方法,并不要求程序通过函数封装,代码行数可以缩减为C语言同样功能的1/5到1/10。以最简单的“Hello World”为例,Python语言的可运行源代码程序是:
Print("Hello World!")
C语言编写的程序需要引入main()函数,其可运行源代码程序如下:
#include <stdio.h>
int main( )
{
printf("Hello World!\n");
return 0;
}
此外,Python语言还可以编写图形界面程序,并且十分简洁。例如,下面所示程序可以绘制一条曲线,形成一棵树的形状:
from turtle import *
def tree(plist l a f):
if>5:
lst=[]
for p in plist:
p.forward (l)
q=p.clone()
p.left(a)
q.right(a)
lst.append(p)
lst.append(q)
tree(lst l*f a f)
p=Turtle()
p.color("green")
p.pensize(3)
p.speed(10)
p.left(90)
t=tree([p] 110 65 0.6375)
输出结果如下图:
Python示例程序输出图
从上面两个简单实例可以看到,Python语言与C语言相比能够更好支持图形输出、具有更少的程序代码、更接近自然语言逻辑的语法等。同时,Python语言兼容面向对象和面向过程两种设计方式,不在语法和程序编写方法上过分限制。
2.Python语言的时代先进性
历史上出现的程序设计语言超过200种,然而,至今常用的语言不超过20种。Python作为当代常用的通用编程语言之一,具有很强的生命力,这种生命力主要来源于该语言的时代先进性,体现在以下三个方面:
第一,Python语言的设计本质。Python语言是目前最接近自然语言的高级语言,抽象程度高,代码编写高效,符合计算思维的时代性,适应当代计算机技术发展水平。Python语言更侧重问题求解,在计算机性能高度发展的今天,该语言更适合解决运算性能非关键的一般计算问题。
第二,Python语言的开源开放体系。目前,围绕Python语言形成了世界上最大的针对单一编程语言的开放社区,截至2015年11月,这一开放社区共提供超过68 956个函数库,覆盖信息技术的众多技术领域。其中大量函数库编写质量很高,且同样开源,为使用Python语言编写程序提供了极大的便利和良好的学习平台。这种开源开放理念是推动计算机发展的原动力。
第三,Python语言的良好就业前景。云计算、大数据、移动互联网、创意游戏等给Python语言提供了良好的就业前景。表2列出了美国前两位在线招聘网站在美国加州,以及中国前两位招聘网站在北京、上海、广州、深圳等四个一线城市对Python语言、C语言、VB语言和Java语言程序员的需求对比。尽管这些就业需求数据并不能作为开设课程的依据,但可以作为对教学内容的一个评判维度。从职位需求的数量级别可以看出,在美国,Python语言和Java语言已经是程序员就业市场上很重要的两个分支,其中Python语言的市场需求约是Java语言的一半。然而,在国内,受限于大学教学的局限性和产业界对编程语言的信息洼地,Python语言程序员需求刚刚超过C语言和VB语言。这里需要说明的是,Java语言的就业需求几乎都是针对Android系统的APP开发,面向专业计算机程序员,比较单一。而Python语言就业需求更为广泛,包括数据分析师、运维工程师、产品测试等多个类别。
表2 各编程语言的就业人数需求
网站\语言 | C | VB | Java | Python |
4 655 | 4 865 | 54 745 | 25 275 | |
Indeed | 2 473 | 1 167 | 18 972 | 13 872 |
前程无忧 | 15 700 | 6 000 | >900 000 | 43 400 |
智联招聘 | 11 358 | 1 211 | 46 058 | 9 080 |
3.针对Python语言的教学开展
中国和美国在Python语言高校教学方面存在较大差距。其实,程序设计语言课程的教学内容很难达到教学目标的问题同样困扰美国大学教学,然而,近5年,美国大学通过引入Python语言在该课程的教学改革方面取得了显著进展。
以美国斯坦福大学为例,该校从2009年开设Python语言程序设计类课程开始,每年新增约5门课程,截至2015年,该校年度开设22门与Python语言有关的课程,尤其是针对非计算机专业学生,替换了之前的Java语言和部分C语言。美国综合排名前100的大学有超过70所在近3年开设了Python语言类课程。另外,有一批美国地方大学针对学生实际情况,开设了Python语言,从教学效果和质量来看,相关教改取得了较好效果。
在我国,截至2015年,开设Python语言教学的高校不超过10所,大多数以小班尝试为主。大部分课程面向计算机专业学生作为第二门语言学习,针对非计算机专业学生开设Python语言课程的教学实践还相当有限。
与教学开展类似,国内Python语言相关教材和参考书建设也十分有限。以美国和中国亚马逊网站数据为例,截至2015年11月,美国亚马逊有关Python语言的英文参考书为5 782本,相比,中文Python语言参考书仅为1 360本,而且其中绝大多数为国外参考书的翻译版,因此适合高校使用的教材亟待建设。
从教学开展和教学资源建设方面看,国内高校对开展Python语言教学的重要价值和意义认识不足,且缺少师资和参考教学体系。
北京理工大学从2013年开始开设了全校公选课,编写面向非计算机专业的Python语言教材,由高等教育出版社出版,同时,建立了整套教学体系和丰富的教学资源。2015年,主讲教师结合教学改革进展在“中国大学MOOC”上开设了“Python语言程序设计”课程,首次选课人数超过2万人,显示了Python语言较强的学习需求,MOOC课程为我们积累了更多教学经验。希望这些教学资源能够为国内同行开设Python语言课程提供参考。
面向计算思维的教学改革需要理解计算思维的时代性,即计算思维是基于计算机技术的科学思维,教学改革要符合并适应计算机技术的发展阶段。本文从计算思维培养角度对传统程序设计课程的教学内容进行分析,提出了面向非计算机专业本科生开设Python语言的建议,阐述了该教学建议的时代选择性、紧迫性和重要意义。结合Python语言自身特点、就业需求数据、国内外开展教学现状和资源建设情况,分析得出;Python语言教学内容改革是程序设计课程发展的重要历史契机,将在十年甚至更长的时间尺度上影响本科生计算思维和基础计算机应用能力的培养。开展Python语言教学有助于进一步释放师生活力和创新热情,全面提升教学质量,使学生有机会掌握一门终身受用的程序设计语言,更多内容请观看“慕课浪潮”微信号。