手机版
您的当前位置: 老骥秘书网 > 范文大全 > 公文范文 > 面向计算思维的测绘地理信息类C#程序设计案例教学实践

面向计算思维的测绘地理信息类C#程序设计案例教学实践

朱进 杨朝辉 杜景龙 陈泰生 张委伟

摘  要:根据测绘地理信息类专业学生的培养要求,在C#程序设计课程的教学中,通过案例教学的方式培养学生的计算思维能力。以4个有趣实用且与其他测绘地理信息类课程相关的教学案例为例,教学内容涉及坐标转换、孪生素数、科赫雪花作图和数据库读取绘制,引导学生分析问题并设计相应的解决方案,展现学生知识点背后所蕴含的计算思维,其中包括抽象、自动化、分解、递归等。案例实践表明,采用面向计算思维的案例式教学,显著提高了学生的学习兴趣和计算思维能力,取得了良好的教学效果。

关键词:计算思维;
程序设计;
测绘地理信息;
案例教学

中图分类号:TP39;
G434 文献标识码:A 文章编号:2096-4706(2023)10-0177-05

Abstract:
According to the training requirements of students majoring in surveying and mapping geographic information, in the teaching of the C# programming course, case teaching is used to cultivate students" computational thinking ability. Taking four interesting and practical teaching cases related to other surveying and mapping geographic information courses as examples, the teaching content involves coordinate transformation, twin prime numbers, Koch snowflake painting, and database reading and drawing, guiding students to analyze problems and design corresponding solutions, and demonstrating the computational thinking behind students" knowledge points, including abstraction, automation, decomposition, and recursion. Case practice shows that adopting case-based teaching oriented to computational thinking significantly improves students" learning interest and computational thinking ability, and achieves good teaching results.

Keywords:
computational thinking; programming; surveying and mapping geographic information; case teaching

0  引  言

C#程序设计是国内众多高校测绘地理信息类专业中一门重要的计算机程序设计基础课程,具有较强的理论性、实践性和应用性。这门课程是组件式GIS(Geographic Information System)开发、空间数据结构、空间数据库、测量平差程序设计、计算机图形学、数字图像处理、Web程序设计和GIS设计与开发实习等课程的编程基础,为这些课程涉及的算法、功能和模块的实现提供了开发环境和语言基础,使学生获得在测绘地理信息工程环境中分析、设计、开发、测试和运行软件系统的技能。该课程通常在大一学年开设,其能否激发和培养学生程序设计的兴趣和能力,决定着学生能否奠定良好的编程基础及其是否愿意在后续专业课程的学习中投入足够的时间和精力,可以说该课程在整个课程体系中具有极其重要的基础作用。

测绘地理信息类专业C#程序设计课程的教学目标是培养学生运用C#高级程序设计语言来设计和实现软件系统的能力,解决测绘地理信息算法实现和工程应用问题。在传统的程序设计课程教学中,教师把程序设计语言的各个知识点填鸭式地灌输给学生,展示代码片段,让学生在上机时验证课本中的程序,巩固所学的语法和知识点。这种传统教学方式的教学效果往往不够理想,与教学目标相去甚远,许多学生对课堂内容不感兴趣,只能死记硬背一些语法知识和程序片段,不会从根本上分析问题并设计程序求解,没有养成良好的思维习惯,有些学生甚至是在付出大量时间和精力后依然无法理解基本的程序结构。

近十年来,在中国大学计算机基础课程教育中,教师越来越重视培养学生的计算思维(Computational Thinking)。美国卡内基梅隆大学的周以真(Jeannette M. Wing)教授于2006年提出一種思维方式——计算思维[1],即基于计算机科学的基础概念进行问题求解、系统设计,以及进行人类行为理解等揭示计算机科学之广度的思维活动,能够为问题的有效解决提供一系列的观点和方法,可以更好地加深人们对计算本质以及计算机求解问题的理解,并且还能克服“知识鸿沟”,便于计算机科学家与其他领域专家交流切磋。随后,美国、英国、澳大利亚等欧美国家都将计算思维作为计算机信息技术教育的重要内容[2]。在国内,教育部和中国计算机学会等组织和机构,较早对计算思维进行了探讨。2010年,C9高校联盟发布《九校联盟(C9)计算机基础教学发展战略联合声明》,强调要把培养学生计算思维能力作为计算机基础教学中一项长期而重要的核心任务[3]。2013年,教育部大学计算机课程教学指导委员会发表《计算机教学改革宣言》,指出以计算思维为切入点的大学计算机课程改革是大学计算机课程的第三次重大改革,通过培养学生计算思维的意识来提高其计算机应用水平[4]。随着第三次大学计算机课程改革的开展,越来越多的专家学者开始对计算思维的概念、目标与培养等方面的内容展开了深入的探讨和研究[5-9]。

