高校大气科学专业Fortran语言程序设计课程教学改革探讨

作者: 苏婧 莫欣岳 李欢

摘  要:计算机程序设计作为高校大气科学专业的重要基础课程,旨在培养学生应用计算机语言编程并解决大气科学领域实际问题的能力。在信息技术高速发展的今天,如何开展合理的课堂教学和有效的实践训练,以满足新时期国家和社会对大气人才培养的要求,是高校课程改革的主要目的。该文基于作者十几年教学实践的经验与思考,从编程语言和教材的选择、课堂教学方式、实践训练环节等方面,对目前大气科学专业程序设计课程教学中存在的问题进行探讨和总结,并提出具体的教学改革思路和方法,以期为完善课程体系建设、提高教学质量提供借鉴。

关键词:大气科学;Fortran语言;程序设计;教学改革;实践训练

中图分类号:G642        文献标志码:A          文章编号:2096-000X(2023)30-0122-04

Abstract: As a fundamental course of Atmospheric Sciences, Computer Programming aims to cultivate students' ability to apply computer language to program and solve practical problems in Atmospheric Sciences. With the rapid development of information technology, how to conduct reasonable classroom teaching and effective practical training to meet the requirements from the state and society for the cultivation of talents in Atmospheric Sciences in new era is the main purpose of curriculum reform in university. Based on the experience and thinking of teaching practice for more than ten years, the problems existing in the teaching of the programming course of Atmospheric Sciences are discussed and summarized from the aspects of the selection of programming language and teaching materials, classroom teaching methods and practical training in this paper. To overcome these problems, some specific ideas and methods of curriculum reform are proposed, expecting to provide reference for improving the curriculum system construction and teaching quality.

Keywords: Atmospheric Sciences; Fortran language; programming; teaching reform; practical training

第三次科技革命是人类文明史上继蒸汽技术革命和电力技术革命之后科技领域里的又一次重大飞跃。计算机技术的发展作为第三次科技革命的产物,有效推动了社会信息化时代的进步,并且其应用已经深入到社会的各个领域。大气科学的发展始终与计算机技术的进步密不可分,历史上正是大型计算机的出现,提供了海量数据处理和计算的能力,才使得数值天气模式进行短期天气预报和气候模式开展长期气候变化预测成为可能。20世纪上半叶数值预报理论已建立,但由于人工计算能力的限制,无法利用微分方程的数值化解法实现气象参数的预报,气象学者们认识到计算速度已经成为了制约数值预报发展的最大“瓶颈”。直到二战后期美国气象学家查尼(J G. Charney)和计算机之父冯·诺依曼(Von Neumann)合作,于1950年在世界第一台计算机上首次成功实现了气象高度场的24小时预报,之后随着数值预报业务与资料同化方法的进步,数值预报对计算速度的需求也与日俱增,气象预报部门也成为世界上最先进计算设备首先应用的领域之一。可以这样说,没有计算机科学与技术的进步,就没有大气科学的发展。

目前,大气科学受益于计算和遥感技术的大力推动,实现了中短期天气预报、长期气候预报与全球监测,已经发展到了一个全新的阶段。利用计算机进行程序设计从而解决大气科学中的各种问题,成为从事大气科学相关科研和业务的必备能力[1]。因此,在大气科学专业的本科教学中,计算机程序设计一直是一门重要的必修专业课程。如何通过这门课程的学习,让学生掌握一门高级程序设计语言,了解大气学科中常用的数值算法,使学生具有利用程序设计解决学科中一般问题的能力,满足新时期国家和社会对大气人才培养的需求,是教师在这门课程教授时必须思考的问题[2]。因此,选择适合的程序设计语言和教材,进行合理的课堂教学,开展有效的实践训练,是程序设计课程教学的3个重要方面。本文将结合作者对程序设计课程十几年的教学实践经验与感悟,从上述3个方面对本课程的教学和改革进行探讨。

一  精选语言教材,扎实做好课前准备

