烹饪式解读与总结北航OO课

这两天很多老师都在讨论课程总结和改革的事情,大概也是到了学期末,老师们诗性大发,一个学期和熊孩子们斗法,总算松口气来点格局,要不然整个人感觉都不好了。

作为吃货,总感觉再复杂的道理,如果能够和吃关联起来,那都不是事。北航的OO课总是那么累,在我看来就好比:OO课不是走亲戚和吃喜宴,而是要每个人做出一桌菜来,做的好,大家都来品尝,做不好,自己含泪吃完,再来下一锅,实在无法下咽,明年再来练。。。

 

从教多年,基本观察,学生吐槽的课程都是让他付出很多时间的课。凡是能够在学校规定的合理课程规则下来榨取学生时间的老师,都是热爱教学(吃货)的老师,就从这一点来说,都应该受到应有的支持和尊重(学校应单发吃货基金以资鼓励)。事实上,要做到合理和有效的榨取同学们的时间,必须自己首先投入大量时间。

食材为先。首先,得有合适的食材来做菜,巧妇难为无米之炊。整体对着菜谱去各种YY炒菜的力道,油温的把握,其实是自欺欺人。2019年的OO,准备了四组食材:符号求导食材、电梯模拟食材、地铁系统查询食材、UML模型解析食材。相比较往年,我们做了减法(熊孩子们浪费了好多好食材-:))。这四组食材无一例外都是融合了架构设计、算法设计、工程规范、测试和debug等活动,既有阳春白雪,也有琐碎繁杂。

不可不讲究烹饪之道。再好的食材,一股脑乱煮乱炖,只能让人皱眉。我们采取迭代的方式,在确保已有食材味道出来后,逐步加入新的食材。必须得说,做菜过程中,如果只是到最后才能感受到食材的香味,这菜恐怕就很“菜”了。每个项目,我们设计成三次迭代,逐步增加难度和设计要求,基本上第三次都是一个集成式提高,完整感受到在设计上的训练要求。比如符号求导训练的重点是借助于面向对象的抽象、继承和接口等机制来训练层次化的架构设计,即如何通过层次化抽象来获得归一化的解决方案。这样结构清晰,代码量也少,新需求出现后只需增加一点局部细节,且仍然可以被抽象高层所归一。电梯模拟则考究的是如何把线程安全融入到层次化设计中,使之称为自然的组成部分;地铁系统查询强调的是规格化的设计,形成图和计算模型分层,确保图层的稳定性,而模型层可以针对需求变化来灵活调整;UML模型解析强调的如何基于元结构(即UML元模型)来构造模型解析器,解决的核心问题是如何在结构化输入解析、建图和检索中识别层次结构。三次迭代一方面使得每次作业的工作量和难度可控(一周内能够搞定),同时也为老师带来了观察机会,可以了解到同学们的问题。我们观察到,优秀的同学在第一次迭代中就开始预判后面可能的变化,从而在架构设计上做准备;而中间层次的同学往往在第二次,甚至第三次会发现之前的设计不得不扔掉从来,否则几乎无法完成作业要求。在三次迭代之后,我们稍微松松气,品味一下端上来的菜。每个同学做出来的菜各有不同,有的色香味俱全,有的勉强能吃,有的,哎,只能扔了。。。不管怎么样,都要写一篇烹调与品尝报告,酸甜苦辣咸,各自去写。

好厨师是被挑剔出来的。初学做菜时,是三五好友一起,每次必然互相点评一番,嗯,这个不错啊,就是有点咸;这个看起来不错,显然油少了,凡此种种。不尝尝,怎么知道味道怎么样呢?不仅每个同学自己要尝,老师和助教也来尝,同时同学们还要相互尝,而且不能顾面子,好吃的要表扬,不好吃的必须指出来。这就是OO课让同学们倍感压力的测试机制,公测和互测。公测使用事先准备好的测试用例,确保了公平性。好吧,西红柿鸡蛋汤按照什么次序放食材?水-鸡蛋-西红柿;西红柿-鸡蛋-水;鸡蛋-水-西红柿???我们在公测中引入了交互性,允许试错。允许同学查看公测结果,然后修复bug,这样就基本解决了食材次序问题(确保基本能够出来一道菜),当然公测还有一道强测环节,相当于把同学们的菜都搬上来,由老师和助教挨个品尝和打分。根据品尝结果进行分组,然同学们互相品尝和评价,这就是互测。避免味蕾的过于个性化偏好,我们今年使用了群体互测,即引入一个互测ROOM(7个人),每个人都可以提交测试用例,系统记录评测结果。当然匿名机制是必须的。

好厨师都是吃货。如果一个人不爱美食,我想无论如何是成不了好厨师的。因此,课程在训练内容和环节上注重引入探索性。必须说,吃货也是培养出来的。没吃过炸酱面的,不能说是北京吃货。基本上第三次迭代都给同学们留有足够的设计探索和算法探索空间,这样可以极大激发同学们的积极性(好吧,其实我知道他们好多是被逼无奈。。。)。

上述几点形成了北航OO厨师培训的基本大法,从2014年新OO诞生之起就一直坚持的原则。但我们不否认存在的问题,所以每一年都在改进。

2019年在制度上引入了研讨课,即每两周一次按照授课班级组织研讨,同学们上讲台报告和分享自己的做菜心得,如何防油炸锅,如何保证盐不会放多,如何在出锅前再来一波小操作,看起来更亮眼一些等等。当然,我们也请了外面馆子里的大厨(企业的资深工程师)来交流心得,目前看来效果不是很好,根本原因是请来的厨师主要讨论菜品设计和面向吃货的过程控制等,同学们还不了解自己怎么用这些知识来做出起码可吃的菜。不过,定位就在于让同学们知道馆子里大厨都思考啥和做啥。

欣慰的是,每一年课程都在改进。逐渐的,我们的二年级本科生在暑期真的能去馆子里炒菜,甚至直接敢把炒出来的菜端给顾客,似乎不少大顾客都竖起了大拇指。果然,天下吃货都是有一颗包容的心。

有同学在知乎上喊话,让介绍这门课的设计初衷。很简单,我们希望北航这个厨师培训机制能够给社会源源不断的送上大厨,来服务广大吃货们。什么掐脖子的,断供的,都不存在,有什么是不能通过烹调出一桌好菜来解决的问题呢?不过话说回来,光靠一个大厨恐怕是搞不定满汉全席的,如何搭建厨师班是我从2017年开始思考的问题,经过2018年的基础架构设计,我们再度把软件工程拉回到必修课,并面向领域做了精心设计。2019年是第一年,貌似炒出来的菜还不错,虽然也发现了不少问题。

seriously,OO课的改革始终是在路上。我们已经组建了新一届助教团队,不论是食材,烹饪程序,品尝和评价办法,还是烹饪工具,我们都列出来一长串改革和改进清单。也许,2020年,最值得期待的是,我们要培养一个吃货EVA。暂且不表,还在设计中,且待明年看效果。

最后,寄语刚刚走过培训班的厨师(雏厨),吃本是人生之大乐趣。你学会了烹饪,便对吃了有更深层次的理解和感悟。忘却厨师培训过程中的种种不乐和糟心事吧,幸福的去做好一个吃货。

posted @ 2019-07-08 19:16  知北游手记  阅读(957)  评论(0编辑  收藏  举报