摘要: 原标题:文科与编程博弈 谁是赢家? 编程归来 实际上,编程并不是在2018年秋季学期第一次进入文科计算机课程。 早期的教学计划要求文科生必选两个学期
原标题:文科与编程博弈 谁是赢家?
编程归来
实际上,编程并不是在2018年秋季学期第一次进入文科计算机课程。
早期的教学计划要求文科生必选两个学期的文科计算机课程,第一学期教授计算机基础知识和办公自动化,第二学期教授程序设计。2000年后,随着Office的普及,第一学期的内容变为计算机基础知识和Office,第二学期则提供多个专题供学生自主选择学习,其中包括程序设计。2015年前后,随着毕业学分调整,文科计算机课程被压缩成一学期;同时,信息科学技术学院也开始了让编程回归文科计算机必修课程的探索。
2018年是试验的第3年,也是最后一年。此后,不管是在实验班还是基础班,编程都成为了必修内容。
但编程的回归并未得到普遍欢迎,反而引发了不少争论。
教学方式是争论的焦点。“老师没有操作代码,直接把例子放在课件上展示,当我们还在看代码是什么意思的时候,已经放过去很多张幻灯片了。”国际关系学院2018级本科生张宸赫说。他认为编程教学进度过快,效果不好,不如把课程分为两个学期,第一学期详细学习Office,第二学期慢慢学Python。“就像学语言一样,从学音标来开始。”
“培养科学家和培养实际使用者,这两个是有区别的。”负责文科计算机基础实验班教学的邓习峰老师猜测,第一次讲Python的老师可能采用了培养专业“码农”的方式,转换成适合文科生的教学方式需要一个过程。“另一个问题在于时间太短,”邓习峰分析,“现在的文科计算机课程由原来双学期的课变成单学期,时间缩短导致内容讲不完,不够精细,学生容易处于‘半生不熟’的状态。这是课程建设过程中要继续优化的内容。”
但他也表示,课程开设之初,学院就制定了针对文科生的教学计划,编程语言的选择就是特点之一。
“这次选择经过了复杂的决策,但后来我们都选了Python。”邓习峰说。相比其他编程语言,Python具有跨平台、入门简单、数据处理能力强、功能库丰富等优势。也正因此,近年它的流行程度上升很快,并成为2018年TIOBE编程语言排行榜年度语言。
由于处在过渡期,2018年秋季学期的编程教学没有设立统一大纲,不同班的教师自主选择授课方式和内容。“但只要是程序设计,内容基本是差不多的。”邓习峰说,“可能每个老师对难度的把控是不一致的,但到了2019年秋季学期就会相对统一。”同样,试卷也由各班教师自主命题,但均包括笔试与上机测试,按不同比例计入总成绩。
文科与编程
在邓习峰看来,“自用程序设计”是文科生学习编程的主要目的。相对于“公用程序设计”,后者目的在于给别人使用,而前者注重满足自己的需求。
“比如处理研究数据时,如果Excel解决不了,就可以先用Python解决,再交给Excel做可视化。” 他以自己研究的北京交通大数据举例:北京一天的交通数据约有1600万条,Excel完全无法处理,其他软件的效果也不好。但用Python处理只需要很短时间,就可以得出每个车站的客流量、乘客上下车时间、不同地区乘客的乘车偏好等信息。再将数据进行拓展,加入每个站的经纬度,结合地图后就可以分析哪些地方人最多、人群的流向是哪里。这就为国民经济的决策提供了保证。
而在人文学科中,中国历代人物传记数据库(CBDB)也为历史学研究提供了更多角度。CBDB依托程序设计与数据库技术,收录中国历代40余万人物的传记和谱系。借此,研究者可以查询某地在科举和出仕方面的表现,或将某特定时空下的个人创作连接起来进行分析。
“这样的技术应用到了历史学,很多概念的呈现会更加可视化、更加直观。”邓习峰认为,相比于定性研究,编程更多是在用数与算的概念去衡量我们所面对的世界。这在一定程度上弥补了中国传统思维的欠缺。
对2015级元培学院光华方向本科生韦铭杰而言,编程属于专业的一部分。在他学习的量化金融领域,编程的地位举足轻重。他表示,国外有些面试地点就有计算机,要求面试者现场编程。一次量化金融行业的实习面试中,面试官当场提出一个问题让应聘者写程序,并现场对程序进行点评。
由于当时的文科计算机教学不包含程序设计,韦铭杰特意选择了计算概论B。在他看来,学校学的和工作用的编程是有差异的,实际用的编程一定比学校学的复杂,但如果没有课程内容做基础,是做不到实际运用的。
2012级经济学院本科生唐奕波在大四时尝试过自学编程,因为感到投入产出比太低而放弃。他认为编程不能只依赖于效率较低的自学,更希望能有比较熟练的人引导,这样有问题可以直接问他们。
编程无用?
但是,对于大部分选择就业的学生,编程并不是必备技能,在应聘中也不一定锦上添花。
“(就业对编程是否有要求)主要看找哪方面的工作。” 2012级经济学院本科生沈士竣介绍,“做量化金融或搞学术的话,对编程的要求还是很高的。但如果做行业员、投行、基金、PE(私募股权投资)等,要求不高。”从本科到研究生,他接触的编程主要集中在MATLAB、Stata等数据分析软件。但对于学习Python、C++等编程语言,他表示尚未考虑:“暂时接触不到。”
同样,虽然唐奕波从事的股票研究行业需要相关程序,但他所在公司有专门的IT部门负责研发模块,自己基本用不上程序设计。他告诉记者,股票研究企业招聘时,除非是量化研究,否则就对编程没有任何要求,也不会有“掌握编程优先”的情况。
这也正是很多文科生心中的疑虑:如果未来用不到编程,现在花很大力气去学,有什么意义?
信息科学技术学院的郭炜老师认为,“没有用”很多时候是“不会用”导致的。“如果会编程的话,你可以主动发现这样的机会,在工作中展示自己。这个才能对你的职业发展很有利。”他希望学生不要抱着“这个东西好像没什么用,我就不学”的想法。“那很可能以后有用却来不及再学,就错失这个机会了。”
同样受到重视的,还有编程学习对思维的影响。邓习峰很看重编程对文科生数理逻辑和计算思维的养成。“比如,把一个大的任务分解成几个小的任务,或定义若干函数,每一个都要把自己一段的任务做好。实际上这是一种思维的训练。”
2016级信息科学技术学院本科生吉如一也有相同的看法。“编程和说话不一样。说话可以有些模糊不清的地方,但是编程必须很严谨,逻辑性很强,不能出一点失误。”
热遍全国
当校园中探讨着文科生是否需要学编程时,编程热已经遍布全国,乃至世界。
在百度指数中以“编程”为关键词进行分析,早在2012年,“编程”的媒体指数就经历过一次高峰,之后多次登上新闻头条。进入2018年,媒体指数又迎来高潮。正如郭炜所说:“现在所有人都要学编程。”
“原因很明显。”郭炜说,“计算机在各行各业都得到了很广泛的应用。所以,不管什么行业,你很快就会遇到需要编程的场合。以后编程可能不那么‘热’了,我觉得是因为它就像数学一样,每个人都要学了。”
邓习峰认为,编程入门难度的变化也是原因之一。随着软件提供的编程环境让程序设计的门槛降低,“热”形成了初步条件。“就像计算机的操作,原来是字符界面,进入图形化的界面后,计算机在全国、全世界都更加的普及。”邓习峰说,“程序设计是联系逻辑思维、实证思维和计算思维的重要途径,它能帮我们更好地理解当今信息社会。我相信未来它会成为中国大学生必备的基础技能。”
在哈佛大学,编程已经成为基础课程。CS50是哈佛大学的编程公开课,面向所有专业的学生,讲授包括C, PHP, JavaScript, SQL, CSS, HTML在内的多种语言,早在2015年秋季学期就已经成为校内最热门的课程,得到超过800人注册,其中只有10%有过编程背景。
“我相信我们能做到比它更好。”邓习峰说。
何去何从
“课程压力很大,这是推行编程的代价。”邓习峰说,“但我们还是要坚持,我认为我们走的是正确的方向,更多老师也都已经认可了。这是大势所趋。”
但文科计算机课程依然需要改善。更好的教学效果需要更多的时间。由于学校的课时已经非常紧张,增开课时并不现实,通过引入新技术提高上课效率是当下最好的办法。邓习峰表示,未来计划采用MOOC(massive open online courses,大规模网络公开课,俗称“慕课”)和翻转课堂的形式,把Office和计算机基础知识放到网上供学生自学,给编程教学更多课堂时间。
同时,上机课的教学也会引入新的形式。“比如说我们把每一次作业都做出多种解决方案,学生之间可以互相比较,看有没有更好的方案,让学习的质量更高。”此外,他表示如果时间允许,将会设计“百练百讲”,为每个教学专题附加难度适中的题库,帮助学生通过实践,尽快上手程序设计。
邓习峰还认为,学生需要改变抵触情绪。在文科计算机课程纳入编程前,Office和计算机基础知识是主要的学习内容,大部分同学对此已有一定基础,学起来相对容易。相比之下,编程的难度显然更高。“如果这门课改个名字,叫‘计算概论C’,可能很多人心里就平衡了。”他开玩笑说。
但他认为,程序设计绝不是文科生无法接触的。他表示,在Windows没流行起来之前,文科生用DOS系统学FoxBASE、FoxPro(编程软件),甚至没有可视化界面,但学的效果也不错。“当然,对文科生的教授方法,比如说教学的案例、内容需要我们去优化,但是不能说文科生就学不会程序设计。”
变化仍在继续。邓习峰相信,随着课程本身与文科生结合更紧密,编程一定会走进文科生内心,达到最终目标: “通过程序设计,文科生能掌握一门伴随自己工作和学习的程序设计语言,也能更好地去理解当今的信息技术。