沈坚老师是我在同济大学读书时的专业启蒙老师。

很幸运,我参加了沈坚老师在那几年给计算机系学生开设的几乎全部课程。从大一的“高级语言程序设计”(高程),到大二的“数据结构”,再到大三的“计算机网络”和“计算机系统实验”。本来,我和很多人是没有机会上沈坚老师的“数据结构”课程的,因为大二起我们就从四平路校区(本部)搬到了嘉定校区,沈坚老师在那一学期恰好在本部给数理强化班的同学们上“数据结构”课。然而,面对大家搬嘉前后的热情和遗憾,老师可能也不愿意放弃刚刚跟着他入了门的小菜鸟们,为我们嘉定的学生开设了交作业的网站账户和“数据结构”课程讨论群,给我们发课件,定期线上视频授课、群里答疑。

那时没有 GPT 也没有 Copilot,IDE 是 Code::Blocks;没有 Zoom,线上授课用的还是 QQ。

计算机系的新生们水平参差不齐,有搞竞赛的高手,更多的是没有系统接触过编程和算法的同学。这种情况下,一上来直接“面向对象编程”,直接 C++,是有一定难度的。在大一第一节高程课上,沈老师说,可以到一个月之后再回过头来看看自己的变化,你会发现自己有进步了。一年之后的课上,沈老师说,可以和去年这个时候的自己对比一下。后来的大学时光中,每当我克服困难挑战做到一件事情,都会想起大一时第一次高程课上沈老师说过的话,那时自己真的是什么都不会,老师是真的有信心。

沈老师的课很有特色,有鲜明的“沈坚风格”,从大一到大三,一以贯之。桃李满天下,经典永流传——精心维护的课件、颇有难度的大小作业、时而严肃时而幽默的群内答疑……还有课堂上面对学生的懈怠、懒惰,严词厉色,看似说的是和教学无关的话,多此一举;实则讲的是和前途有关的事,苦口婆心。高考之后的大学生活往往以自由散漫开始,离家千里,幸而有人能够在这个阶段引领你。对了,2014 年的圣诞节,沈老师带了三四盒费列罗巧克力到高程课上,送给每一位同学作为圣诞礼物。

仍然记得,沈老师反复讲过这么一番话——他说,身为计算机专业的学生,你们会发现自己学了一个学期的 C++,还停留在控制台窗口的阶段,界面那么丑陋难看,而别的专业的学生可能只学了一个星期计算机,就能在屏幕上画出漂亮的界面,就能让一辆小汽车从左边跑到右边了。你们是要做底层的东西,你们是别的专业的支撑。就好比盖房子,别人可能会去找一扇门、地板、窗户等等,而你们应该会自己制作一扇门。

道理依然是成立的,时间也过了太久。即使时间过了太久,道理依然是成立的。

几年时光匆匆过,细节已经无法数清,沈老师用无数个“构造函数”、“复制构造函数”构造出了学生的专业功底。沈坚老师帮助我打好了一个扎实的基础,这才有了后面深入探索的基础和机会。我想,本科毕业论文的致谢很好地总结了离校前夕的感受:

感谢沈坚老师。从大一到大三,您始终以高超的教学能力、对学生负责到底的态度和无限的真诚与爱帮助我们从一无所知的新手慢慢转变为具有扎实计算机功底的专业学生。同时,您以身作则,为我们展示了计算机专业人士应有的专业素养。您不止一次提醒我们作为计算机专业的学生,不仅要知道框架怎么用,还要知道框架怎么造。我将谨记您的教导。

2018 年毕业季,我发现沈坚老师在“计算机网络”课程群里冒泡了,于是就给他发了“老师,求合影”,他说十分钟后智信馆一楼见。

只能说人世间充满了各种意想不到,想不到那就是见到沈坚老师的最后一面。

这篇文章写得千头万绪,查阅了当年的日记,打开了同济的资料备份文件夹,无数的细节扑面而来,把我拉回到已然尘封的日子。

怀念您,感谢您——在迷茫无知的年纪,您让我们接受的教育、成为它该有的样子。