在测绘地理信息类专业C#程序设计的教学过程中,通过引导和培养学生的计算思维,可以实现提升学生计算思维能力的目标。在国内,针对计算思维的教学改革研究,大多集中于探讨计算思维的概念、内涵、特征,对培养策略的研究相对甚少。本研究从计算思维的应用角度出发,对计算思维进行深入的剖析,结合测绘地理信息类专业的学科特点,针对C#程序设计课程的重要知识点设计相应案例,通过有趣且有用的案例,逐步引导学生提出问题、分析问题、分解问题和编程求解,在教学内容中融入对学生计算思维能力的培养。

1  计算思维的概念和特征

1.1  计算思维的概念

计算思维概念的提出,引起了学术界的共鸣,国内外学者在周以真教授观点的基础之上,纷纷针对计算思维提出了自己的看法。蒋宗礼认为计算思维是一种与计算机及其特有的问题求解紧密相关的思维形式和方法,在求解问题时,全方位、全周期有意识地使用计算机科学家们所采用的方法、技术、工具、环境和资源,在面对不同人群的能力培养要求时计算思维有朴素计算思维、狭义计算思维和广义计算思维之分[10]。任友群等认为,计算思维是一种独特的解决问题的过程,它可以帮助人们更好地理解和分析复杂问题,从而形成具有形式化、模块化、自动化、系统化等计算特征的解决方案[11];
龚沛曾认为计算思维包含意识、方法和能力三个层次[12];
陈国良构建了以计算为核心,以抽象、自动化、设计、通信、协作、记忆、评估为基本概念的带有层次结构的计算思维表述体系框架,认为计算思维是一种包含数学思维、工程思维和科学思维的综合性思维,它的核心概念是抽象和自动化[13]。

综合来看,计算思维是一种求解问题的思维方式,包含问题抽象、模型构建、算法设计、模型求解和问题延伸等过程,其本质是抽象和自动化,具体方法包括算法思维、抽象、分解、概括、评估、迭代、递归等。

1.2  计算思维的特征

还有许多专家对计算思维的特征进行了研究。陈国良认为计算思维为人们提供了理解自然、社会万千事物的一个新视角,是一种解决问题的新方法,能够创造知识而非仅仅使用信息,提高了人们的创造力和创新力[13];
李廉认为计算思维的标志是有限性(表达结论的方式有限)、确定性(语义确定)和机械性(通过机械步骤实现),其结论具有构造性、可操作性和可行性[14];
任友群认为计算思维提供一种能够广泛应用于工作、学习和生活中各类问题的新视角,还可以作为计算机科学与其他学科交流的桥梁[11];
钟柏昌认为计算思维具有重要的基础性教育价值,具有改造世界和认识世界的丰富内涵及功能,计算思维可以应用于不同的领域,具有明显的社会性和外在价值[15];
李锋认为计算思维能够提高学生利用信息技术解决问题的能力,提升学生对信息技术应用的批判能力及其在信息社会中的自我调节能力,对于个人成长和发展具有重要的作用[16];
曹杨璐认为对学生计算思维的培养还应包括概况和迁移能力,做到“举一反三,触类旁通”[17]。

从上述不同学者的观点可以发现,计算思维具有有限性、确定性、机械性和社会化等特征,是一种利用计算工具并融合数学思维、逻辑思维和工程思维的思维方式,是一种求解问题的途径,可以用于构建跨学科知识的桥梁,提高学生的计算素养和利用信息技术的创造力和批判能力。

2  面向计算思维的案例教学

2.1  教学案例设计

计算思维作为一种思维方式,可以广泛应用于其他相关学科,是信息社会中每个人的基本能力和素养。对学生计算思维能力的培养,应落实到具体的教学内容当中。C#程序设计是一门测绘地理信息类专业的基础程序设计开发课程,在课程教学中,可以结合教学内容和测绘地理信息类其他专业课的知识(如地图学、计算机图形学和空间数据库等),通过案例式教学,让学生在教师精心设计的案例中,体会和领悟计算思维的神奇和美妙。具体来说,原有的教学内容不需要调整,但需要重新规划和梳理,针对每个教学内容的知识点设计相应的案例,在案例中融入计算思维的基本概念,引导学生发现问题、分析问题、转化问题,突出计算思维中的抽象、分解、递归、自动化等方法,培养学生的计算思维能力和创造力。

