摘要
信息技术应该在新文科建设中发挥显著的作用,其中一个重要的方面就是加强文科学生计算思维的培养,一个正在兴起的交叉学科就是计算社会科学。本文介绍了一门全新的文科课程的教学实践,该课程以若干社会科学经典问题为抓手,从计算思维的视角展开讨论,落实到实际编程进行相关模型的模拟分析,展现了在文科开设具有深度计算要求课程的潜力。
关键词
新文科;计算思维;教学实践;问题驱动
文科学生需要加强计算思维的培养,已成为一种普遍的共识。《新文科建设宣言》中所倡导的“融入现代信息技术赋能文科教育”“主动适应并借力现代信息技术手段,实现文科教育高质量高水平发展”就包含这样的指向。同时,《新文科建设宣言》指出要“紧紧抓住课程这一最基础最关键的要素,持续推动教育教学内容更新”“鼓励支持高校开设跨学科跨专业新兴交叉课程、实践教学课程,培养学生的跨领域知识融通能力和实践能力”,强调了课程建设的重要性。
过去几十年来,文科计算机教育在我国高校是得到重视的,每个学校至少有一门专门的必修课,名为“计算机文化基础”或“大学计算机”等。然而,随着信息技术的发展,经济社会数字化转型浪潮的兴起,仅一门那样的课程已不能满足要求,人们呼吁更有深度的文科计算机课程的建设。作为对这种需求的响应,北京大学在年秋季新开出了一门选修课“社会科学研究问题的计算实践”,面向社会科学专业二年级以上本科生,计2学分。
课程的初衷,是希望让有兴趣和志趣的文科生在常规的文科计算机课程之外,有机会对计算在社会科学问题研究中的作用,从体验和认识上达到一个新的高度。
一
课程设计思想
“社会科学研究问题的计算实践”课程描述中的学习目标是这样写的:通过本课程,预期学习者可以在问题抽象、计算抽象、算法设计,以及Python编程实现等方面,达到一定成熟度,初步形成一种通过计算的途径来分析研究社会科学问题的态度和技能。
为达成上述学习目标的课程设计可能有多种方案。例如可能是以实验课的形式指导学生完成几个大作业,还可能是直接带着学生分小组做几个基于大数据的研究项目,等等。由于这些都还没有现成的东西可参照,很大程度就看教师自己的偏好和积累了。
我们采用的是一种“问题驱动,计算落地”的做法。这里的“问题”,主要指社会科学经典研究问题,而不是应用问题。在课程说明中是这样写的:基于若干经典社会科学问题研究成果,从计算的视角展开讨论,强调通过编写和运行计算机程序,观察、推理和评估相关模型所展现的性质和特征,探索相关社会现象的机制、原理和原因。所涉及的问题包括(但不限于)社会网络结构分析、社会网络演化规律、博弈现象、匹配市场机制、网络结构平衡的判别、网络级联的过程,以及富者愈富模型的仿真与验证、表决机制等方面。
总结起来,有十多个这样的问题。所谓“问题驱动”,指的是在课堂上我们总是从这些问题所体现的社会现象或社会机制开始,进行适当的抽象,形成一个研究问题的表达,进而建立可供严谨分析讨论的模型。对此,下一节分别有较为详细的论述。
所谓“计算落地”,这里就是指对每个问题的学习和理解,最后都要以一个计算机程序的形式予以体现。也就是说,对于所形成的模型,都要通过计算得到一种“解”。这样,课上对每个问题的讨论基本都遵循图1所示的框架。
不过,特别值得强调的是,我不认为这是一门单纯的“编程课”,它是问题和方法的学习和研究课。编程只是为了更好地学习。体现在具体教学实践的时间安排上,就是每次课前面用大约80分钟讲问题,后面20分钟布置作业。总结起来,学生需要完成如下所列的作业。
HW0:节点聚集系数和边嵌入性的计算;
HW1:友谊悖论的验证;
HW2:同质性作用下的网络演化过程;
HW3:极化关系网络的结构平衡检测;
HW4:重复囚徒困境博弈的循环赛;
HW5:匹配市场的实现;
HW6:网络效应下的价格策略比较;
HW7:网络级联过程的仿真;
HW8:富者愈富过程的性质验证;
HW9:网络中影响力与共识的关系;
HW10:孔多塞模型下的表决综合。
二
课程主要内容
下面简要介绍所讨论的社会科学问题以及相关计算实践作业的要求,每一个问题用两个学时,每次作业要求在一周内完成。下面的顺序也就是教学展开的顺序。
1.图论与社会网络基础
这里讲的图论完全是“实用主义”的,即只是包括一些为社会网络相关主题的学习所需要的基本术语概念。同时,强调了邻接矩阵(A)及其幂次在网络结构意义下的解释,例如A2[i,j]表达的是节点i和j之间长度为2的路径的条数。在社会网络的语境下,就是i和j的共同朋友的个数,等等。它们是通常图论课不涉及的。这样做一是让学生能学习矩阵运算与网络结构信息的对应关系,二是由于矩阵乘幂很容易用程序实现,作为起步是比较合适的。
这一课布置了两个作业(HW0和HW1)。HW0从程序设计的要求来看很简单,基本上就是矩阵乘幂的直接应用,算是“预热”。HW1通过随机生成一些社会网络图验证“友谊悖论”——节点的度小于邻居节点度的均值,则是一个非平凡的任务了。
2.同质性及其在社会网络演化中的作用
关于同质性的讨论是社会科学中的一个常见话题,它对网络结构演化的影响可以抽象归结为三元闭包、社团闭包和会员闭包三种机制。这样,如果说上一次课讨论的是社会网络的静态特征问题,这一次课讨论的就是网络的动态过程了,而这个过程正好也是可以用矩阵相乘的结果来驱动的,于是我们再一次看到了矩阵运算可以揭示网络结构的意义。
这一课的计算实践问题(HW2)就是利用同质性原理,在三个门槛值(分别对应三元闭包、社团闭包和会员闭包)的控制下,采用两个矩阵,按时间步模拟仿真一个社会归属网中边的变化,也就隐含了其中社会网络的变化。
3.极化关系下网络结构的稳定性
所谓“极化关系”,指的是网络中的关系分为“友好”和“敌对”两种,这在人际关系和国际关系的一些特定时期都是显著的。在这样的模型中,结构的稳定性是