刊文精选

教育教学论文:面向地理学专业的程序设计教学改革与课程建设

来源:教育教学论坛 2021/9/22 14:35:09

[摘 要] 传统程序设计语言C、Java等对计算机理论知识要求高、入门难,对地理学专业学生而言,在学習过程中会出现大量的语法错误,导致学生编程学习兴趣不浓。Python作为一门易学、易用的编程语言,与地理学专业学习有机结合,具有明显优势并深受学生欢迎。针对教学过程中出现的问题,可运用科学合理的教学方法、注重基础性与前沿性相结合、加强案例教学、鼓励学生积极参加地理学相关知识竞赛、充分利用网络教学以及强化学生上机实验能力的培养等,并在本科教学中起到良好的效果。

[关键词] Python语言;地理学专业;程序设计;教学改革

[基金项目] 2020年度广东省高等教育教学改革项目“在线教学效果评测与质量保障”(粤教高函〔2020〕20号);2018年01月—2020年12月国家重点研发计划项目“深圳市洪涝实时调度决策支持平台及示范”(2017YFC1502706);2019年01月—2021年12月中山大学本科教学质量工程类项目“面向地学专业的程序设计核心通识课程建设”(37000-18832606)

[作者简介] 杜国明(1971—),男,山东安丘人,博士,中山大学地理科学与规划学院副教授,主要从事地学专业教学研究。

[中图分类号] G642.0     [文献标识码] A   [文章编号] 1674-9324(2021)20-0049-04    [收稿日期] 2021-01-12

一、引言

地理学是研究地理要素和地理综合体的空间分异规律、时间演变过程及区域特征的学科,具有综合性、交叉性的特点,其研究内容是地球表层人与环境相互作用的机理,研究过程需要耦合自然要素和人文要素,是一门“探索自然规律,昭示人文精华”的学科[1]。作为一种综合性学科,地理学的应用范围非常广泛,常常需要处理和分析复杂地物,程序设计往往能起到事半功倍的作用。正如苹果公司的CEO库克说过:学习编程要比学习英语更重要。因此,程序设计是地理学专业中的一门重要课程。常见的程序设计语言有Java、C、Python等。由于Python语言功能强大且语法简洁、易读及可扩展性,是目前美国大学最受欢迎的程序设计语言,如麻省理工学院的计算机科学及编程导论课程就使用Python语言授课[2]。又如,斯坦福大学从2009年开设Python语言程序设计类课程,替换了之前的Java和C语言课程[3]。因此,我们面向地理学专业选用Python语言作为本科生程序设计的教学语言。

二、面向地理学专业程序设计的教学改革与课程规划

(一)传统程序设计语言在地理学专业教学中存在的问题

目前,针对我国地理学专业开设的程序设计语言大多为C、C++、C#、JAVA等。这些编程语言语法复杂,对计算机理论知识要求高、入门难[5]。例如,C与C++语言要求变量在使用前先定义,严格区分大小写,每行语句以分号结尾,数组在使用前要先定义大小(易造成数据冗余或不足),指针和链表难学难用……对于编程基础薄弱的地理学专业学生来说,程序代码晦涩难懂,出现错误的时候又难以区分是运行错误还是逻辑错误,很容易挫伤学生学习程序设计的积极性。C#对计算机的配置要求较高,造成应用上的局限性。Java语言主要针对对象方法展开教学,教学内容主要是类、对象、封装、继承、多态、接口、多线程等,运行效率不及C或C++语言,易学性不及Python,所以与Python相比,实际教学价值不大。

上述程序设计语言都存在复杂的语法结构,对地理学专业学生而言,由于缺少计算机体系结构的相关知识,在学习程序设计过程中会出现大量的语法错误,因此无法与地理学专业学习有机结合起来,学生也难以得到系统的培养。学生虽然学习了编程语言,但并不能应用于实际的编程工作中,导致地理学专业学生编程学习兴趣不浓,仅为了考试而学,“考完即忘”的现象普遍存在。

Python作为一种轻语法的程序设计语言,具有易学、易用的特点,降低了学生学习的难度,可以弥补上述程序设计语言的不足,非常适合地理学专业程序设计课程。

(二)Python语言用于地理学教学的优势

Python是一门高级程序设计语言,由吉多·范罗苏姆(Guido van Rossum)于1989年底发明,是开源、免费的,简单、易学[4],比Matlab等商业软件具有先天优势,不会出现因授权而被“卡脖子”。Python的代码书写规则、语法简洁,不需要在使用变量前定义。同样输出一段文字,三种语言分别如下所示。