针对C#程序设计的教学内容,结合测绘地理信息类课程的特点,我们在不同的章节设计了教学案例,如表1所示。表1展示了部分典型案例所涉及的计算思维方法和对应的教学内容,这些案例都来源于实际问题,是计算思维跨学科的应用,部分案例与其他测绘地理信息类课程相关,可以为其他课程的学习打下良好的铺垫,启发和培养学生的计算思维意识和能力。

2.2  案例1:坐标转换

针对顺序结构这一教学内容,设计坐标转换案例,案例与地图学中的地图投影相关。给定一个地点的经纬度(即地理坐标),并给出投影变换的数学公式,然后将其转换为投影坐标(如在WebGIS中常用的Web Mercator投影)。此案例较为简单,同学们可以根据公式直接求解问题。但需要在教学中让学生体会案例中计算思维的自动化和机械性特征,以及计算思维与数学思维的相关性。

课后可以进一步对案例进行延伸,如在作业中给定两个地点的经纬度,要求学生利用中学学过的欧氏距离公式计算两个地点的直线距离,有了课上案例的基础,同学们自然可以联想到先计算每个地点的投影坐标,再计算两点之间的距离。此外,还可以给出大圆距离(Great-circle distance),大圆距离为球面上两点之间的最小距离,如图1所示,让同学们直接根据经纬度来计算两点之间的距离,并比较计算结果与欧氏距离之间的差别,引导学生自己上网进一步学习为什么会有这样的差别,激发学生的学习兴趣。通过案例延伸,同学们知晓同一个问题会有不同的求解方法,鼓勵同学们从多种视角思考问题,并比较不同求解方法的优劣。

2.3  案例2:孪生素数

在选择结构、循环结构和函数(方法)的教学章节中,设计孪生素数教学案例。案例分为两部分,第一部分在选择结构和循环结构部分给出,案例目标是判断一个数是否为素数。教学中要引导学生根据素数的定义进行思考,基于计算思维逐步对问题进行分解,将问题分解为循环以及在每个循环步中判断是否能够整除,求解思路清晰之后再进行编程实现。案例第二部分有关孪生素数(Twin Prime)猜想,在函数(方法)部分给出。孪生素数是相差2的素数对,例如3和5、5和7、11和13等,猜想表述为存在无穷多个素数p,使得p+2是素数。案例表述为输出1~10 000之间的孪生素数,在教学中启发学生利用计算思维中的抽象方法,将判断素数的实现抽象为一个函数,再结合孪生素数的定义,将问题分解为在循环中判断两个相邻素数的差是否为2,程序如图2所示。

在介绍孪生素数猜想时,教师可以介绍一些相关的背景:2013年5月,华人数学家张益唐在孪生素数研究方面取得突破性进展,他证明了孪生素数猜想的一个弱化形式,通过数学家的故事来激发学生的学习兴趣,鼓励他们突破前人,勇攀科研高峰。

2.4  案例3:海龟作图-科赫雪花

海龟作图最早来源于Python语言的Turtle库[18],该模块是Python语言基础的图形绘制模块,它利用程序语句控制一只可爱的小海龟绘制图形。Turtle绘制图形的概念起源于1969年,早期用于LOGO语言和儿童编程教学中。由于这一方法非常直观有趣,很容易被初学者所接受,随后被引入Python语言。但C#语言没有Turtle库,为了激发学生的学习兴趣,我们在前几年的教学中,参照Python语言的Turtle库,设计开发了一个Turtle类,包含前进、后退、旋转等基本语句,用于基础图形绘制。最近,Github开源社区的开发者Nakov开发一个功能更为强大的Turtle Graphics.NET库[19],用户可以利用Visual Studio的Nuget工具直接下载,可以很好地满足教学需要。

在图形绘制章节,利用Turtle类来绘制科赫雪花(Koch Snowflake)[20],如图3、图4所示。科赫雪花也称为科赫曲线,是一种分形曲线,其形态似雪花,早在1904年率先由瑞典数学家科赫(Koch)提出。在教学中,利用计算思维中的分解方法将绘制过程分解为三步,同时根据科赫雪花的绘制步骤,自然而然地引出计算思维中的递归概念,让同学们深入理解递归中的“递”和“归”两个主要过程。如果学生们对海龟作图非常感兴趣,在课后可以布置开放类的作业,让同学们绘制自己感兴趣的图形,一些同学绘制了生动有趣的图形,如形象逼真的动漫人物形象等。