(一)  确定适合的编程语言

程序设计语言即计算机语言,是人类对计算机发出的指令,也是人类与计算机进行沟通和交流的工具[3]。计算机语言分为机器语言、汇编语言和高级语言,其中前两种又可以统称为低级语言,由于使用二进制和机器代码编写,主要用于内核程序的编写,因此面向用户受到限制。高级语言的指令更接近人类语言且通用性大大提高,对用户更加友好,成为各行业主要应用的计算机语言。Fortran、Pascal、C++、Java、MATLAB和Python等都是当前被广泛使用的计算机高级编程语言,并由于各自的特点受到不同领域用户的青睐。Fortran、IDL、Matlab、NCL以及Python在大气、海洋等科学计算领域被广泛应用。其中Fortran作为最早出现的计算机高级语言,由于其强大的数值计算能力,是一门适合科学计算和工程分析的程序设计语言,也一直都是大气科学的科研和业务中最常使用的编程语言,并且经过60年的发展积累了大量模式源程序[4]。目前,包括全球长期气候模式GCM、大气数值预报模式MM5和WRF,以及辐射传输模式LBLRTM和RRTM等一批重要模式都是采用Fortran语言进行编写。因此,在高校大气学科教学中,通常将Fortran语言作为第一门程序设计语言,并在本科生第一或第二学年安排教学。本文将以Fortran语言为例,对大气科学专业程序设计课程的相关教学改革问题进行探讨。

(二)  精选授课教材

Fortran语言开发使用较早,已有很多经典教材用于高校教学。例如谭浩强主编的《FORTRAN语言》,白云编著的《Fortran95程序设计》,彭国伦编写的《Fortran程序设计》等。这些教材各有特点,有的简明扼要适于初学者入门,有的详实全面利于进一步的深究,基本能应对不同的教学需求。但对于大气科学专业的学生来说,这些教材由于缺少与专业领域相关的问题实例,学生往往觉得该课程是计算机专业的课程,与大气科学专业联系不紧密,因此产生抵触心理,在教学过程中难以激发学生的学习兴趣。而由气象出版社出版的南京信息工程大学薛胜军等编著的《Fortran语言程序设计》和兰州大学张健恺等编写的《Fortran语言及应用》2部教材则主要针对大气科学专业[5-6]。教材中不仅包含了选择法和冒泡法排序、斐波那契数列等经典的数学算法,还结合了气象观测数据缺省值的处理、极端天气的判定、数值方程求解以及卫星和再分析数据处理等大气学科中的常见问题,开展实例设计。例如教材中例题通过结合台站常见降水等级划分问题,演示if判断语句的使用;结合数值方程常用求解的牛顿迭代法,演示条件循环语句使用;结合卫星数据的变量赋值,演示三维数组的使用方法。这些例题通过学科中常见的问题举例,向学生展示使用FORTRAN语言解决实际问题的方法,使学生在学习FORTRAN语言时能和专业知识紧密结合,从而激发学生学习兴趣,产生学习源动力。因此,选择合适的教材不仅可以通过该课程的学习让学生掌握程序设计的基本思想和方法,还能培养其使用Fortran语言解决学科中实际问题的能力,为后续统计天气预报、数值方法、数值天气预报等专业课的学习奠定程序设计基础。

二  改革教学方式,合理开展课堂教学

(一)  教学方法的改革创新

