APP下载

新工科教学中如何更好应对编程语言种类繁多的问题

2020-07-29席耀一唐永旺陈刚

大学教育 2020年8期
关键词:新工科实践能力

席耀一 唐永旺 陈刚

[摘 要]新工科教学强调提高学生的动手实践能力。目前,高校编程语言的教学存在教学时间少,讲述编程语言种类有限,缺乏总结不同语言共性特点与规律,教学内容更新慢等问题。针对这些问题,提出着力提升学生的自信心,带领学生找出规律和共性特点,培养学生计算思维,强调项目驱动的重要性的措施,以期进一步提高学生的动手实践能力。

[关键词]新工科; 编程教学; 实践能力; 语言种类

[中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2020)08-0087-03

新工科教学强调学生动手实践能力的提高,特别是编程能力和分析解决问题的能力[1-2]。如何上好高校编程语言类课程对于完成该目标具有重要意义。目前,高校该类课程教学一般仅是单纯围绕某一种或几种语言的语法与应用进行讲解,学生在有限的时间里仅能够掌握这些语言的语法和简单应用。然而在学生毕业走向工作岗位后,一般会需要用到从未学过的编程语言,这时部分学生会选择社会上的相关培训班重新学习该种语言,而部分学生则会表现得茫然无措。这一问题极大地限制了学生的就业前景,打击了学生的就业信心,与新工科教学的培养目标不符。

近年来,围绕如何提高编程语言教学质量的研究层出不穷,然而有一个问题没有得到应有的重视,即如何应对编程语言种类繁多的问题。在“互联网+”时代,与动手实践密切相关的编程语言层出不穷。据统计,目前共有编程语言600余种。在新工科教学实践过程中,如何更好地应对编程语言种类繁多的问题值得相关教育工作者思考。

文章首先分析了编程语言的特点,然后分析了高校编程语言教育的现状,最后针对存在的问题,提出了相关对策。

一、编程语言特点分析

正确总结編程语言的特点规律,有助于加深对编程语言的认识和规律把握,对于提出有效策略以应对编程语言种类繁多的问题具有积极意义。所谓万变不离其宗,本文以使用广泛的C语言为例,通过对C语言的分析,达到总结编程语言特点规律的目的。

C语言是编程语言界的常青树,作为大多数学生入门的第一门编程语言[3],其用途广泛,在动手实践教学中占有重要地位。C语言的特点在于执行效率高,生态体系健全,C语言主要从事操作系统开发、服务容器开发和嵌入式开发领域。虽然C语言可以解决大部分与编程相关的动手实践问题,但是在教学和实践应用中,C语言也存在调试困难和开发周期长等问题。作为公认的入门语言,C语言在大数据和“互联网+”时代有时反而不及Python和Java等语言应用广泛。实际上,每种语言都有自己的优势和缺陷,目前没有任何一种语言能够完美解决所有的动手实践问题。例如R语言在数据统计分析领域独树一帜,JavaScript语言在网页脚本编程中独领风骚,Python语言在深度学习领域目前的地位无可匹敌。这也是为什么有如此多的编程语言的原因之一。

时代在进步,编程语言本身也在不断发展完善。以C语言为例,1972年美国贝尔实验室的D.M.Ritchie在B语言的基础上设计出了C语言的第一个版本。从此开始,C语言先后在1989年、1994年、2001年和2004年历经了多次修订。目前流行的C语言编译系统大多是以美国国家标准化协会(American National Standards Institute,ANSI)指定的C语言标准为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则略有差别。其他语言的情况和C语言相似,也在不断推陈出新。例如Java每隔一定时间就会发行新版本,而且新版本相较于旧版本都会新增很多特性;Python3与Python2相比也发生了不少变化。

此外,不同编程语言之间多有相似之处和共性特点。例如都需要对要解决的问题进行逻辑建模,都需要考虑选择与循环等控制结构,都有整形、布尔型、浮点型等数据类型,变量标识符命名方式很多也一模一样。又如,面向对象类的程序设计语言都会讲述封装、继承和多态。

从上可以看出,现有的编程语言存在三大特点:一是缺乏普适性语言能够擅长处理所有应用领域问题;二是语言本身更新发展速度不断加快;三是不同编程语言之间存在相似之处和共性特点。

二、高校编程语言教学现状分析

编程语言有自身的特点,然而目前高校编程语言的教学现状却在一定程度上与编程语言自身的特点规律不相符。

(一)教学时间少

编程语言作为介于基础课和专业课之间的课程,在高校教学中所占的时间比例偏低[4-5],相关课程数目少,课时时长非常有限。在强调厚基础和强本领的今天,这种情况在短时间内很难改善。