2.5  案例4:读取数据库绘制苏州各乡镇及其名称

在利用ADO.NET框架读写数据库的教学章节中,可以设计如下教学案例。教师给定一个文本文件,文本文件中的每一行都保存着苏州市一个镇的信息,包含三个以上的字段,一个是镇的经度,一个是镇的纬度,其他字段包含镇的名称、人口、GDP等属性信息,要求学生通过编程将该文本文件的数据先导入微软SQL Server数据库,再读取数据库,最后将每个镇的空间位置和名称(或其他属性信息)绘制出来。

该案例与GIS原理(GIS信息包含空间信息和属性信息)、空间数据库等课程相关。在教学中,引导同学们对问题进行分解,分解为写入数据库、读取数据库和绘制图形三个部分,由于问题给出的是镇的经纬度信息,还必须利用案例1的知识对坐标进行转换得到投影坐标,写入数据库这一步还可以继续分解为读取文件信息、坐标转换和写入数据库三个步骤。在读取数据库后,由于坐标是投影坐标,可以启发同学们利用屏幕坐标和投影坐标间的比例关系,求得从投影坐标转换得到屏幕坐标的公式。在绘制图形阶段,利用转换后的屏幕坐标绘制每个镇的空间和属性信息,如图5所示。此外,一个镇本身区域很大,但在案例中被抽象为一个点,针对一个镇的相关信息,设计相应的类来表示该镇的空间和属性信息,这都是计算思维中抽象的体现。

案例存储的是点位置信息,课后还可以给同学们布置思考题,让学生思考如何将线或面存储至数据库,为空间数据库等课程做铺垫。

3  教学实践要点

在通过案例教学对学生进行计算思维能力培养的实践当中,为达到更好的教学效果,还需注意以下幾点:

1)提炼案例背后蕴含的计算思维。培养学生的计算思维能力,不是给原有教学内容“贴一层皮”,也不是张口闭口不离计算思维。而是需要合理编排教学内容,精心设计教学案例,在案例中提炼、剖析和展示案例背后蕴含的计算思维,引发学生的求知欲和心理共鸣。

2)教师自己要有计算思维的意识和能力。教师必须拥有终身学习的意识和计算思维能力,有时候很多案例来源于生活或其他场景(如孪生素数案例就是笔者在了解张益唐教授部分解决孪生素数猜想后设计的),在日常生活中碰到的一些问题可以将其设计为有趣且有用的案例。这对教师也提出了更高的要求,需要不断积累和更新教学案例。

3)在提问、作业等教学环节加大计算思维的考察比重。传统的程序设计课程,更加注重语法教学,在作业等教学环节学生只需写出正确的程序即可。引入计算思维的案例教学后,在课堂提问、作业和考试等环节中,针对某一具体问题,我们让学生口头或用文字描述出该问题的求解思路和步骤,以及用到了计算思维中的哪些方法,鼓励同学们以计算思维的方式思考问题。

4)采用错误编程和冗余编程的方式加强学生的程序调试能力。程序设计最终需要落实到能输出正确结果的程序上来,在启发和引导同学们计算思维的同时,在编程环节中,还应注重加强学生的编程能力,特别是调试能力。因此,可以在程序中,故意设置一个错误的地方,如索引超过数组的大小、递归程序递归层次过深等,让同学们熟知常见的程序错误,不断提高自己的程序调试能力。此外,还可以以冗余编程的方式,在一些复杂的程序中打印输出一些中间变量,以更好地观察程序的执行过程。

实践表明,在经过面向计算思维的案例式教学改革后,學生的学习兴趣被大大地激发起来,学生的计算思维意识和能力得到了显著的提高,在面对一些复杂的问题时,许多学生知道该如何抽象和分解问题,对课程前后内容也能够融会贯通。同时,学生们的程序编写和调试能力也得到了加强,对测绘地理信息类其他专业课程也有了更深的认识。

4  结  论

在测绘地理信息类专业C#程序设计课程的教学过程中,我们全面梳理编排教学内容,精心设计有趣有用的教学案例,根据需要开发程序库,将程序设计课程教学内容中枯燥的语法知识点与案例及其他课程(地图学、GIS原理、空间数据库、计算机图形学等)相结合,在教学过程中,引导学生分析问题并设计相应的解决方案,展示知识点背后蕴含的计算思维。经过面向计算思维的教学案例实践后,学生的学习兴趣和计算思维能力显著提高。同时,在对学生计算思维能力的培养方面对教师提出了更高的要求,教师需要终身学习,在实践中积累新鲜有趣的教学案例,不断探索对学生进行计算思维能力培养所需的教学模式和教学手段,以达到更好的教学效果。

