《实验物理的大数据方法》课程总结

Table of Contents

1 海天盛筵

8月份,教学团队享用了一顿海天盛筵,故而有这个名字,只是可惜没有拍照。我很喜欢这个词,我觉得上课的过程真是一场享受,用这个词描绘再好不过了。我希望能把其中的敏感引申义去掉,把这个词从废青们那里夺回来。

从 2019 年小学期上过课到现在,我几乎每次和朋友的闲谈都会无意中谈起小学期上课的感觉。这好比一个刚生了娃的母亲,三句话之内必提起自己的孩子一样,我好像入戏太深了。

感谢助教呕心沥血的付出,感谢同学们在课上课下与我热情地互动,讨论和吐槽,帮助和鼓舞我完成了一个我和前辈们无法想象的高强度课程。到了最后一周,我已经没有了力气在课内休息时走到同学中间和大家聊天,只是默默坐在窗子旁边,静静看着大家还在对课上的内容进行着分享和讨论。那一天,我在课间倚着窗台望着洒在树梢的斜阳,听着教室里同样细细簌簌的讨论声音,不禁感叹我定会很快怀念并迷恋这种感觉。果然,结课之后,我还是会经常想起那时内心的宁静的感觉。

2 备课,焦虑并欢乐着

开始我觉得授课的强度将是不可想象的:每天4节课,每周4天,从零开始设计课程,没有参考,想想都会觉得自己会累得飞起来,找不到东南西北。所以一开始的设想是,提前把讲义写完,这样能让自己整个七月份压力相对小一点。故而我想6月份 Ghost Hunter 决赛之后,就好好备课吧。然而我真的应了戈亮总结的青年教师第一定律:永远希望开课前备足课,但是永远无法达到。到了6月底,我还是没有把讲义写好,只是有一个细化的大纲,眼看着同学们都已经开始开心地选小学期课程了,我真的想穿越回去把自己捏死。

不过这期间也没有完全闲着,我参考了一门 Charles Russell Severance 的 Python for Everyone 的课程,一门苏勇的《Linux 入门基础》,一门南京大学张莉的《用 Python 玩转数据》。希望把听课时做的笔记变成我的讲义。可是最后发现笔记是记了不少,但是与我想要讲授的内容重叠并不多。此外,最重要的事,是请到了蛤蜊、杰哥和爱强做我的助教。似乎有个谣传说小学期是不设助教的,我也没有求证。但是我很清楚这门课如果没有助教,会被我祸害到什么程度。可是到了月底快开课时,我还是很焦虑,毕竟第一次课要讲什么都还没有想清楚。

第一次开会是2019年6月24日,教学团队以及所有对课程感兴趣的同学都到了,有郑煦韬、龙翔云(讨论大作业设计)、杰哥、付主席、刘喵喵、张爱强、唐如麟、一川。我还从校外赶回来光荣地迟到了。会上,同学们给我的压力比教学委员会还大。一个焦点是,为什么要设计这么难的大作业,而且还要每周一个大作业,占大多数分数。大家本来开心上小学期水水更开心,我压了这么大的担子,同学们会起义的。我说如果难,我们可以降低难度,但是还是要模拟科研的场景,为同学们大三进入科研训练做好准备。大家争论不休,最后各方达成一致采用唐如麟的大作业方案:同学只需要做一个大作业,占30%,分成两个阶段,第一阶段是生成,第二阶段是分析。这样,同学有充分的时间深刻理解大作业所描述的物理实验场景和内部机制,而且也可以放弃做大作业以70%的小作业成绩低空水过。事实证明这个方案设计得非常巧妙,我真的幸运在开课之前组织了这一场讨论。

