姜海:换位思考,共探算法世界

2020.12.18

      文字

      马倩倩


      片设计

      崔云涛


      素材摄影

      李派 张晓峪


      编审
      刘蔚如   周襄楠

      张歌明   张莉


      栏目统筹

      周襄楠   贺茂藤


在清华大学六教6A216的教室里,工业工程系的姜海老师正在讲授《数据结构与算法分析》课程的第三讲,这场致力于在大数据时代提高学生的算法分析能力的数据实验正在进行,姜海说:“现在各行各业都大力推进信息化和智能化建设,积累了海量的数据,如何设计高效的算法来分析和处理这些数据是社会迫切需要解决的挑战”。

2014年以来,这门课程多次成为全校教评前5%的优秀课程,先后入选清华大学精品课、标杆课程,姜老师也曾被提名为工业工程系“清韵烛光-我最喜爱的教师”。一名大三的选课同学说,“这门课对算法的学习是基础、必要和全面的,课程涉及的一些经典算法和数据结构对本专业的后续学习很有帮助,对自己的编程技能是一种很好的培养”。

由于课程内容偏理论,为了不让同学们觉得觉得枯燥乏味,当遇到偏数学、难理解的内容,老师会一边在黑板上推导,一边让学生在课件的空白处记笔记,希望增加学生的参与感,让他们对学习内容有更好的理解,从而体会到课堂授课的价值。同时,课程也结合老师的科研课题讲授如何解决实际问题,比如以此前与三菱重工合作开展的“高性能甘特图绘制算法”课题为例,向同学们展示了课题组如何以课堂讲授的知识设计算法,把绘制效率提高到了70倍。

这节课程从回顾实证和理论这两种算法分析手段的优劣开始,带领同学们进入主题:对同一种算法的不同实现进行效率比较。手中拿着一踏厚厚的讲义,姜海老师引入了渐进分析的概念,开始介绍不同算法的速度分析的符号和相应的规则。介绍完基本的运算规则,他开始带领同学们一起证明这些规则的推理路径,与其他课程形成对比的,这门课的同学上课很少用电子设备记笔记,而是用一支笔,一沓纸,跟着老师一起推演。

在自由的发言、交流中,同学们及时向老师发问难点,而姜老师会引导学生逐一判断不同情况,一点一点引导学生修正并理解这些运算法则,用循序渐进的方式让大家理解证明思路。一个完整的学习过程包含了学生的思考、停顿、回答、被引导、修正,最后与实际操作结合,在这个过程中,老师擦了又写,用几块黑板呈现出一个规则的应用过程,同学们下课之后也会和老师讨论,细化运算过程,在一种相互碰撞的状态中,老师和同学们完成了更有交互性的课堂学习。

对姜海老师来说,保持课程吸引力的秘诀就是去换位思考同学们的时间价值,他将教材一个章节中最精华的部分提炼出来,在90分钟内把同学们自学需要花费一两天才能看完的内容讲透,给他们展示了课堂的价值。

这门课让同学们使用了C语言这种易于犯错的编程语言进行练习,目的是希望用这种需要小心操作的语言培养他们严谨认真的态度。姜老师说:“如果用‘坑’比喻算法实现里可能出现的bug,学生只有在课堂上摔的次数足够多,才能在今后的工作中摔得少。”

上课的同学们说:“虽然课程比较偏重数学理论,但姜老师深厚的理论基础和清晰的讲授过程使课堂保持了一种轻松的状态”。这门课一方面对学生的大学数学能力有基本要求,因为上课偏重用理论与计算评估一种算法,同时也有很强的应用性,课程结束后,同学们每周要投入相应的时间完成作业。作业与课程密切相关:一部分是理论问题,有为了避免同学产生畏难情绪的基础题,也有激发学有余力同学的提高题;另一部分是计算机编程工作,让同学们通过实践去理解课程讲授的理论知识,验证课堂和作业里的理论结果。

对此姜海说:“作为一名老师,最需要考虑怎么才对得住学生的时间。让学生意识到90分钟的课堂学习带来的收获要远大于逃课去做做别的事情,这样的课堂才能成为学生喜爱的课堂。”


版权所有 © 清华大学

京ICP备15006448号

京公网安备 110402430053 号