老学长之前一直不遗余力地黑滑铁卢,不是因为滑铁卢不好,而是它好的方式太硬核了。
我企图用文章来避免任何一位失足少男少女一不小心掉进这个深海巨怪的口中,在找到宝藏前就被它吃干抹净。但其实滑铁卢有他的过人之处,今天就来讲讲成功披荆斩棘的勇士们,是怎么找到宝藏的。
一、三座大山
想要找到宝藏,勇士们必须学会绝世屠龙术。想要进入当下大热的量化基金做高频交易,或者是投入解放人类的自动驾驶,抑或开发更高、更快、更逼真的画质,你就必须接触滑铁卢CS系的三座大山。滑铁卢大学CSmajor大四以后有三门非常非常非常难的课,难到选课系统不允许你一学期同时上其中的两门(更别说三门一起),要想同时上两门或以上必须跟Advisor申请,成绩不好就不会允许。这三门分别是CSCompiler,CSReal-TimeProgramming(又名小火车)和CSGraphics.据称修完三门可以召唤神龙,任意一门都是黑魔法。CSGraphics,从计算机图形的显示原理学到建模,超逼真渲染,动画,光线追踪,采样原理,物理模拟……
光线追踪渲染的康奈尔盒,本老学长的作业作品CSCompiler,写一个编译器。自己根据Java语言的一个子集Joos1W编程语言的语法规则,写出整个语言的ContextFreeGrammar,从Scanning到语法DFA生成,到LR1parsing,编译器还要负责解决类的继承,类型的的链接,最终生成可执行的X86汇编代码。(看不懂在干嘛是很正常的,知道它牛逼就对了)CSReal-TimeSystem,从0开始,从输入输出都没有开始,给一个空的ARM芯片单片机(以前是Intel的芯片)写一个微内核操作系统,自己设计多线程,自己设计硬件driver,自己设计调度器,自己写用户应用,最后要用自己写的一整套系统去自动驾驶一个电动火车组。
小火车Lab,左三为教了这门课几十年的WilliamBillCowan教授,现已退休。这三门课的内容包含了计算机从完全没有到重构今天的PC所需要的所有知识,如果这会儿文明回到年,你只需要个电子工程学就可以把人类文明带回今天。
今日的滑铁卢计算机系几乎是处处比不过多伦多大学,尤其是在最热门的人工智能领域更是宛如餐费。而唯独这后两门课(图形学和小火车)与UofT的同类型课程相比,涵盖的内容更多,要求更硬核(毕竟从0开始),学习曲线自然就要陡峭很多,这其实是黄金时代所遗留下来的宝贵遗产。
二、旧时代遗留的黑魔法
接下来这一部分讲讲后两门课的小历史,急迫地想知道这三门课与标题里的热门行业到底有啥关系的的同学可以跳到下一部分。
年代可谓是滑铁卢大学计算机系的黄金时代。众所周知,滑铁卢本是隔壁Laurier的工程院,后来独立建校,工程院一直是学校的亲儿子,截止本文工程院已经有7栋楼投入使用,还有一栋在建。而数学院(及其下的计算机系)一直是捡来的小天才,虽不受待见但是为学校获得了大量美誉。但自从年建校至年为止,整个数学院只有一栋楼,MC,而工程院已经有了大大小小四栋楼。彼时正是操作系统和图形学蓬勃发展的时代,滑铁卢开设的小火车课程正站在实时操作系统的最前沿。
黄金时代时代的小火车Lab,彼时使用的是Intel芯片年,两位滑铁卢毕业生成立了QuantumSoftwareSystem,把自己在小火车课上做的操作系统清理了一下作为商用操作系统,这就是后来的QNX系统。公司后来被黑莓收购,深度参与了黑莓与滑铁卢大学长期的友好合作(直到黑莓破产)。年,滑铁卢大学终于给计算机系建了一栋楼,以支持发展,这就是目前滑铁卢数学院三栋楼里唯一的门面,校园东入口处的DavisCenter.计算机系的各类研究部门全部搬进这栋楼里,Bell和RBC还赞助了其中的几个Lab.
年的DavisCenter年,可能是受到了建楼的鼓舞,刚搬入新楼的计算机图形实验室发表了一篇划时代的论文,论文中提出的SurfaceAreaHeuristic大幅提升了光线追踪的效率,使快速渲染诸如斯坦福龙这样极为复杂的模型成为可能,这篇论文也成为了学习光线追踪必读的入门教材。然后….发表这个论文的教授就去UBC任教了。没办法,人家校园临海而建,面朝大海春暖花开,樱花大道连着静谧的日式花园和隐藏在在苍天古木中的图书馆,还有海边的玫瑰园。总而言之,图形学和小火车基本上就是滑铁卢大学黄金时代的烙印。而后进入新世纪,图形学在渲染效率和光学拟真度上基本见顶,操作系统也趋于成熟,两门极难的冷门课程便渐渐被人遗忘。
三、新时代的曙光
高频交易:金融行业市场需要处理大量的数据,做大量的矩阵运算。在量化交易这个词火爆起来之前,许多基金和做市商已经开始雇佣拥有图形渲染经验的软件工程师,试图利用显卡的渲染性能来进行大量的矩阵运算。而后诞生的高频交易,尤其是以“抢流动性性”为主的策略则需要极高的响应速度,而小火车课正是一门自始至终要把系统响应速度优化到极致的课程。有的公司甚至会为了让自己的交易程序快过竞争对手而专门雇人写特殊的编译器。
若想进入高频交易领域,只怕是得把三门课全部修完才够格。自动驾驶:自动驾驶技术对操作系统的安全性和响应速度有极高的要求,而当今自动驾驶领域最广为应用的操作系统正是QNX,诞生于滑铁卢小火车课的学生作业,实时操作系统调度器的设计问题也是自动驾驶公司最喜欢问的面试题之一。而除去操作系统以外,自动驾驶技术同时依赖模拟器的使用,模拟器中的光学渲染越接近真实世界对自动驾驶算法的训练效果就越好。想要乘上自动驾驶的春风,图形学和小火车必不可少。
自动驾驶行业的二哥,Cruise,之前被通用汽车收购,后来又独立出来。面试题基本上是图形学和小火车的作业题。想知道题目的来问学长。
实时光线追踪渲染:实时光线追踪是这两年游戏行业,显卡工业,科学计算等行业着重投资的领域。光影效果一直是游戏行业的一个难题,现实世界中复杂的光照环境只有通过光线追踪渲染才能实现,其对算力的需求远超现有硬件能力,在电影特效和动画渲染工业中,逼真的渲染通是通过大量机器离线进行光线追踪,耗时巨大。
而游戏中需要在最低1/30秒内完成渲染,使用光线追踪进行渲染几乎是不可能的(而游戏的确不是光线追踪渲染)。工业界一直存在对实时光纤追踪渲染的需求,而想要提高渲染效率,改良算法,优化缓存效率,首先需要熟练掌握图形学的各种技巧,还需要进一步对操作系统进行优化(来了,小火车课的内容),最终甚至需要从汇编代码层面开始进行优化(来了来了,编译器课的内容)。
年LucasFilmUnrealEngine搭配英伟达的硬件首次实现了电影画质的实时光线追踪渲染综合看来,虽然滑铁卢的本科在诸如深度学习,图像分割,自然语言处理等方面不能提供非常好的基础,但依旧可以为你提供进入热门行业捞钱的机会,对高频,自动驾驶,图形渲染,光线追踪等行业有兴趣的孩子们可以考虑一下。
闲扯:年SummerTerm有两位大神修了CS图形学,一位叫DavePagurek做了个动画引擎,一位叫TristanHume,做了个能渲染的跟照片一样的渲染器,TristanHume现在在做高频交易。他俩的Project应该是这门课前无古人后无来者的作品了。
文章来源:本文由滑铁卢大学在读留学生TomFeng首发于名校之星APP,如需转载,请务必注明出处,否则将追究法律责任!