第二个焦点是讲义要不要详细写,我知道自己的德性,看起来是万难写出来的。于是我狡辩说:“我还是列一条主线,直接讲,作为实践性课程,真的那么需要讲义吗?”一川和付主席异口同声道:“你觉得同学们会听课吗?过去会的听了课还是会,不会的听了课还是不会,完全没有用啊!你还不如厚道一点,贴出个讲义,大家至少还能参考着写作业。”我也急了:“那还要我开课做甚么!我把参考书一指定,写一点学习材料,大家都快活,把课取消算了。”大家齐声道:“当然要开课啊!不然怎么拿学分,怎么完成培养方案。”接着有同学说:“我觉得教编程的课都没什么用,看语言定义就能高效完成的事,为什么还要讲一个月课。”我在争论中,陷入了无限的自我怀疑之中,再想想我自己也是自学的,同学们的讨论真是给我进行了一场长达几小时的灵魂拷问,让我死去活来。在这个信息爆炸的时代,学习资料极大丰富,还要课堂做什么?还要老师和大家面对面上课做什么?不回答这个问题,就真的没办法开课。这使我更加压抑,如同泰山压顶一般,过了好多天,我才勉强有了一个回答:我只讲前人没有讲过的或者以某种方式表述过的内容,一切网上有的资料我都以参考资料给出。但是如果我只讲新内容,我的专业水平够吗?这也是我回答不了的,最幸运的是,我得到了蛤蜊、杰哥、喵喵等计算机系科班同学的帮助,还有宇翔和主席的内容建议,他们保证了我讲授的内容不至于出现根本错误。

最后,我在付主席的挟持下,写出了第一周细化的大纲。会上付主席一直保持批判的态度,说的最多的是三句话:“你这样做会坑死助教的”,“你这样做会坑死同学的”,“心疼助教心疼同学”。我被拍得怀疑人生,所以当付主席说“那么我们来把每天讲什么定下来吧!”我非常振奋地照做了,大家七嘴八舌,总算把第一周和后面要讲的内容定了下来。半夜,我拖着疲惫的身躯,揣着对教学的怀疑,翻来覆去睡不着。唯一让我感到一丝欣慰的,就是一张写着第一周详细教学计划的纸。

到了马上开课的时候,爱强、蛤蜊、杰哥、一川和我又开了个会,确定了小作业的形式为 GitHub Classroom,这样可以保证大家即使忘了课上学了什么,至少通过作业题入门了 Git,也算是我的最低目标了。作业给分为黑盒 80%,白盒 20%。小作业不使用 Online Judge,大作业第二阶段借用竞赛平台实行课赛结合。这次会和前一次的风格完全不同,课程准备进行得非常顺利。我突然觉得面对迷茫,无论从生活跳到哲学,还是从哲学跳到生活,只要切换了模式,都可以对自己起到稳定的作用。

开课的那一天,好多人潜到了最后一排来棒场,看我的开场白。从前来听课的大佬们的反馈来看,效果蛮不错的。我才舒了一口气,看来我已经进入了教学的激跃状态。

3 小学期奇遇记

不论如何,每天四学时,每周四天的教学强度都是很难扛得住的。我和老教授们交流时,大家都觉得第一次开课就这么高的强度,真是比登天还难。于是最初的设计是上一堂课,练习一堂课,相当于我每天只讲两学时,让同学们在课堂上就把作业都做完了,大家都很开心。然而现实非常不一样,课上大家都很放松,和我的互动很多,大家像在一起谈心一样就上完了四节课。实际上,讲授和练习没有分开,融为一体了,这是我始料未及的局面。同学们驱动了上课的形态,比我预先设定的更好。这让我非常开心,也非常自豪。