参考文献:

[1] WING J M. Computational thinking [J].Communications of the ACM,2006,49(3):33-35.

[2] 肖广德,高丹阳.计算思维的培养:高中信息技术课程的新选择 [J].现代教育技术,2015,25(7):38-43.

[3] 董荣胜.《九校联盟(C9)计算机基础教学发展战略联合声明》呼唤教育的转型 [J].中国大学教学,2010(10):14-15.

[4] 教育部高等学校大学计算机课程教学指导委员会.计算思维教学改革宣言 [J].中国大学教学,2013(7):7-10+17.

[5] 王正青,李灵通,田霄.指向计算思维培养:美国纽约州K-12计算机科学教育体系建设 [J].现代远程教育研究,2022,34(6):43-53.

[6] 陈娟娟,陈凯亮.计算机支持的科学建模学习:多学段科学教育中科学和计算思维协同发展路径 [J].远程教育杂志,2022,40(6):22-33.

[7] 武建鑫,宋雨.计算思维教育公平何以可能?——《面向包容性世界的计算思维:教育工作者学习和行动的指南》的解读与启示 [J].开放教育研究,2022,28(6):72-80.

[8] 彭建蕊,李美凤.我国计算思维研究热点与发展趋势解析 [J].中国教育技术装备,2022,539:1-4.

[9] 黄贤玲,杨宁,曹琦婷.计算思维与学科融合的可行性分析研究 [J].福建电脑,2022,38(11):54-58.

[10] 蒋宗礼.计算思维之我见 [J].中国大学教学,2013(9):5-10.

[11] 任友群,隋丰蔚,李锋.数字土著何以可能?——也谈计算思维进入中小学信息技术教育的必要性和可能性 [J].中国电化教育,2016(1):2-8.

[12] 龚沛曾,杨志强.大学计算机基础教学中的计算思维培养 [J].中国大学教学,2012(5):51-54.

[13] 陈国良,董荣胜.计算思维的表述体系 [J].中国大学教学,2013(12):22-26.

[14] 李廉.计算思维——概念与挑战 [J].中国大学教学,2012(1):7-12.

[15] 钟柏昌,李艺.计算思维的概念演进与信息技术课程的价值追求 [J].课程.教材.教法,2015,35(7):87-93.

[16] 李锋,王吉庆.计算思维:信息技术课程的一种内在价值 [J].中国电化教育,2013(8):19-23.

[17] 曹杨璐,谢忠新.信息技术学科计算思维的迁移能力培养实践研究 [J].中国信息技术教育,2021(15):54-57+100.

[18] Python. turtle — Turtle graphics [EB/OL].[2022-12-17].https://docs.python.org/3/library/turtle.html.

[19] GitHub-nakov/TurtleGraphics. NET:
C# Turtle Graphics library - for teaching kids to code [EB/OL].[2022-12-17].https://github.com/nakov/TurtleGraphics.NET.

[20] Wolfram MathWorld. Koch Snowflake [EB/OL].[2022-12-17].https://mathworld.wolfram.com/KochSnowflake.html.

作者简介:朱进(1983—),男,汉族,江苏南京人,讲师,博士研究生,研究方向:地理信息系统开发、地理大数据。

猜你喜欢测绘地理信息计算思维案例教学智慧城市建设中测绘地理信息的作用及建设与发展环球人文地理·评论版(2017年1期)2017-04-09推进学会服务站建设 助力测绘地理信息产业发展学会(2017年1期)2017-03-08程序设计课程中计算思维和应用能力培养问题研究计算机教育(2016年7期)2016-11-10民族高校C语言程序设计课程教学改革的研究软件工程(2016年8期)2016-10-25算法的案例教学探析电脑知识与技术(2016年21期)2016-10-18浅谈艺术专业学生计算思维能力的培养电脑知识与技术(2016年21期)2016-10-18案例教学在机械创新设计课程中的应用考试周刊(2016年77期)2016-10-09马克思主义基本原理概论课案例教学的几点思考大学教育(2016年9期)2016-10-09EXCEL在《投入产出法》案例教学中的应用科技视界(2016年20期)2016-09-29《运筹学》教学模式探讨科技视界(2016年20期)2016-09-29

老骥秘书网 https://www.round-online.com

Copyright © 2002-2018 . 老骥秘书网 版权所有

Top