高校课堂理论教学通常采用口述结合板书或多媒体进行,虽然这种教学方法对于教师更易于控制教学内容和节奏,在规定课时内呈现较多的信息量,但是会令学生觉得枯燥,不能有效调动学习积极性[7]。特别是对于程序设计这种技能实践类课程,与其专业课程不同,其教学目标不是通过讲授令学生理解知识点从而对整个课程体系进行系统学习,而是要掌握一门实践技能[8]。无论前期对方法要点的讲述多么详尽,最终目的都是要能灵活熟练地应用。美国国家训练实验室的学习金字塔理论中,提出学习分为被动学习和主动学习,其中被动学习包括听讲、阅读、视听和演示,通过这4种方法对知识的吸收比例分别为5%、10%、20%和30%,即如果采用被动学习方法,则对知识的透彻理解非常有限,而如果采取讨论、实践和讲授等主动学习方法,对知识的吸收比例可以上升到50%、70%和90%。由此可见,采用主动学习方法能够有效提高学生对知识的理解和吸收,特别是对于程序设计此类技能型课程。因此,在课堂教学中如果全程仅使用口述结合PPT的教学方法,学生往往会处于被动学习状态,其对知识点的掌握最多不超过30%,就会在课堂上经常出现知识和例题听起来很容易理解,但独立编程时却无从下手、程序报错时不会修改等问题。实践证明,常规的被动教学方法并不完全适用于程序设计这类课程的教学。在今后的课程教学改革中,教师课堂教学在使用口述和PPT进行知识点讲解的同时,还应增加编程实例和常见问题修改的演示环节,允许支持所有学生携带笔记本电脑,在教师演示时学生可以同步在自己的电脑上进行代码编写和错误修改。这样不仅能够帮助学生在课堂上紧跟教师思路,及时掌握课程内容的重点和难点,而且可以有效激发学生的学习热情和动力,与教师同步编程、修改、探讨,从被动学习转化为主动学习,进而更为深刻地理解和领会课堂讲授知识在实际编程中的应用。

(二)  算法学习贯穿教学始终

算法是指解决问题的思路和方法,在编程时可以使用不同的语言结构,但其背后的算法都是一致的,因此编程的核心就是算法,也被称为程序设计的灵魂[9]。多年教学实践中我们发现,很多初学者面对实际的编程任务无从下手,主要并不是由于语法规则和结构有多复杂,而是不知道如何对问题进行分解并通过编程来实现。例如在对数据进行大小排列时,如何将排序问题转化为循环结构,才是编程的关键。因此,对算法的理解越透彻则编程越容易。但在实际教学中,部分算法对于刚接触编程的本科生来说觉得难以理解,究其原因,主要因其早已熟悉习惯的是数学解析思维,是以自身面对问题的解决思路为出发点的,但在编程中解决问题的主体并不是我们自身,而是计算机,这就需要编程者在思考问题时进行主体转换,以计算机视角思考如何发挥其优势解决问题。以1到100(或更大数据)连加的简单问题为例,如果从自身解题的思路出发,首尾相加进行凑整的高斯法对于大脑计算是最简便快捷的,会是最容易选择的方法,但按此算法编写程序却繁琐复杂;如果以计算机为主体,由于大量重复的计算是其优势可以利用循环结构容易实现,因此,不断重复两数相加的这种对于人们来说不易计算的“笨办法”,却是计算机编程最容易实现的算法。再比如,对于典型的水仙花数问题,数学思维中需要联立方程求解,而对于计算机而言则可以利用计算优势对所有定义内整数进行检验。从以上举例中可以看到,在面对问题设计算法时,编程者需要将解决主体从个人转化为计算机,然而这种转换对于初学者并不容易,需要在实践中不断进行算法构建训练,才能熟练完成这种转换,形成下意识思维。然而教材中通常只在第一或第二章节给出算法的概念并例举一些经典案例,后续章节则主要介绍语法规则、选择和循环结构、数组及文件等方面的知识,不再强调算法。如果仅在一个章节的学习中进行算法讲解,而后续章节则侧重语法知识和结构的讲授,不对例题和算法进行归纳总结,那么学生很难对不同类型问题的算法有深入了解,进行思路转化训练,也就不能设计出合理有效的程序。因此,在课程教学过程中,对算法的学习应该是贯穿整个教学环节的。在教材的不同章节中,除了讲述循环、数组、子程序等内容,也应对例题相关算法进行梳理,令学生在整个课程的学习中,始终在学习和应用算法,牢固掌握典型问题解法,这才是程序设计的核心。

经典小说推荐

杂志订阅