课程预备会上顾问们对我提出的最大质疑“课备好了吗?”真的应验了。我首先备了三天的课,但是课程进展得太快,我的备课速度根本追不上讲课,最后变成了“敏捷备课”。“敏捷备课”看起来很高大上,实际上是助教和顾问们黑我的。在软件工程中“敏捷开发”的意思是把工作流程变成一个 pipeline,没有阶段性准备,一直都在生产(上课)一直都在开发(备课),边生产边开发,开发出来的东西马上投入生产。现备课现上课,这在课堂上是要出教学事故的,因此除了最开始的三天,后面我一直都是如履薄冰。在那一个月中,我连做梦都能梦见助教们围着我说“敏捷备课”“教学事故警告”,神经高度紧张。好在一年以来,我自己学习了大量类似的课程,做了很多笔记,一些“教学定势”留在了脑海里。同时,在 TUNA 协会的金枪鱼之夜活动 (tunight) 中,技术分享的风格非常适合技术实践类的小学期课程,给了我巨大的启发。最重要的是,同学们的互动和快速反馈,为课程的内容做出了巨大贡献,让课堂时间更有针对性,弥补了我备课上的严重不足。所以我每天的生活状态是,上午在焦虑中度过,总是觉得下午的课准备得太少。下午,开始上课,我就神奇地进入了宠辱偕忘的状态,不知不觉就完成了课程。而且,我觉得自己遇到一个很难的教学挑战,反而抛弃了心中的完美主义执念,不对自己要求太高,彻底放飞了自我。如果一次上课准备的内容太少,三节课讲完了四节课的内容,没问题,直接放学就好了。如果我课上给大家要展示的效果没实现,翻车了,没问题,告诉大家这就是技术不同于科学之处,翻车和调试就是日常,老司机也会翻车。大家七嘴八舌打乱我原有的教学设计,没问题,同学们对一个问题感兴趣,我们就深入讨论下去,把疑问搞透。于是在这一个月里,我最焦虑的是每天晚上,最忙的是每天上午,最开心的是每天下午。

论欢快的课堂气氛,一位奇才同学功不可没。我第一天走进教室,奇才就跟我打招呼说“学长,我是特地为了来支持您工作选的您的课,顺便鄙视一下 XXX 同学,他作为您的直系校友竟然在关键时刻叛逃了”,我觉得有趣,以为只是玩笑。但是后面的课程里,奇才简直成了课程的主角。在课上,她非常积极地思考,心直口快地提问题,把我没有讲到的知识点都彻底覆盖了一遍。这让我这个“敏捷备课”的不合格教师在课堂现场实现了迅速迭代,迅速弥补了知识的盲点。她的提问还激励了其他同学积极提问和讨论,原来大家都怕自己的问题太幼稚不敢说话——这是当前教育环境不争的事实——但是看到奇才的问题都那么基础,大家也就没有了心理负担,经常还能大范围讨论起来。我觉得我作为一名教师,上课最幸福的时刻莫过于被同学们打断,我静静地站在一旁,看着同学们就我刚才讲的话题自发地讨论,那种感觉,真是太美好了。大家知道,这样做其实是有风险的,许多人是不太喜欢经常接老师话头并打断老师思路的同学的,所以奇才同学确实是在支持我的工作。令人惊叹的是,奇才生成了一种傻白甜的形象,浑然天成地活跃了课堂气氛,引出了更大范围同学的讨论和参与。为什么说是“生成”的傻白甜,而不是真傻白甜呢?因为到了大作业的第二阶段,奇才露出了她学霸的凶恶原形,硬生生用双眼看了大作业中的几万张图片,总体出近十条经验公式,烧10个G的手机流量,屠了大作业的积分榜。我也在反思,几万张图片是不是罔称“大数据”,2020年的大作业得从一百万起步。线上听课的同学和朋友们不止一次问我,在课上一直提问的同学到底是不是我的托,但是我自己也不知道啊。我知道的是,在改革开放初期,我们辽源人确实是这样闻名全国的。