编程类课程教学时间有限,导致很多教师在内容选择上以基础性语法介绍为主,缺乏大型实际应用案例分析与上机练习。相当一部分学生在有限的时间内学到的只是枯燥的语法和一些书本上的小练习,这让他们感觉编程没什么用。

(二)讲述编程语言种类有限,缺乏总结不同语言共性特点与规律

由于教学时间有限,高校所讲述的编程语言种类非常有限,缺乏总结不同语言共性特点与规律。多数高校在选择教学内容时,只能以较为基础和应用相对广泛的语言为对象,例如多数高校会开设C语言课程,部分高校还会开设Matlab、Python和Java程序设计等课程,但是开设其他语言的很少。

高校编程语言类的教学既要结合专业和时代需求[6],也应兼顾编程语言的特点。虽然部分理工类学科专业要求掌握该专业的一门常用语言即可,但是在大数据和“互联网+”时代,越来越多的职业岗位要求学生掌握多门编程语言。

(三)教学内容更新慢

编程语言本身在发展更新,尤其是进入大数据和“互联网+”时代后,其更新的速度不断加快。然而与编程语言的不断发展不同的是,高校相关课程教学内容的准备和更新相较于编程语言的发展却有一定的迟滞。这种情况在科技发展日新月异的今天是不可避免的,即编程语言类课程的开设很难做到永远与时代需求高度一致,一般都会具有一定的延后性。

从高校编程语言的教学现状来看,其存在以下三方面的矛盾和问题。

一是高校的编程语言教学现状和专业实际需求之间存在一定的矛盾,即专业实际需要掌握多种编程语言,而讲述不同编程语言的课程数目少,相关课时数不足。

二是现在高校教学中讲授具体语言使用的多,总结不同语言共性特点规律的少。

三是现在高校编程语言的教学实际与编程语言特点并不匹配,即前者内容的更新跟不上后者的发展速度。

上述问题和矛盾很多时候导致学生恐惧编程甚至认为自己不适合学习编程,这些问题和矛盾也是社会上与编程语言相关的培训班需求一直旺盛的原因之一。

三、相关对策

立足于现在高校的教学实际,单纯提高编程语言课程在总课时中所占的比重,并不能很好地解决上述矛盾和问题。因为新工科教学越来越强调提高学生的自主学习能力,很难在已经排好的专业学习计划中增加编程语言类课程。另外,即便是能够增加一定的教学时间,总体来看,增加的时间對于种类繁多且不断更新的编程语言来说也是杯水车薪。

所谓授人以鱼不如授人以渔,每一门具体的编程语言其实就是“鱼”,而如何快速学习掌握编程语言的方法才是真正的“渔”。在新工科时代背景下,与其被动更新专业所需的编程语言,不如在有限的教学时间内认真总结所有编程语言的共性特点和规律,提高学生对编程语言的认识高度,使其掌握编程语言的学习方法,为今后独立学习编程语言打下坚实基础。笔者在一线教学中经过摸索和思考,提出了以下对策,仅供参考。

(一)着力提升学生的自信心

编程语言学习一直是高校大学生的一个痛点,有的甚至在学习后得出自己不适合学习编程的结论。面对此现状,首先应该着力提升学生学习编程的自信心,要让学生明白编程语言只是人与计算机交互的工具。不管工具如何变化,交互的对象和目标始终没有变,因此不同的工具一定有相通之处,不必过度担心工具之间完全不同而裹足不前,不敢上手,甚至刚入门就要放弃。

在此过程中,教师也可以通过编程示范,特别是调试示范,甚至是不同编程语言之间的交叉示范,来释放学生内心对编程的恐惧感,让学生明白任何编程语言其实都不难。只要带着信心去学,耐心去调试,一定会发现编程语言其实非常简单,也一定会产生“山重水复疑无路,柳暗花明又一村”的感觉。

另外,多站在学生的角度看问题,思考其为何困惑、疑难点在哪、为什么会出错等,然后针对问题详细解释,这有助于学生从一开始就找准问题症结所在,从而提升学生对编程的自信心。

(二)带领学生找出规律和共性特点,培养学生的计算思维

笔者讲述过多门编程语言,在讲一门新的编程语言时,经常会设身处地从学生已有的编程基础出发,详细对比新语言和已学过语言之间的异同点,对于不同点重点详细讲解,对于相同点简单讲解,学生普遍反映此种教学方式接受快,理解也更为清晰。实际上很多编程语言是相通的,尤其是应用领域相同的编程语言。例如Java和C++有很多类似之处,而Java和C#也相差不多,与Python和Scala语言也有相互借鉴之处,它们的本质都是面向对象的思想,而且在语法中也有很多地方非常相似。如果精通一门,基本上一通百通。

此外,编程最核心的就是编程思想、算法及逻辑[7],这些内容都有共性之处,而语言只不过是一种规定,例如算法的三种基本结构的表达在不同语言中都有,语法也只是略有差异。如何让学生学会跳出编程,站在编程之上看待编程,培养他们的计算思维[8]是高校编程类教学中应该着力的一个地方。

