李自力,王宇,蒋义军,陈姚
(西南财经大学经济信息工程学院,四川成都610074)
目前,我国财经大学计算机公共课的基本模式是在大学一年级的第一、二学期分别开设大学计算机基础和程序设计两门课程。虽然,根据各专业的不同特点,学校在计算机公共课方面,对学时、学分、开课形式等的设置各有不同,但以上述两门课程为基础的基本模式一直被大多数学校采用。通过多年的教学实践,许多财经大学和担任计算机公共课的教师在一定程度上达成了共识,即经管类专业计算机公共课的基本培养目标是提升学生的信息化素养,培养学生的计算思维和使用计算机解决实际问题的能力。经管类专业应用计算机主要要解决什么问题呢?数据处理和分析必然是排在第一位的。
人们普遍认为,大学计算机基础课程的目标主要是解决学生对计算机方面一些基础知识的理解和计算机软硬件方面的操作问题。程序设计课程的目标则是培养和训练学生自主设计算法以及编写程序的能力。按照这样的理解,再结合我国目前大多数经管类专业大学新生的信息化素养水平看,大学计算机基础这门课程的挑战度明显偏低,和学生专业特点的结合也显得没有针对性。程序设计课程的难度较大学计算机基础课程则大幅提高,甚至在很多学校,担任程序设计课程教学的教师普遍感到要完成该课程的基本教学目标比较困难。
针对上述问题,西南财经大学大学计算机基础和程序设计教学团队经过长期的教学研究和实践,提出“在大学一年级大学计算机基础课程的Excel部分引入程序设计内容”的实施方案。通过近3年的教学实践证明,该方案能够比较好地解决大学计算机基础和程序设计课程的连贯性和内容匹配问题。
众所周知,表格数据处理及相关软件的应用是一项经管类专业学生必备的技能。我们通过调查发现,在中小学中普遍开设信息技术基础课程的前提下,大学新生对使用MicrosoftWord和MicrosoftExcel解决问题的能力存在极大差别。许多学生入校时能够完成教师布置的普通文档排版任务,但对Excel的数据运算和处理功能确知之甚少,更谈不上应用。因为在Excel中,真正能够解决各种问题的方法是在公式中灵活应用表达式、单元格地址引用、函数功能组合、数组公式等功能;而在构造公式之前,设计计算机解决具体问题的方法甚至是步骤,这是必要的前提。这时就很容易理解为什么在大学计算机基础Excel电子表格这一部分的教学中,有学生会问老师怎么好像在讲程序设计。为此,我们将程序设计课程中的一部分基本概念和方法,如数据类型、常量、变量、运算符、函数、表达式、赋值、逻辑判断、数组、循环等,嵌入大学计算机基础课程中。这样的好处是既能够让学生从根本上理解Excel公式的概念,又能够将一些程序设计课基本内容整体前移到大学计算机基础课程中。由于MicrosoftExcel支持VBA编程,因此可以在大学计算机基础课程中通过介绍VBA的内容,让学有余力的学生能够进一步为第二学期的程序设计课程打下一定的基础。
很多以经管类专业为主的财经大学也设立了计算机科学与技术、软件工程、信息管理与系统等专业,这些专业的大学一年级通常也会有程序设计课程。学生常常提出这样的问题:我们中的绝大多数毕业以后不会做程序员的工作,我们学习程序设计课程有意义吗?这是一个很尖锐,但又必须要回答的问题。在计算机应用和计算机教育飞速发展的今天,不可能所有人都去研究计算机本身。其实,程序设计课程的教学目的是两个不同的方向:一个是类似计算机科学与技术专业的旨在培养程序员的程序设计课程;另一个则是并非培养程序员,而是为非计算机专业人员掌握应用程序设计的方法以解决与专业相关的实际问题而开设的程序设计课程[1]。这两个程序设计课程虽然在内容上有很多交叉,但根本目的不一样。计算机专业的程序设计课程比较注重软件系统的开发,非计算机专业的程序设计课程则比较针对各专业特点。
通常,财经大学的专业设置以经济管理类专业为主,而数据处理和分析是经管类专业程序设计公共课要解决的基本问题。为了适合以经管类专业为主的特点,在程序设计公共课教学内容的设置上应该主要围绕“数据”展开。例如,就数据输入方法而言,程序设计公共课的教学内容应该涵盖键盘数据输入、文件访问、正则式及应用、网页数据爬取等技术,特别是通过网页数据爬取获得数据技术,这在程序设计专业课中不一定是必需的内容,因为在接下来的其他专业课中(如Web程序设计、移动应用开发等)可能会进一步对这些内容进行补充。然而,对于经管类专业的学生来讲,程序设计课程不是一个系列课程。在程序设计课程中,学生必须掌握与数据处理和分析有关的一些基本概念、基本方法,甚至是一些基本技巧。学生需要具备基本的通过编写程序实现对特定目标的互联网网页上的数据进行获取,并对获取到的数据进行处理、分析的能力,因为这种能力在许多后续专业课中会大量用到。
总而言之,经管类专业的程序设计公共课和计算机专业的程序设计专业课之间在课程目标上存在明显不同的特点。我们必须要在认识到这种不同特点本质的基础上对课程内容做精心的取舍和组织才能达到目的。认为“经管类专业程序设计公共课实际上就是计算机专业程序设计专业课内容少一点、程度浅一点、要求多一点的缩减版”的观点无疑是错误的。
经管类专业的程序设计公共课使用什么语言?这是一个需要回答的问题。不管什么样的程序设计课程,选择一种程序设计语言是回避不了的事情。那么经管类专业的程序设计课程选择什么语言好呢?我们认为程序设计语言的选择应该考虑到以下几个方面:一是否易于学习和能否快速上手编写使用程序;二是否适合数据处理和分析。
Python语言是一种功能强大且易于使用的编程语言[2],学习Python语言的很多人都觉得Python语言很容易上手。我们以Java语言为例说明这个问题,如著名的“HollowWorld!”程序,分别使用Java语言和Python语言编写,结果如下。
Java语言程序[3]:
classTest{
publicstaticvoidmain(String[]args){
System.out.println(“HollowWorld!”)
}
}
Python语言程序[4]:
print(“HollowWorld!”)
其实,问题还不主要是在代码量上。为了讲清楚这个Java语言程序,我们必须对Java语言中的类、方法、main方法、String类型、方法参数、字符串数组、System、out、Println()等元素进行解释,但在实际的教学过程中,面对程序设计的初学者,常常只能是告诉学生,这些暂时都不管,先用再说。这在学生看来很难接受,而Python语言程序对应的就是一条语句(或一个函数)。另外,计算机语言语法规则规定、逻辑性强,学习起来比较枯燥[5]。因此,简单显得尤为重要。在经管类专业的程序设计公共课中,Python语言的“易学性”能让学生更容易将学习的注意力放在理解程序设计的基本概念和掌握编写程序的基本方法上,而不会因大量顾及程序设计语言语法规则而分散精力,这对程序设计的初学者来讲非常有帮助。
Python语言很适合编写数据处理程序,这除了Python语言本身特点适合的原因外,还有许多功能强大的第三方库支持并简化用户的编程工作,也是重要的原因。例如,用户使用Excel进行表格数据处理时,常常会遇到一些使用Excel集成的数据处理功能和自己编写公式都难于解决的问题,这时VBA编程的办法就派上用场,但VBA毕竟是一种编程语言,用户要一下子熟练掌握VBA语言并能应用于表格数据处理之中,还是有一定难度的。如果是使用Python语言,我们可以轻松地找到一些好用的三方库,然后将Excel工作表看成一个二维数据集合,便可以轻松完成类似于VBA程序的功能。以下是一个Python程序访问Excel表中二维数据集合的案例。图1所示是学生成绩。我们希望其中的数据变成图2所示的样子,以便于打印出来裁剪。
为了达到此目的,我们可以在“t2”工作表的A1中输入并填充公式:=IF(MOD(ROW(),2)=1,'t1'!A$1,INDEX('t1'!$A$2:$F$10,ROW()/2,COLU MN()))即可。此操作看似简单,但对许多Excel用户来说,编写合适的公式始终是不容易掌握的技能。一个熟悉Python语言程序设计的用户,使用程序的办法则可轻松完成这项任务。完成上述任务的在第三方库支持下的Python语言程序代码如下。
importxlrd
fromxlutils.copyimportcopy
filer1=xlrd.open_workbook('temp01.xls')
tabler1=filer1.sheets()[0]
iflew1=copy(filer1)
tablew1=filew1.add_sheet('t2',cell_overwrite_ok=True)
foriinrange(tabler1.nrows-1):
forjinrange(tabler1.ncols):
tablew1.write(i*2,j,tabler1.cell(0,j).value)
tablew1.write(i*2+1,j,tabler1.cell(i+1,j).value)
f
ilew1.save('temp01.xls')
上面这个实例说明Python语言的易学易用性和丰富的开源库的确能给学生带来一个全新的程序设计体验,改变学生那种主观渴望学习程序设计但客观上又学不会、学不好的状况[6]。
图1 原表“t1”
图2 处理后的表“t2”
课程名称:程序设计(Python)。
学分:3。
学时:16周,1次课/周,3学时/1次课,共48学时。
认识学习程序设计的必要性和重要性。
掌握高级程序设计语言程序开发环境的建立和使用。
认识程序语言(Python)的基本元素和功能。
具备用程序语言(Python)描述算法的基本能力。
具备用程序语言(Python)编写一定实用价值的数据处理、文件操作等实用程序的能力。
具备进一步自主学习其他编程语言编写程序解决实际问题的能力。
理论与实践并重。
注重教学过程监控,实施全程考核。
引入“翻转课堂”教学模式。
着力培养学习能力和适应能力,强调自主学习。
鼓励学生积极思考,培养学生信息技术应用和创新能力。
程序设计概述/6学时。
Python语言的基本元素/6学时。
程序的基本结构/6学时。
数组及应用/6学时。文件操作/6学时。
网页数据爬取/6学时。
Python语言实用程序案例/12学时。
平时成绩占总成绩的30%,期末考试成绩占总成绩的70%。
目前,我国高校中为大学生开设的程序设计课程实际上面对的是两个群体,即计算机专业(及计算机相关专业)学生和非计算机专业学生。虽然这门课程都叫程序设计,但教学目标截然不同。为以经济管理类专业为主的财经大学非计算机专业学生开设的程序设计公共课有明显的数据处理和分析特征。将本文提出的“在程序设计先行课大学计算机基础中提前引入‘程序设计’概念,并将程序设计学习的起点提前到大一第一学期”的思路和程序设计公共课教学大纲,应用到部分大学本科一年级新生的程序设计公共课中,从课程实施的效果看,学生学习程序设计的兴趣和效果明显改善。下一步,我们将进一步探索在财经大学的程序设计公共课中适当引入多种程序设计语言,形成以Python语言为主,适当引入Java、R等语言的混合模式,从根本上解决程序设计公共课的学以致用问题。
[1]张长海,陈娟,付燕宁,等.高级语言程序设计教学内容与教学模式的改革与实践[C]//大学计算机课程报告论坛论文集.北京:高等教育出版社,2008:107-111.
[2]DawsonM.Python编程初学者指南[M].王金兰,译.北京:人民邮电出版社,2014:6-11.
[3]扬厚群,林雄,伍强,等.Java程序设计[M].北京:中国铁道出版社,2008:11.
[4]嵩天,礼欣,黄天羽.Python语言程序设计基础[M].北京:高等教育出版社,2014:15-17.
[5]张克君,周知扬,张晓昆,等.计算机语言类基础课程教学改革的研究[C]//大学计算机课程报告论坛论文集.北京:高等教育出版社,2008:127-130.
[6]嵩天,礼欣,黄天羽.Python语言:程序设计课程教学改革的理想选择[J].中国大学教学,2016(2):42-47.