我都已经把课上成了“敏捷备课”,一个月以来没有任何精力做备课和上课以外的事,甚至是作业的设计和批改都没有精力顾及。学校并没有为小学期设助教岗位。可以想见,如果只是我一个人承担这些任务,必然是一直捉襟见肘,必然是顶不住的。事实上,我一人在教学团队中的工作和发挥的作用甚至不到一半,剩下的一大半都是助教同学完成了。我真是非常幸运有蛤蜊、杰哥、爱强的全程鼎力相助,还有一川、宗煜、镇齐和喵喵从各个方面的支持,不然这门课会变成样子简直不堪设想。为什么这样说呢?课程的内容决定了它是任务驱动的,大作业贯穿整个课程。这相当于一场集训,如果不把所学内容马上应用到实践上,纸上谈兵就不会有任何意义。从这个角度来讲,这门课的作业是比较课堂讲授更重要的,甚至说讲授完全是为了作业服务都不为过。这也是我完全没有要求出勤的原因,即使学生不来上课把作业完成,也是可以拿 A+ 的。大作业的设计思路沿用了唐如麟的方案,第一阶段生成,第二阶段分析,思路清晰,同学们非常好理解。但实际操作起来需要消耗大量心血。在生成阶段,需要准备详细的物理学背景说明。有许多知识点,是我的盲区,我发现自己确实力不从心。镇齐和宗煜友情出场和文档准备,爱强配合镇齐完成了衔接工作,把作业设计得非常有科学意义和严谨性同时又非常有趣。从某位同学的评价中,“这是我做过的最 Cool 的大作业”,可见一斑。而另一份课赛结合的大作业也是凝聚了科协同学们的心血,整整 用了一年的时间筹备才锤炼出来。这不仅包括文档,还有第二阶段大作业的竞赛平台,它们给同学们以非常新的作业体验,可以看到大家做作业的过程都很开心。蛤蜊是整个大作业的汇总者和质检员,文档、数据最后都由他来把关发布,所以几次突击,他都是最后一位睡下的。作业的批改需要花的精力更多,因为每一位同学都有独特的解法,是一个很烧脑的过程,这里杰哥为课程特地开发的批作业工具与蛤蜊写的网络学堂 learn-helper 一起发挥了有力的支撑,把批作业过程中的重复劳动都自动完成了,让大家专注于本质。大作业的工作量还是很大,爱强、宗煜、蛤蜊、一川和杰哥都上了,一连批改了一个多星期才完成。

我也鼓励同学们自己提出大作业,有两位同学尝试,但是最后没有能够设计完全。是这次的一个遗憾,今后如何让同学们做自己大作业,值得深入地探究。

不用提大作业,小作业中更是体现了几位助教是多么用心。为了增强作业的趣味性,蛤蜊带头按照 OI 竞赛和 ACM 竞赛的出题风格,给每个作业都加了一段童话故事。不仅如此,童话故事们还是连载的,故事的主角芃芃秒天秒地,一个未成年人就已经开启了开挂的人生,在通往人生淫家的路上飞奔。芃芃的故事影响力太大,连物理系科协的伟大内容建设运动“维饥百渴”都采用了与芃芃相关的名字。更刺激的是,芃芃还从童话世界走进现实,每天都混进课堂暗中观察,不时露出邪恶的得意的微笑,给本来欢快的课堂平添了几份魔幻现实的色调。除去小作业的魔幻部分,它们的任务设计都紧扣课程内容,甚至对课程内容作出了指引。几位助教一直在观察着大家的反馈,及时调整了小作业的难度,给同学们提供了贴心的反馈。杰哥的自动批作业工具表现出色,许多作业只要设计好,基本上是一键出分。在杰哥自己的主页上,他把这个工具打出了最高的趣味性,令我深感欣慰。蛤蜊的 learn-helper 也在批作业的过程中,加入了助教和老师的功能,格外好用。而蛤蜊的最得意之作,GPA calculator,是我们在月夜下躺在紫操上,伙同宇翔和主席,喝着快乐水咬着坏人的哈尔滨红肠想出来的。也是在在那个夜晚,宇翔和主席的几点鼓励和肯定,与助教们的“药丸”、“教学事故预定”、“敏捷备课”等担心奇妙地中和了,在我自我怀疑的关头,给了我信心。作业的提交完全通过 Git 进行,这是我的最低要求。当代的科研项目中,团队协作是最基本的要求,Git 正是代码和论文协作的神器。即使学生从课堂上什么都没有学到,在一个月作业的潜移默化中,学会使用 Git,理解版本控制也是值得的。使用 Git 的另一个深远的影响是,它大大提高了作业抄袭和伪造的成本,为良好的学风建设发挥了不可磨灭的作用,在第一年就彻底逆转了物理系小学期祖传作业的陋习。出人意料的是,这一副产品得到了已经毕业的系友们的高度评价。