带领学生找出编程规律和不同语言的共性特点有助于学生达到一门精、多门通的学习效果,学生不再需要掌握所有的语言,只是在需要用时花费少量的时间学习一下基本语法,即可快速上手实践。否则学生容易停留在纷繁复杂的语法层面,不能站在一定的高度看问题并总结特点规律,导致只见树木不见森林。

(三)强调项目驱动的重要性

纸上得来终觉浅,绝知此事要躬行。古人很早就告诉我们知识要拿来应用才能深刻领悟,真正学懂。编程语言作为一门动手要求很高的语言更是如此。教师课堂上的讲授更多只是帮助学生厘清某一门编程语言的体系和脉络,降低学生入门的难度,扮演的更多是“领路人”的角色。

正所谓师傅领进门,学艺在个人。无数的经验告诉我们单纯地依靠课堂讲授,死记硬背语法,对于提高编程能力帮助并不明显,而让学生在实战项目中练习,实现相关功能,调试代码BUG,是提高编程能力的捷径[9]。实战项目一般会涉及编程的方方面面,从逻辑建模到函数编写,从类定义到变量初始化等。如果能够将一个实战项目用代码完整实现,那么对于编程能力的提高是有巨大帮助的。在这期间,学生不仅能够巩固语法基本使用方法,而且能够灵活使用,甚至于巧用编写出更为简洁精炼的代码。这不仅能够磨砺调试技巧与方法,而且能够培养编程调试的耐心和信心。

教师在课堂上应该有目的将学生尽量从枯燥的编程语法死记硬背当中解放出来,以项目驱动方式带领大家在实战中应用编程语法,例如可以采用案例教学法[10]、任务导向法[11]等。所谓熟能生巧,用得多了自然就记住了,编程也会越来越顺手。实践得多了,再难学习的语言也能够从容应对。

四、结语

在科技发展日新月异的时代背景下,我们已经进入了终身学习时代。如果要及时跟上某一技术领域的发展而不被时代淘汰,就很有必要学习、掌握该领域的最新最热门的编程语言。高校编程语言教育相比时代发展,虽然有一定的滞后性,但是如果能够采用上述三项对策并不断总结经验,积极采用新的教学方法,相信对学生的编程学习将会有切实的帮助,能够真正提高学生的动手实践能力,让学生在快速变化的时代中始终能够游刃有余地应对编程需求,更好地适应未来社会对人才的要求。

[ 参 考 文 献 ]

[1] 张伟,王方,胡正发,等.面向新工科创新人才实践教育模式探索:以电子科学与技术专业为例[J].大学教育,2019(3):140-142.

[2] 叶华.基于能力培养的“C语言程序设计”课程教学改革探索[J].新课程研究(中旬刊),2012(1):107-108.

[3] 毛莉,朱丽娜,杜威.C语言程序设计课程改革分析与探索[J].大学教育,2013(22):81-82.

[4] 段湘煜.高校计算机编程课程教学改革探讨[J].学园,2017(18):47.

[5] 谢美萍,陈媛.计算机编程课程教学改革探讨[J].大学教育,2016(4):110-111.

[6] 孙杰,秦建勇,樊春年,等.面向工科专业的C语言程序设计课程教学改革探索[J].计算机教育,2016(11):73-75.

[7] 尹波,孟爱国,朱前飞,等.面向编程思维能力培养的C语言教学改革研究[J].计算机时代,2016(11):67-69+72.

[8] 陶虹平,张小青.促进计算思维落地:计算机编程上机实践教学改革[J].教育教学论坛,2018(48):78-79.

[9] 姚秀娟,薛坐远.项目教学法在高校《可编程控制技术》课程教学中的应用研究[J].高教学刊,2019(3):97-99.

[10] 吴海珍,蒋加伏.面向编程能力培养的VB语言教学改革[J].湖南师范大学教育科学学报,2005(6):120-122.

[11] 秦攀科,葛炳辉,刘涛,等.任务导向与翻转课堂在网络编程教学中的应用[J].计算机教育,2019(4):4-7.

[责任编辑:陈 明]

猜你喜欢

新工科实践能力
“新工科”背景下职业院校工程技术教育改革创新的思考
“新工科”建设的五个突破与初步探索
面向新工科的Python程序设计交叉融合案例教学
新工科形势下高校二级学院毕业设计管理探索
新工科背景下大学生创新创业教育探索
基于科研思维和实践能力培养的生物技术制药教学改革研究
高校单片机课程设计教学方法探讨
刍议大学生实践创新训练计划项目
品德教学利用微课开展预学的实践研究
“创新人才培养模式”下的实验教学改革探索