C语言需要4行代码,如下所示:

#include

int main()

{

printf("学好程序设计!");

return 0;

}

Java语言要定义一个类Main,代码如下:

public Class Main(){

public static void main(String[] args){

System.out.println("学好程序设计!");

}

}

python语言仅需要一行即可,如下:

print("学好程序设计!")

Python的优势显而易见。另外,它还能够与地理信息科学最常用的商业软件ArcGIS有机结合在一起,为解决复杂的地理问题提供有力支持。这是因为,ArcGIS开发语言默认安装Python,为地理学专业学生学习程序二次开发提供了极大的便利,非常适合地理学专业程序设计课程。Python的科学计算功能强大,方便数字图像处理,提供高效的数据组织与处理功能、多种数值计算、种类丰富的图形绘制功能。

Python成为近年最受欢迎的人工智能编程语言之一。根据编码道场(Coding Dojo)发布的2018年最具就业前景的七大编程语言报告,位居前三名的分别为Java、Python和JavaScript[6],如表1所示。

相比2017年数据,排名前5位的编程语言中只有Python需求岗位在增长,也是越来越多的学校将Python作为编程教学语言的原因之一。

(三)课程建设

以54学时的课程安排为例,每周3节课,共18周。教学改革与课程建设内容如下。

1.Python基础与地理处理的相关概念。介绍ArcGIS的脚本语言、ArcGIS中的地理处理、模型和ModelBuilder、环境设置、批处理、运行脚本。

2.编写地理处理脚本。介绍Arcpy站点包、使用地理处理工具、Arcpy函数及Arcpy类。

3.访问空间数据。介绍检查数据的存在性、描述数据、列出数据、对列表使用for循环、重点讲述使用游标访问数据、在Python中使用SQL、处理表和字段名、解析属性表和字段名、处理文本文件。

4.处理几何图形。重点讲述处理几何对象、读取几何、处理多部分要素、处理有孔洞的多边形、写入几何、使用游标设置空间参考、使用地理处理工具处理几何对象。

5.处理栅格数据。重点讲述列出栅格数据、描述栅格属性、处理栅格对象、Spatial Analyst模块、地图代数、ApplyEnvironment函数、arcpy.sa模块中的类。

6.地图制图。讲述arcpy的制图模块、地图文档、地图文档的属性和方法、数据框、图层、修复数据链接、页面布局元素、输出地图、处理PDF文档、新建地图册。

7.案例分析。重点讲述数据批量入库、属性与空间的复合查询、坐标投影转换、投影面积量算、地类图斑整理、犯罪案件关联性分析、流行病统计分析、切分栅格、土地利用变化分析、水系提取、优化山体阴影图、空间权重矩阵生成、教育与收入的空间自相关分析、影响房价因素的地理加权回归分析、居民收入热点分析以及机器学习。教学内容与课时安排如表2所示。

(四)教学改革

1.采取科学合理的教学方法。教改应以学生为主,重视学生的独立性,运用渗透加互动的教学方法,正确对待并积极引导和发挥学生的独立性,激发学生的学习兴趣。具体可采取小班教学模式。教师可通过程序设计作业、思考题等激发学生的学习兴趣,通过地理学专业的程序设计解决具体工作中出现的问题,如根据AQI发布的每日PM2.5监测数据,利用热度图制作方法对全国PM2.5浓度分布情况进行动态展示。

2.注重基础性与前沿性相结合。将基础知识与地理学前沿问题相结合,教师要及时更新教案,采用多种形式的教学法,紧跟时代步伐,及时掌握地学专业前沿知识。例如:让学生了解近年来应用于地学专业中的智能算法、深度学习等,使学生掌握基础知识的同时,不断拓宽知识面,使知识与兴趣相结合,深化编程在地理学中的应用。

3.强化学生上机实验能力的培养。教改要求课堂理论教学和实验教学紧密结合。通过同步上机实验,加深学生对理论的认知。实验教学课时应占到一定的比重,即课内理论教学的同时,大量的实验学时应分配到上机实验环节。特别是培养学生基于地理学的二次开发能力,要求学生编写程序算法去实现。实验内容要有针对性,理论与实际相结合,如通过深度学习算法的数据挖掘理论,让学生实现遥感影像的监督分类。