令我最为开心的是,即使我没有要求出勤,即使我课程在暑假小学期,大家来上课的热情都非常之高。第一天到最后一天,我没有看到显著的人数变化。而从最后一天的匿名问卷的回收结果来看,除了一名同学提前去实践请假、一名同学电脑损坏缺席、一名同学申请网上上课,所有同学都出席了。真是太令我振奋了。一些同学的水平确实已经不必上课,但是他们以小助教的形式帮助周围的同伴,课上课下和大家一起讨论,对整个教学的效果也做出了不可替代的贡献。令我惊讶的是,这门课还有校外的同学和几位博士生来旁听,有不少朋友在线旁听,好不热闹。

在课程的匿名问卷统计中,大多数同学都给了课程很高的评价,但也有同学提出了批评。其中一个批评是课的难度太低了,没有挑战性。这一点很中肯,从同学们最后的得分来看,确实有点简单。解决方法很直接,加大大作业难度,甚至引入学术界的开放问题。还有的批评是课程难度太高了,上课云里雾里,跟不上。解决方法我也想好了,把2019年的课程录像整理好供同学们课下观看,并根据录像提取出讲义,可以解决课上教材过多过繁的问题,让学着吃力的同学能在复习中得到支持。还有的同学看穿了我的“敏捷备课”,委婉地劝我要注意身体,不要临时抱佛脚彻夜备课。第二年,有了课程视频和讲义,情况会好不少。有同学不适应小作业中自动评分的规则,觉得不近人情,我跟同学们讲了其中的原因是在科研的场景中的输入输出标准要很严格,不然会返工耗费大量精力,同学们支持了这个观点。

课上也有暂时学习有困难的同学。一位同学的完美主义情怀比较强,在学习里遇到巨大困难。实践课程的风格与物理课不一样,许多时候在没有搞清原理之前也得先迈出第一步,之后再回过头来领悟。所以这位同学就一直在原地打转,无法行动起来。我非常理解这种状态,因为我本科时也是这样的学习态度。我和他有了几次长谈,连他自己都觉得他在给自己不写作业找理由,我还是可以理解那种无法行动时的痛苦。最后,我给了他一个外部条件:在我的办公室里做作业。这样做是有争议的,一个大学生,不能想小学生一样被监督着写作业。但是我相信,在完美主义者中,有了一个最初行动的种子才可以继续行动下去。如果我恰好能提供这个种子,就是我的荣幸了。

还有一位同学有了极大的困难,生活中受家长的管束比较多。他已经修满学分,但还是来自愿选课。上课期间他的电脑坏了,也就自然没有办法做作业和学习,他没有求助,只是默默等着电脑修好,顺便看点课程相关的书,打打手机游戏。我也想在办公室监督他把作业做了。他表现出非常强的求知欲,令我有些奇怪对问题这么感兴趣的同学为什么无法上课无法写作业。反思起来,我并没有理解这位同学的思维方式,他好像会自然无视各种 deadline 在自己的世界里探索,电脑坏了,只不过是推迟一下这种探索。然而当他慢慢恢复进度时,他父亲给我打电话,要求他假期快点回家。回家之后,他被家长带去串了几天亲戚,也就松懈下来。到了开学,他依然没有写完作业,而且他已经不回应我的电话、信息和邮件了。在和辅导员与班主任沟通之后,我也想过实在不行就挂了这位同学。然而录成绩的最后一天,我还是想试试,就请了一川去宿舍找他,他不在,舍友说他的手机确实坏了。晚上11点,就在我即将放弃准备睡觉的时候,这位同学借舍友的手机给我打了电话。我兴奋地起床和他约到了办公室,他的电脑上还在查找如何解决手机接不到电话的 bug。我给他讲了大作业的目标,他越来越起劲,一个任务一个任务地完成,让我很是感动。最后到了凌晨4点多我快顶不住的时候,他把大作业的基本要求做了出来。我们伴着熹微的晨光各自回到宿舍,我才长舒了一口气。

