毕业季,北大计算机本科毕业生文龙和实验室的同伴合影留念。文龙给我留了条信息。这位7月刚刚从北大毕业的本科生,第二天出现在悉尼,他是去参加ICML(机器学习领域的顶级学术会议)。早些时候,他发表了两篇ICML的会议论文,一篇是在北大的实验室做出的,另一篇则是卡耐基梅隆大学暑期科研实习的产物。
这让我联想起李文新教授的那份自豪和自信。她是北大信息科学技术学院负责本科生教育的副院长。在几周前举办的未来计算机教育峰会上,她谈及北大在计算机本科教育上的独到之处,给我留下了深刻印象。
从为了提高学生编程能力而上线的评测系统,到为学有余力者准备的实验班,到有趣(很虐)的“神课”小班教学,再到拔尖班的海外暑期实习,北大近年来在计算机本科教育的改革探索,一路走来看似激进却有着内在的合理逻辑。
2001年,从香港回到北大,李文新随即担任了北大ACM(国际大学生程序设计大赛)队的教练。那一年的夏天,在一个没有空调的屋子里训练了一个月之后,李文新和踌躇满志的队员们准备抱着奖杯回来,可结果却是“碰了一鼻子灰”,连亚洲区的选拨赛都没通过。
这促使她反思,我们的本科培养是不是出了问题?第二年,为了训练队员们的编程能力,队员应甫臣和同学开发了一个评测系统,在线提交代码后就可立即获得反馈。虽然这一年北大的ACM队依然没有出线,不过,从此保留下来的这个评测系统却在日后起到了一个意想不到的好结果:学生的编程能力有了质的提升。
2007年,已升为教授并负责计算机系教学改革的李文新,决定把这个“专用”工具推广到日常的教学,比如大一的课程《程序设计实习》中去。这样带来的一个看似“无情”的改变是,在期末的上机考试中,学生必须通过这个系统的考验:如果两个小时内做不出一道题就是不及格,而必修课不及格则意味着不能毕业。
编程能力的训练只是大一学习的一个方面,由于北大计算机系“脱胎”于之前的数学系,传统上注重数理基础。在大学的第一年,学生在学了基础的数学和物理之后,如果有兴趣和能力,也可以继续修读更为高级的数学或物理课程。
不过,在今天的北大,提供高阶的通道已然不是“锦上添花”,而是一种强需求。随着2003年北大开始特招信息学的竞赛生,有良好基础的学生越来越多,可当时的课程体系还是“一视同仁”,并非因材施教。
2009年,教育部“基础学科拔尖人才培养试验计划”开始施行。两年后,该计划给予北大的拨款正式到位。借助这股“东风”,李文新等老师们决定去国外走一趟,看一看顶尖学校的计算机本科教育是什么样的,是否有可取之处供北大参考。
2012年的那次出国考察,除了看看这些名校是如何培养本科生外,郭耀也想通过取经,解答自己心中的一个疑问:为什么现在北大的学生读博的比例只有10%?这一比例和自己出国时的30%下降不少。在他看来,对于吸收了全国最优秀生源的北大,如果只有如此低比例的学生从事科研,代表了某种危机。
尽管如此,在拔尖计划的经费支持下,拔尖班的学生赴海外暑期科研实习,参会都已经常态化。谈起在斯坦福的暑期实习,李昀烛说:“我最深刻的感觉是能够身处学术最前沿的热血澎湃。我第一次和导师聊如何选题的时候,他告诉我“Choose whatever makes the greatest impact”,这种影响力导向的科研价值观,让我的关注点不再局限于一个具体的问题,而是领域未来的发展趋势。”