4.加强案例教学。由于程序设计课程在表述上具有抽象性,比较枯燥,案例教学具有形象、生动、多样的特点,利于学生记忆,有助于深化理论教学,巩固学生所学的理论知识并能调动他们的兴趣,激发求知欲[7]。案例分析有:属性与空间的复合查询、基于Python的地类图斑整理、流行病統计分析、土地利用变化分析、影响房价因素的地理加权回归分析、教育与收入的空间自相关分析、居民收入热点分析、机器学习等。例如,已知中国气象站点图和政区图,提取各个省及其气象站,程序主要代码如下所示。

import arcpy,os

arcpy.env.overwriteOutput = True

arcpy.env.workspace=r"D:\data\ChinaRain.gdb"

arcpy.MakeFeatureLayer_management("Rain","frain")

g1=r"D:\data\chinaPro.gdb"

g2=r"D:\data\rain.gdb"

arcpy.CreateFileGDB_management(os.path.dirname(g1),os.path.basename(g1))

arcpy.CreateFileGDB_management(os.path.dirname(g2),os.path.basename(g2))

rows=arcpy.SearchCursor("China")

for r in rows:

geo=r.Shape

sf=r.NAME+str(r.objectID)

arcpy.CopyFeatures_management(geo,"\\".join((g1,sf)))

arcpy.SelectLayerByLocation_management("frain","WITHIN",geo)

arcpy.CopyFeatures_management("frain","\\".join((g2,sf)))

del rows,r

該案例要求学生熟练掌握:创建文件地理数据库,使用游标遍历要素、提取要素,进行空间查询等。

5.鼓励学生积极参加地理学相关知识竞赛,包括ESRI、SuperMap、MapGIS开发大赛等。各类大赛都设置了丰厚的奖品,对学生学习程序设计具有很大的激励作用。因此,鼓励本专业学生报名参赛,不仅能培养学生的学习兴趣,还能提高学生的创新能力。

6.网络教学。网络教学可以实现非接触式传授知识。教师可以在线直播,也可以通过邮箱把上机题作业留给学生课下完成,还可以建立微信群或QQ群实现在线讨论、答疑及知识共享[8]。网络教学可以突破传统课堂时空的局限,如2020年受新冠肺炎疫情影响,各高校积极开展在线教学工作,充分利用网络在线教育资源,如“腾讯课堂”等,解决延期开学阶段学生的居家学习问题。

三、结语

程序设计是本科生一门重要的教学课程。将简单、易学、易用的Python作为地理学专业的程序设计语言,相对其他编程语言,学生选课报名踊跃,学习积极性高,得到了他们的高度认可,在本科教学中起到了良好的效果。

参考文献

[1]傅伯杰,冷疏影,宋长青.新时期地理学的特征与任务[J].地理科学,2015,35(8):939-945.

[2]狄博,王晓丹.基于Python语言的面向对象程序设计课程教学[J].计算机工程与科学,2014,36(A1):122-125.

[3]嵩天,黄天羽,礼欣.Python语言:程序设计课程教学改革的理想选择[J].中国大学教学,2016(2):42-47.

[4]江红,余青松.Python程序设计与计算基础教程[M].北京:清华大学出版社,2017.

[5]杨荣领.《Python语言程序设计基础》课程教学改革实践[J].高教学刊,2019(3):135-137.

[6]http://www.codingdojo.com/blog/7-most-in-demand-programming-languages-of-2018.

[7]付勇,邹妞妞,郭川.自然地理学通识教育课程教学改革探索[J].教育教学论坛,2020(18):203-204.

[8]文一凭,张进良,姜磊,等.应用驱动的渐进式Python案例教学探索与实践[J].当代教育理论与实践,2020(3):51-56.

Programming Design Teaching Reform and Course Construction for Geography Major

DU Guo-ming

(School of Geography and Planning, Sun Yat-sen University, Guangzhou, Guangdong 510275, China)

Abstract: The traditional programming languages such as C and Java have high requirements for computer theoretical knowledge and are difficult to be mastered. Most students of geography major lack enough learning interest in learning programming because a lot of grammatical errors are inevitable in the learning process. Python language has the dominant advantages and is welcomed by the students in geography major because it is easy to learn, to mastered and is closely combined with geography. In view of the problems in the teaching process, some teaching reform plans are introduced such as adopting scientific and reasonable teaching methods, paying attention to the combination of basic and frontier knowledge, strengthening case, experiment teaching, encouraging students to actively participate in the related geography knowledge competition and making full use of network teaching and so on. These methods provide a good lesson for programming teaching of geography major.

Key words: Python language; geography major; programming design; teaching reform


本文版权归教育教学论坛杂志社及本文作者所有,未经同意,不得转载! ——《教育教学论坛》查稿电话:0311-85178286