记得尚仁成老师在基科二十年的发言中,并没有像其他老师那样如数家珍地讲他世界各地的学生都多么优秀,而是讲了几位在本科阶段遇到很大困难的同学,讲了他如何帮助这些同学走出心理的怪圈,讲了院系和学校可以为暂时掉队的同学们做点什么。我的印象非常深刻。我眼睁睁看着我的舍友和隔壁的好同学们无助退学或肄业的过程,我对大学阶段的这种无法上课完成学业的状态有着切肤之痛和刻骨的感受。此时,作为一名教师,我可以做的事比十年前更多了,这是我的幸运。

大家可能已经发现了,这样一门课,我和它的感情非同一般。那么它是从哪里来的呢?这可就说来话长了。

4 缘起基科二十年

我是基科2005级的学生,当年大二小学期的课程是 Windows MFC C++ 编程。上课时我没有太理解培养计划中的用意,直到2009年我毕业时才从阮老师那里了解到,设置计算机类课程是为了加强同学们在物理研究中使用计算机的能力。后来我一直和科协的学弟们保持有联系,听到了科协的一些技术大牛对大二小学期的看法和希望。当时朦胧觉得或许有朝一日我可以假期回学校开个学习小组,带着大家学习一点数据分析的新技术。

时间快进到2018年的基科二十年庆祝纪念活动和学术交流会。一次和阮老师在王刚的办公室里闲聊,正好说到暑假小学期。阮老师说从十多年的毕业生座谈中,许多同学希望能在计算机课程和物理课程之间,加一门课帮助大家把两者联系起来。我说是啊,从我跟师弟师妹们的交流来看,大家在把编程技能迁移到物理研究实践中时普遍遇到很多困难。实际上同学开始进入研究时,要么是自己摸索,要么是接受学长指导,一不留神会掉坑,或者在赶时间的过程中图省事养成一些不良习惯。阮老师说确实很苦恼,原来是 Windows 下的 C++,后面他发现物理研究中使用 Linux 系统很多,就在培养方案中换成了 Linux 下的 C++。可是计算机系的老师会从自身的学科要求出发,不会照顾物理系同学,物理系的老师又比较难支撑整个计算机类课程。我抚掌道,我本科时代不务正业,在科协玩了不少计算机类的奇怪东西,神奇的是,它们现在正好都对应着商界工业界造出的云计算、大数据的概念,而且我在粒子物理实验中,恰好把这些曾经歪门斜道的屠龙之技发挥到了极致。如果有大二同学想做实验物理,我倒是一直有组织一个讨论班的想法。阮老师笑道:“对啊,你赶快入职吧,今年暑假马上就开一门课。”

我打了个机灵,锅从天降,任重而道远啊。我说既然如此,我愿意试试,只是现在开始准备估计很难来得及啊。好在后来阮老师联系了教务部门询问开课事宜,得知最早开课也是2019年的暑假。我才长出了一口气,不然自己肯定上课挂白菜了。

这事我越想越美,越想越激动,就直接写了一个课程大纲推到了 Github 上 。我为何如此振奋呢?仔细想来主要有四点:

其一,这个课程的内容,代表我作为一名以物理为主业的人,十几年以来探索出的一条计算机技术的整体方案。从前,我没有在物理系的培养方案中习得如何用编程帮助我做研究,为了寻找好的方法,我甚至在本科阶段花的精力超过了我学习物理。而和我一起研究这些技能的系科协学弟们都发现自己更热爱计算机,转行做CS研究或(年薪百万的)程序员,只有我还在留在物理界抱着自行研发的技术自娱自乐。我也曾经试着给同课题组的同学们介绍一些当代的高级计算机技术,大家都不是很适应,觉得为了工具改变习惯太不值得了。因此最终我还是一名独行者,我早年一直在怀疑自己探索这些是否值得,直到最近才坦然了:管它有用没用,我高兴就好,没用就当作业余爱好嘛。通过开课来把这些技能教给我的学弟学妹,让我感到特别兴奋。大二的同学们正好没有既有程序风格惯性,更乐于接受新技术。我自己也可以从同学的反馈中验证十年前来一直让我感到人格分裂的难题:我在物理研究中所玩的,看似很专业实际三脚猫的计算机技能,到底是独门绝技还是自娱自乐,全靠我的学弟学妹们是否授受来评判了。

其二,这件事情是受阮老师的委托,受各个年级系友的委托。我应当仁不让,把担子挑起来,不论如何也应把同学们的在物理和计算机之间建一架桥,削除数物大类学生对计算机的神秘感和畏惧,溶解“我只对物理感兴趣,不学别的”和“学计算机?不就是修电脑吗?”的物理系式误区。

其三,我正在组建中微子实验的研究团队,工物系的同学有很多了解的渠道,我也希望能吸引到物理系的同学。本来在清华中微子物理这样的基础物理学研究在工物系就是历史路径依赖的,我希望我的研究能被物理系的同学了解。一门以大规模实验数据分析为主线的课程,正好代表了我研究工作的日常,对大二同学进入实验室之前,肯定会发挥非常切实的体验作用。想到今后在我的组里,会有工物系和物理系的同学一起研究讨论,大家大类分流之后再聚到一起,也是非常令人激动的。

其四,一门四学分的小学期课,实在是太适合我了!作为教研系列青年教师,每年的教学任务是64学时,即4学分。以一个月的奋斗,换取一年自由身,学期中开会访学都不会受到上课的限制,还有余力帮助同事代课,简直无法想象有比这个更美好的事情了。目前青椒的考核重点还是科研,但是教学的工作量必须与科研相等,这对刚起步的教师有非常大的压力。部分院系给出了入职几年以内允许不达到教学工作量的优惠政策,正好从侧面反映了这个事实。这样一门课会让我一下子进入非常稳定的教学状态和格局。

这四点,任何一点单独拿出来,都足够我欢喜雀跃地去达成,何况有四点!所以我高兴得一下子就把课程大纲想出来了,之后很快就落实在书面上。

5 开课路漫漫

实际开课的过程还是很扣人心弦的,大概有5个时间点。

第一个节点让恢复理性。我很有兴趣地把开课计划和陈老师讲了。陈老师比较担心课程缺乏特色,因为工物系已经有粒子物理的数据分析研究生课程了。我说可以把重心放在当代计算机科学技术发展的新工具上,陈老师表达了我并非科班出身,是否能讲得专业的顾虑。这让我心里的热锅冷静了下来,仔细思考我的课除了满足我的需求和院系培养方案的需要之外,会给同学带来什么。于是在多方征求意见的同时,我自己也和自己进行了一场旷日持久的大辩论:到底有开课的必要吗,我开计算机为主的课是不是不务正业?

第二个时间点上,我被注入了一轮兴奋剂。2018年11月我十分不务正业地与冬波、振齐、欣彤和卓卓组队打了一场计算机系组织的论文作者去重的比赛。本来我是来体验一下竞赛的,以更好地准备之后的 Ghost Hunter 中微子数据分析排位赛。比赛准备时,欣彤提出了数据格式的规定,我按照这个规定使用 `Makefile` 把整个复杂的处理流程都串了起来。本来我心里没底,比较担心大家是否能接受 `Makefile` 这样鬼畜的上古语法,没想到大家非常开心地使用了。这让我无比振奋!因为我们虽然号称是基科战队,但是完全是五种人类。诚然,这也从侧面反映了基科的多元性。我是物理系大凝聚态传统下的另类,再加上对计算机的洁癖,代表小众的物理审美。冬波是去文科世界使用数据进行跨界打劫的理科学者,他用严谨的数学和物理思维对不确定的世界进行建模讲故事,自成一派为数据工程学,这次竞赛正是他的主场。镇齐代表物理系的主流,既有强大的直觉又有深刻的思想,做实验一丝不苟,使用计算机模式是对师兄的(祖传)代码进行改进,渴望学习新技术但为精力所限。欣彤在机器学习和大数据领域研究,代表当代数据处理的尖端,建模、拟合、调参更如入无人之境,已有成熟的数据处理流水线。卓卓代表应用数学和统计学习,进入所有学科的后花园,对一切新事物具有如饥似渴的学习热情。这样一个采样,基本上覆盖了物理系的同学的所有可能的形态,样本甚至神奇地囊括了团委、学生会和科协,大家竟然一致认为 Git 加 Makefile 的工作流程太科学太强大太神奇了。我对工物系的同学并不担心对我未来的课的接受程度,工物系的同学们已经有学习工具软件的课程,反而物理系的同学的偏好我确实心里没底。这一经历对我的触动有多么深刻和强大,它一下子消解了我对开课意义本身的怀疑。

于是我又行动起来,把几个月前写的大纲放在了饥渴乐园征求意见。大家很开心,七嘴八舌提建议。这期间得到了唐如麟、史冬波、孙慧辰、吕铭、付祈安、魏胜禹、郑鑫宇、陆思锐、王泉、陈思维、代一、鲍亦澄的多角度评论和指点。在大家的热烈讨论中,很多方案和设计都保留在了最后,比如课程名,课程录像,Git/Makefile 主线,GitHub Classroom,大作业的风格等等。这一稿被拍得最多的是:太难了,给学弟学妹们留条活路吧!还有课程不要变成 Installation party。同学们也奔走相告,大纲被传到各个年级群里,引发了各种争论。我也不断修改着课程的设计,融合集体的智慧。霍师兄也正有此意,正在筹备到大学开天体物理数据类的硬课,我们围绕大纲交换了不少看法。这时,箭已在弦畜势待发,我的担心变成了这门课得能满足行政审批的要求,按时开课。

到了新课申请的季节,我先和阮老师讨论了一次。我拿着大纲先卖了个关子没有给阮老师看,请阮老师谈对课程的期待。阮老师说,要让同学们在物理研究中熟练使用计算机,为大三开始 seminar 进入科研训练打好基础。我拿出了大纲,教学目标竟然和阮老师说得一模一样!讨论非常顺利,阮老师在物理系教学委员会上提议进行了讨论,课程获得通过,物理系向工物系发出教学任务书。教学委员会的一个反馈是,取名为《实验物理的大数据方法》是否太大,何不按课程内容取名为《Python 数据分析入门》。我的回答是课程专注于讲授当代的计算机技术和工具,此时 Python 最结合进行数据分析,但未来可能被其它更好的语言取代,课程的侧重点不应在 Python。

在工物系,我依旧没有把握,因为系里所开新课较多,驳回率偏高。陈老师帮我分析了课程设计的主题,指出教学委员会评估的开课必要性时的考查点。我对课程在在工物系培养方案中的地位进行了重点阐述,对国内外和其它院系开设的类似课程进行了深入调研。在教学委员会上,开课受到的质疑在于使用4学分学习软件的必要性:理工科学生,通过阅读文档和说明书,就可以快速上手一件工具,有必要用正式的课程来达到目的吗?这个质疑一针见血,也是我与自己辩论的焦点。我举了两个例子,讲述了在实际工作中,同学们的数据分析工作上手很难,缺乏系统性和良好的习惯,会浪费时间或者弱化科研成果。总体上,我还是得到了委员会比较多的支持。系里的老教授还跟我讲暑假要来听我的课,和我一起分析最新物理实验的公开数据,这给了我莫大的鼓励。工物系大二小学期已经安排得很满,高老师最终建议了完美的解决方案:把课程分成两部分,各两学分,工物系同学选第一门课,物理系同学选两门课,两系的同学统一给分。

接下来我在两系教务办公室穿梭了多次,在(小)陈老师和葛老师的帮助下,最终完成了开课手续。

6 结语

我很幸运能得到工物和物理教学委员会的认可和支持,也很幸运有这么多同学与我合作最终把课程开了起来。我还非常感谢关心这门课并不断出谋划策的系友们。此时,我可以欣慰地讲,我最初的四个愿望,都达成了。作为我教学生涯的开始,这门课的点点滴滴,都将被我铭记。

Author: Benda Xu

Created: 2020-03-23 Mon 18:57

Validate