作者:stephen ji
链接:https://www.zhihu.com/question/24307180/answer/1735346863
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【2021-06-23更新】更新完了五年的经历,正好在今天迎来了毕业典礼。谁能想到申请大学和新生周已经过去了这么久,之前天天压力爆表的日子也早已都是过往风云,而当年羡慕的工程皮夹克也早已是如今日常出门会条件反射般拿起的外套,iron ring也已经戴在了自己的小手指上。
不论是申请大学时报考工程专业,最终offer在麦吉尔和多大之间的纠结,还是大一Track One结束时自己选择细分专业,每一个时刻我做出的选择都是我当时认为最正确的选择。现在回头看这五年,我觉得多大ECE的经历是值得的,也是我认为对自己最佳的发展路线。
我承认滑铁卢的coop确实实力强劲很多并且也给学生更多更好的机会,也承认在培养程序员方面多大CS是更好的选择。但这些选择都不是我之前那些抉择时刻会了解并且考虑的,那时的我对CS方面并没有什么感觉,也没有想过要学这个方面。与此同时,多大ECE的培养方案后期自由程度让我有机会去学更多自己感兴趣的东西,也可以在更多领域都去有所了解,包括其他专业和学科。而对于从事软件方面,多大的平台和ECE的培养方案我认为也是够格的。
大一Track One的设置也确实让我对各专业有了了解,也给了我很大的选择余地,不需要太早地去考虑自己的具体专业方向。Track One Best One,即使大一过去多年,遇到Track One的同学也还是会不自觉地说出这句话。
五年来住过宿舍也通勤过,睡过24小时机房也半夜往返过学校。抢过很多次第一排也翘过不少课,连续八小时上课没吃饭过也在tutorial当众吃过小龙虾。拿过A+也拿过C+,主导过project也躺平等carry过。开局烂逆风翻盘过也开局好结局爆炸过,跟风过热门课也独享过冷门课。SF地下一楼买过不知道多少维他柠檬茶和印度咖喱鸡,WB对面的得装麻辣烫也没少去过。考完试做完project和朋友庆祝了多少顿火锅烧烤,在机房肝lab也叫过不少外卖。不过五年当然也有些事情没做过感到遗憾过,没有在周五去SF地下一层的SUDS喝过啤酒,没有去过ECE dinner dance和8ball(不过cannon ball还是去过)。图书馆Robarts和Gerstein只去过寥寥几次大多数时间都在SF Library和机房里,其他图书馆也都没去过。AC和Hart House的泳池一次没有去过,fieldhouse也是三天打鱼两天晒网。认识人的范围也比较局限,不在自己专业的朋友上完一起的课和搬离宿舍后联系也几乎断掉。也许这其中也有最后一年不是线下的原因,很多事情也都因此失去了机会。但即便如此,这五年依然可以说是丰富多彩。想到搬出chestnut那天自己的朋友圈写道也许几年后我们早已忘记过去一年学了什么,但在cn半夜约泡面一起怼作业的时光,永远都记得。对于五年完整的本科学业来说,何尝不是如此呢?
所有多大2T0+PEY和2T1的朋友们,恭喜毕业!
【2021-05-12更新】这两天刚出完了所有的成绩,只等六月的毕业典礼了(虽然是virtual)。经历了八个月电脑前的大四,也算是终于熬出来了hhhh。在七月开始搬砖之前,正好可以好好休息调整一下状态,也正好可以把这个回答更新完。接下来一个半月会不定期更新完毕。
答主背景:ECE+T1 2T0+PEY(大一时在General (Track One Undecleared) Engineering,结束后转入ECE,大三结束后参加了16个月PEY Coop), with Minor in Engineering Business & Minor in Artificial Intelligence Engineering
入学前:加拿大萨省高中完整四年,申请大学时只想着一定读工程,当时的自己想着希望今后能去造点啥大东西(楼房,飞机,汽车……),但是具体什么工程没有非常特定的想法,基本上就是Civil或ECE或Mechanical,如果可以有general选项最好。然后当年也没什么CS方向的想法。当时申请了五所大学的八个Program:UofT General (Track One Undecleared) Engineering,McGill General Engineering,UofT Rotman Commerce,McGill Management,Waterloo Civil Engineering,Waterloo Urban Planning (Environment),McMaster Engineering I,和Western Engineering I,一共拿到了七个录取。没中的是RC,因为当年作为105D最多只能拿一个多大的offer,如果第一志愿admit了后续志愿就不再审理了,我的第一志愿正好就是track one,所以RC的状态就永远停在了application received。最终在多大和McGill两所大学的General Engineering Offer中还是选择了来多大。
大一大二全学校支配,没有选课这一说。大三开始ECE是全工程选课自由度最高的专业了,除了工程经济ECE472(可以选什么时候上)和毕业设计Capstone,所有的课其实都算是elective。相比之下据说Civil Engineering到了大三才只能选一门选修课其他依然是学校安排的必修专业课……
总课表(来自Magellan,ECE自己开发的系统,取代其他专业通常使用的Degree Explorer)
大一上:初来乍到,开局顺利
2016年感觉离自己比较久远了已经……高中刚毕业的自己真的是全身活力,依然还记得开学前的Frosh Week,戴着工程帽穿着黄T桖,把脸和手臂染紫的自己(还是比较拒绝全身跳大染缸hhh),跟着大部队在Yonge上炸街并且在市政广场的水池打水仗(当时玩疯了,不过当晚回宿舍就感冒了,这种下水活动作为华人还是得权衡一下身体)。后几年的这个时刻经过downtown时看到新生活动都感觉真的,年轻真好hhhh。大一的学业和后来比较,真的算最轻松的了,熬夜虽然也没少熬,但也还是有不少开心娱乐的时候的(不过没有去过REBEL也没有蹦过迪,到现在也依然没有过hhhh)。这一年住在Chestnut,虽然说是工程大本营,我特地选了没有任何主题的楼层(其他楼层有工程专属,男生专属,强调安静,New College专属等等),也因此不同专业和背景的朋友都认识了不少。宿舍的生活也挺精彩的,还有chestnut的自助餐真的非常棒。当时确实中间也吃腻过一段时间,但现在想想无比怀念。
课业上第一次接触大学课程,进度和深度确实比高中是飞跃,而且考试比重大,期中期末加起来都占到了80%上下,不过总体感觉其实并没有宣传那么恐怖,高中时学了IB物理和数学SL,专业课都觉得还行不难对付。不过ESP(APS111)是真的玄学课,随机分配队友,各种report加持,TA打分标准也不统一……还有就是这门课也是大一熬夜主要来源。大一上的成绩个人还是挺满意,虽说不算顶尖没有3.8+的一个水准,但也还是一个不错的大学成绩开端。
大一上的课表,五门主课和一门seminar,全部学校安排
大一下:难度起步,稳步前进
相比上学期,下学期的一切都变难了,专业课难度上升不少,玄学课ESP的继任者APS112的要求也变得更高了。我记得MAT187的Term Test 1,是我来加拿大后数学最受挫败的时刻,对着题目完全无法下手,最后靠着group part大佬才拿了60%(考前苦练integration technique,然而考的答题全是应用,首先你得可以列出integral不然谈何计算),不过好在后来两场考试都考得还行再加上curve所以最后还是拿到了A。此外这学期开始学编程了,APS105,每周都有lab,难度也在快速递进,但是我发现我还挺喜欢写这些lab的过程的,而且不论是开始的简单计算器,还是后来的翻转棋AI,当你的程序运行时,真的有很强的成就感。MIE100觉得挺狗的,东西动起来真的一切都复杂多了。一直宣称大一难课的ECE110反而感觉还好,尤其后面的电路部分感觉很直接。ESP反正还是一如既往,各种玄学。这学期虽然说总体难度确实高了,但是成绩和上学期基本一样,总体走势还是不错的。
大一下的结束也代表了Track One的结束,是时候决定进什么专业了。因为可以Core 8中任选,所以考虑的更多的是自身兴趣。上大学之前我只知道我会在Civil,ECE和Mech中选择,不过经过这一年我明确知道了我会选择ECE。不仅因为自己在ECE110和APS105都感觉不错成绩也可以,更重要的是发现了如今什么领域真的都有ECE的影子。比如说想造汽车,想想特斯拉和其他电动汽车的发展,想造飞机,现在飞机的航电系统也是发展得越来越厉害,生物医药方面现在的相关仪器和设备也有ECE的参与研发。而且ECE本身领域也很广,多大的ECE设置也允许各个细分领域都能接触到。
大一下的课表,五门主课和一门seminar,全部学校安排
大二上:专业开端,压力加码
从大二开始每个专业就都进入自己的专属课程,给工程整体打基础也变成专门给自己专业的特定知识打基础了。EE和CE的大二是完全一模一样的,依然没有支配课表的权利。课程内容上,所有ECE的领域全部都有涵盖到:软件,硬件,信号系统,线性与电子电路,电磁,外加更进阶的数学,不论今后自己的发展兴趣方向是啥,这一年这些课程一门也不能少,而且之后高年级的所谓多大ECE六大领域全部都是建立在这些课程上的。而从课时上来看,ECE大二的课时已经几乎和EngSci一样了,每周课时有31-34小时。
其实大二的上半学期还是比较OK的,并没有什么像大一ESP那样会有持续不断的communication tasks。如果说大一的难度是100%,大二上我感觉最多也就是110%的样子。大二上最主要的难度来源是ECE241,硬件课,Verilog大法好。一开始从布尔代数和AND OR NOT gate教起,非常基础,然而之后难度是真的指数级增长了,当教授开始把一堆flip-flop和各种不同的clock还有ALU结合在一起时,我的内心是真的崩溃的,到后面SDRAM cell和CMOS更是直接放弃。除此以外Verilog也是不堪回首,和软件语言逻辑很不一样,debug没有板子的话要么直接抓瞎,要么看Simulation Wave然后想办法找到一千多万microsecond时发生的不对劲的地方……开学时信誓旦旦以后一定要软硬件一起全方位发展,学完后只想说硬件再见,不会再碰Verilog了。其他课程基本都是大一建立的基础的延续,MAT291 Calculus III算是较难的,本身虽然只是多元和矢量微积分,相比大一数学更强调空间感,主要后期根据ECE的需求有开始介绍电磁的Vector Calculus应用给下学期ECE221做准备,因此啃教授的额外笔记有点头铁。MAT290主要学ODE和Complex Analysis,知识面广而不深,但是对后续学业非常实用,最大的感受:拉普拉斯变换yyds!ECE212,大一ECE110电路部分的延续,依然还是线性电路的范畴,至少在当时感觉是大二最简单的课了(前提是大一电路学得还可以),不过听说后来可能有增加难度以便更好准备下学期的ECE231。ECE244则是学习C++,更加侧重OOP面向对象编程的知识,编程这种东西多学永远没有坏处。
进入大二后感觉明显大家的课外活动和娱乐相比大一都少了不少,压力的增加是清晰可见的,平时下课基本上时间都泡在ECF或者SF Library了(大二上还没进ECE UG Lab)。成绩上因为难度和压力的增大也还是影响了一点,不过还是苟住了honours线。大二的寒假痛痛快快地去蓝山滑了雪泡了温泉,尽力地释放一个学期下来的疲惫和压力,殊不知真正的暴风雨马上就要来了……
大二上的课表,五门主课和一门seminar,全部学校安排
大二下:地狱时刻,超级翻车
之前说过如果大一的难度和压力是100%,我认为大二上是110%的水平。而大二下的话……我感觉说200%+都不过分……首当其冲的就是大魔王ECE297,一个学期三个人一组用C++写出一个谷歌地图,需要同时兼顾地图绘制,应用功能,还有算法(最短距离导航和加强版TSP,加强版TSP是采用全班排名来评分,榜单前面的人真的各种神仙打架,太牛了),此外还要像大一ESP那样写报告做presentation还有每周汇报进度,大二下学期可以说将近一半的时间都在搞这门课了。不过这个project确实是大家第一次接触大型软件项目的机会,并且毫不意外地成为了日后找实习的必备谈资hhhhhh
虽然ECE297很费时费精力,然而这个学期依然还有另外四门课。而且这四门课的难度都不低,每门单独拎出来都很刚。ECE216,玩不完的傅里叶级数和变换,信号和系统的本质还是数学。一开始很直接,后面喵喵喵?这门课不幸学炸了,不过主要是自己的问题。不仅一道practice problem也没做,还翘了所有的tutorial,因为297实在太忙然后tutorial也没有算分的东西,然而最后的分数明确表示出来混还是要还的。ECE221,大一ECE110的电磁部分再学一遍,不过这回是用Vector Calculus,直接从数学角度分析,上学期Calculus III特地额外准备的部分就是为了这里。可能是因为课程设置的问题,我们这一届的221感觉不是很难,至少不像前后几届那样直呼劝退,虽然最后的average和往年并没啥区别而且也搞了curve。ECE231电子电路,彻底颠覆了我对电路的看法和理解。当事物不再线性时,一切都变得恐怖了很多。之前只搞电阻电容电感,还有理想的运算放大器,然而这门课就是各种分析非理想状态,外加二极管MOSFET和BJT,以及用这些元件再去做amplifier,着实把自己整吐了,这玩意儿比硬件还恶心。所以说什么芯片,硬件,集成电路这些东西真的和自己无缘,虽然说国家很需要这方面的人才,但是这玩意儿是真的不好学,连入门基础课都是如此……最后231听说是curve了10分后才有C的course average,是我在多大见过的最低的平均分。在工程系也应该见不到平均分比这门更低的课了。ECE243,又一门硬件课,不过写的是Assembly,反正比写Verilog好。侧重点更偏向subroutine,interrupt,还有CPU,cache和pipeline这些,是对于软件方面更加重要的硬件知识,也是日后学OS的必要准备,还有很多软件面试也会考核的东西。我们这一届是最后一届学NIOS II Assembly的,从下一届开始这门课换了教授也做了大改,Assembly改用了ARM架构版本,而且更强调C和Assembly的联系,表示挺羡慕的。
压力如此繁重的大二下学期,在此翻车的朋友非常的多,包括我本人。我大二下的GPA比大二上低了0.8,cGPA直接带下去了0.22,成绩和信心都大伤元气。与此同时,这个学期也是诸多ECE学子,尤其是我们这些大二才进入ECE的同学,都产生早知道还不如去学CS的想法最强烈的时刻。毕竟以后如果是做码农的话,明白BJT的Saturation Mode和Maxwell's Equation对我有何用,而且CS对于软件方面的学习也更专注深入和全面系统。
我自己确实被这些课折磨时,确实也是这么想的,但是仔细想想,在入学前自己也对CS没啥认知。如果回到当年申请大学时,我也不像会做出报CS专业的样子。走目前的选择也是自己经过大一体验才决定的,现在在ECE也依然可以带我进入软件行业,而既然已经选择了ECE,索性应该更去发掘一下自己感兴趣的,ECE相比CS自己更特有的地方。
大二下的课表,五门主课,全部学校安排
大二大三之间的暑假:
大一的暑假啥都不干没有问题,但是大二大三之间的暑假是一定要做点事的,不论是research还是暑期实习。我大二一开始就报了学校的eSIP,然而相比PEY来说eSIP的机会真的是太少太少了,而且所有eSIP的职位因为正好都是四个月,所以也意味着会和滑铁卢coop的同学直接竞争,而他们也通常有更丰富的工作经验。论coop方面,滑铁卢是真的不得不服。最终一共也只拿过两个面试然后面完后就没有然后了……不过另外一方面,大二的学业经历让我在安排暑期这方面并不是很用心,也没有去找教授问research机会啥的。
大二下给自己排高年级课程安排时正好排出了engineering business minor,而minor所要求的三门JRE也正好是工程在暑期开设的为数不多的选修课。找实习和research未果于是决定在五六月份修掉JRE300和JRE420。本来以为两门商科课可以把GPA提高一下试试,然而真学了才发现想多了……RC的同学天天面对会计金融的知识,写市场营销的case还要搞管理和organizational behavior啥的也是辛苦了。不过因为JRE300有幸使用了Rotman的楼的finance lab,明亮整洁的布局还有若干显示着股票指数变化的大屏墙与ECE在SF和GB的UG lab形成了鲜明对比hhhhh。最终这两门课学完后cGPA没有任何变化,不过后期也早就想了只要不脱后腿就好。
上课的同时也没忘继续看有没有其他暑假工作的机会,最终通过学校的CLN portal找到了一个七八月为期八周的summer job,给一个多伦多本地的华人奥校优化网站还有当讲师(不过最终讲师的工作没有干)。虽然说这个工作地点比较神奇无人知晓,但是好歹也是专业相关。在实际工作中也确实做出了一些新功能和页面优化,借此机会也接触到了php,HTML,SQL和git这些工具。我本来觉得这个经历稍显野鸡,但后来在我大三PEY工作面试的时候,几乎所有面试官都主动问我这段工作经历的细节。所以真的大二暑假只要有实习/工作/research经历,不论啥样都是ok的。
大三上:努力求职,学业低迷
熬过大二又经历了一个忙碌的夏天后,抱着高年级能轻松些的想法开始了大三。现在看来其实这个想法并不完全正确但也不是完全没道理。首先这取决于选课,选课选得好分分钟大二水平(我这个课表的课时也有31小时,和大二持平),不过经历了大学两年尤其是大二之后,也已经处于一个比较适应这种节奏的状态了,课程拿分的难度也确实总体比低年级低一些。但是与此同时,大三找PEY和大四找工作还有申研都会额外花费时间和精力,这个就要因人而异了。
大三上其实大多数人的课差别并不是很大,像之前说过ECE302和ECE345都是在同一时间全员必修的存在,剩下有不少热门课像ECE311,344,361之类的也都只是大家安排在不同学期而已。ECE302就是概率应用,前期高中难度,后期上各种积分和模型后还是可以绕晕大家,不过总体难度就那样但非常重要,除了满足Area 4或者7的需求以外,不少其他专业课也都有要求先修或者并修。ECE311讲的是Control Systems的入门,比较对应机器人或者国内说的自动化这一类方向,本质上全是围绕着Laplace Transform展开的数学运算,还有各种Nyquist Plot和Lead-Lag Controller啥的,有一定套路性。因为同时作为Kernel还有Robotics Minor的要求课程,绝对难度也不高,因此学的人也非常多,但这门课拿分相对反而不算容易,平均分一直是较低的存在,这点比较有意思。ECE320电磁场与波,我这学期最硬核的课,学这个是因为221学得相对还行外加凑kernel同时还能把CEAB NS点凑齐(当然也有朋友安利)。知识点巨多计算量很大(还都是复数运算为主),各种传输线Maxwell方程还有waveguide的研究,脑子真不够用。现在我对这门课印象最深的就是史密斯图,黑魔法一般的存在。不过教授人特别好讲课也很清晰,我大四时也有幸在他指导下做了Capstone,这个就是后话了。ECE345算法与数据结构,也是一个全员必修课的存在。这门课基于著名的CLRS课本,从Big-O到NP完全问题都有讨论,包括各种排序问题,红黑树,最短路径等各种数据结构和算法。比起修课本身,这门课更重要的意义是作为PEY软件面试重要准备来源。ECE361,ECE高年级专业课第一文科课,各种网络结构和数据传输方法,什么应用层传输层,TCP三次握手,MAC和IP地址,ARP等等等等,要背的东西特别多,反正上下来不轻松。但是如果想作为CE毕业又不想学硬件的话那也只能学这个了,而且网络方面的知识也确实很重要,这门课的lab也有接触socket programming和wireshark分析这些重要技巧。
其实这个学期比起课本身,更重要的是找PEY。PEY上ECE相关工作的post还是非常多的,从各个downtown的start up,到Markham的各大大厂,甚至还有几个欧洲和硅谷的工作机会。前前后后我也投了五六十份吧,一共也参加了差不多10场面试,最后非常幸运在12月初期末考前同时拿到了三个offer,正好中间有我想去的公司和感兴趣的职位,就这样我的PEY求职之旅在第一个学期就顺利完结了。不过因为拿完offer后太过开心,final没好好复习,结果五门全炸。虽然最终GPA比大二下还是高了不少,但比起大二上还是差了些,而且相对而言大家的成绩也都上升了。不过管他呢,工作定下了就别想那么多了!
关于PEY面试插一个题外话,我发现其实面试还是很迷的一个存在,不同面试官的要求即使来自同一公司也可以天差地别。我经历过只让我用pseudocode写一个简单排序,也有追着我问interrupt和pipeline(软件面试)再要求C语言的string函数的规范写法,也有各种数据结构和递归结合的骚操作等等。然而很多时候你的表现和最终结果常常相反,很愉快的面试没有回音,觉得面砸了结果拿offer也都发生数次。所以相比考试,对于面试真的充分准备虽然必要,但是状态要放松,谈吐也能常常因此更加自信。不过有一点,所有的面试官都会仔细询问简历上的项目和工作经历并且扣细节,不论这个经历自己感觉多烂还是很牛。所以一方面自己的过往经历一定要熟悉,但是另一方面真不要觉得自己做的可能不值得提起,既然做了就写在简历上,有经历一定胜过无经历不论实际怎么样,这常常是拿到面试的关键。
大三上的课表,选了ECE302,ECE311,ECE320,ECE345,ECE361
大三下:摆平心态,状态回升
在过去的整个2018年自己的状态都不是很好,一方面成绩达到了低谷,大三上一直想着彻底翻盘实际结果也不是很理想,另一方面整年也没有过一个系统地休整过,全年最远只去过大瀑布。不过好在2018年结束前就成功锁定了PEY的工作,也算是阴霾过后终于又见到了些光明。这个学期相对来说我就决定不再紧盯着成绩,放松心态开心就好,学成啥样就啥样哈哈。而且讲真我也早已开始憧憬PEY后的日子了~
这个学期只选了三门专业课,总体压力也确实感觉小了一点,即使刚开始一共有六门课,课时也依然少于上学期五门课。首先是CSC343数据库入门,虽然是CS的课但是也可以作为我们的Area 6 Depth。前期写query要多练,后期什么FD,BCNF,3NF和ER图的完全可以看YouTube学会(当时的教授讲得是真不咋地,完全听不进去)。作业还算中规中矩,期中考遇上大雪极其难得停课只好推迟,结果不幸被重新安排到了reading week前的周五早上八点进行,大大影响了大家的发挥(平均62)进而连累到了最后总分(本来都说是门水课),还好最终还有个A-。这门课虽然说难度确实不高,但是我感觉对于ECE没那么值得去学,因为数据库SQL这些其实完全可以自学,还有就是如果在CS选课的话,有好多比343更值得去学的好课可以选择,尤其是在只能最多学三门CSC的情况下。当然如果没想那么多,那上这个也没问题。ECE316通信系统,什么AM,FM,PM,PCM,ISI和其他各种模电和数字通信的入门概念,本质上大量围绕傅里叶级数和变换。虽然当年被ECE216虐惨,但因为也想了解了解通信方面因此还是选了。我学的时候教授是Sousa,教学质量真的一言难尽,还好他的课程内容算相对浅的,同时还有个超赞的中国TA,一切都讲得非常清楚。这门课也是有不同教授来教的,不知道他们咋样,但我觉得相比之下除非对这个领域感兴趣,否则凑kernel请选择ECE311。ECE344操作系统,搞后端和全栈肯定要学,本来下学期的344是神难的OS161版本,但是当时对应的教授暂时不在,换成了一位常年负责带各种课的讲师。这位讲师啥都教,也不知道学校是怎么想的,OS显然也不是他的领域,基本上就是按照课本来教,lab也用的上学期版本还允许组队,一下子这门课完全不像本来应有的样子。虽然说上课过程变轻松了,但是因为学得比较考试应付性,感觉实际对于OS的理解不是很到位,日后搞相关应用和工作时也还是有点迷茫。ECE472工程经济必修课,说是经济实际上是会计和金融知识,各种算NPV和RoR来评估项目价值这种,如果学过JRE300会有一定内容重叠。想拿高分也主要是靠多刷题来练快速信息提取能力来达成。建议最好大三搞定,有些人说对PEY的生活有些用,不过大四讲真不想把时间放在这种课上。JRE410商业与竞争策略,Business Minor必修,是三大JRE课程中我最喜欢的一门,因为内容相对日常贴切,讨论也比较容易切入,不像JRE420太过人文。这门课除了考试之外,每周都会拿一个经典商业案例进行讨论,还有会完成一份商业计划书,反正我觉得总体体验挺不错,就是考试打分比较烦人hhh。此外一开始我还选了SOC100占HSS的坑,以减轻大四选课压力。不过没多久后学校把JRE420认定为HSS且可以追溯到过往,那相对来说我就不急着选HSS了。再加上这门课课外完全没怎么学课本也不怎么看,结果TT1直接炸了,于是立刻drop。并不是说这门课难,只是我不想花太多时间在这上面。如果要学的话,只要该整理的笔记该读的课本都做了应该也不是问题。
虽然说这学期心态放松了,但是成绩反而继续回升了。这个学期最终的成绩基本和我大二上的水平差不多了,我感觉自己的状态也算是开始恢复了。其中比较神奇的是虽然216是我多大最低分,但316反而成为了我大二下到大三下期间的最高分,看来Area 4自己也还是可以稍微再看看的。这也印证了216分低完全是因为当时该做的事都没做,并不完全是课难的问题。这个学期的结束也意味着要暂时放下学生身份一段时间,因为紧接着PEY就开始了……
大三下的课表,选了CSC343,ECE316,ECE344,ECE472,JRE410(课表上的SOC100中途drop了)
PEY:劳逸结合,恢复元气
一直期待的时刻终于来到了,初次体验职场还是很激动的。有了自己的工牌,格子间,工作邮箱,与各种不同的同事一起工作,同时还期待着每两周银行账户里工资到账,这是以往完全没有体验过的日子。在公司遇到的同事不论是mentor,经理,其他老员工甚至是部门总监都对我非常关心,也提供了很多帮助,我的team也特地安排了简单的测试任务让我快速上手,然后再一点点加大难度给予更复杂的锻炼机会。到了中后期,感觉大家对我也是基本上就像其他正式员工一样了,repository里面也多了不少我的提交记录,除了debug以外也有过一些对新功能的支持。工作的时候也学会了很多新技能和技术知识(刚到公司时感觉学校都在教啥怎么什么都不一样),对后来大四的专业课也打了很好的基础。除了技术方面,我感觉实习也对人际交流方面是一个很好的锻炼。为了完成工作去回复涉及上百人的email thread,直接给其他国家的team打skype电话,还有每周几个不同location的team同时在线的项目例会,让我也是接触到了形形色色各种不同背景年龄和工作地点的同事,也了解了职场的有效沟通的进行方式。平时和同事接触甚至还意外让我掌握了做拿铁拉花的技巧,也算是意外收获哈哈。我觉得PEY相比传统coop可以更加深入了解一家公司并且更深入参与规模更大的项目,这个优势当然要取决于自己的感受,但对我来说我觉得我算是很好地感受到了。
这一年也确实是入学以来,可能一直到今后退休前自己最轻松的一年。作为实习生给的任务确实还是不会有太大压力的(摸鱼也确实谁没干过呢),然后加拿大也是很讲究工作生活平衡。上学的时候课后需要花费大量的时间完成作业复习备考,但是上班时工作时间以外真的就是自己的时间。平时大家也不加班,除非真的遇到了棘手的情况,一般也都是自己算好八小时早来就早走晚来就晚点走(公司也不打卡,就每周自己登记项目时间)。与此同时因为同时有很多朋友同时一起PEY,只是不同的team,但基本上中午都会一起吃个饭,下班后和周末相约一起开车出去玩。整个实习期间利用休假和长周末去美国玩了两趟,还坐了一次邮轮,反正这一整年是真的特别开心。
好景不长,很快疫情来了,随之而来的各种变化也使得我最后半年的实习只得在家远程完成。之前规划的休假回国只得取消并且无限期推迟。我个人是认为在家工作的感觉不如在办公室,少了和同事面对面的交流不说,大家的普遍在线时间都有所延长以至于我也跟着一起晚下班了。不过这正好也是个表现自己努力的机会,继续认认真真地完成了不少任务。最终非常幸运拿到了return的机会,这给我的大四省下了不少精力。过一个月就要又开始继续一起忙碌了,很期待全职工作的样子。
与此同时因为疫情导致的一切全部线上也让我正好有了机会在最后的四个月同时修了APS360。确实边上班边上课感觉一下子又忙了起来,下班了还得赶lab和project,但这门课也让我打了一些机器学习的基础为大四的课业和毕业设计作准备,同时重新开始适应了在校上课的节奏。课程本身不难但非常实用,编程要求也不高,对于想简单接触AI方面的朋友是个很好的选择。
大四上:重归学业,多元体验
工作了一年回归忙碌的课业生活确实一时有点不习惯hhh,但一切也终于快要结束。最后一年只能全程在线上完成,以这种形式结束学业真的非常不甘心但是也无能为力。缺少人与人之间的之间线下互动我是感觉非常难受的,尤其是合作各种project很不方便。不过从最终的结果来看,网课机制貌似对于最终成绩还是很有帮助的,也算是网课的好处吧。
大四上的时候为了预留找工作和可能需要申研的时间,我只安排了两门专业课分别是ECE421和431,ECE421是机器学习入门,主要注重线性模型。因为学过APS360对于内容也还不算陌生,但是相比之下理论推导证明以及数学要求就高了很多,完成作业需要大量补习线性代数和多元微积分知识。不过相比这门课以前的样子,我学的时候因为教授不同所以这门课也和往年不大一样,更多接触神经网络方面的内容,既建立在APS360的基础上,又为下学期CSC413很好的铺垫。平时作业占比大,考试相对数学部分少了很多而是更多代码和解释方面。最后分数也不错,碰上这个学期的课程设置真是运气不错。ECE431讲的是DSP,各种Sampling,DTFT,DFT,FFT,Multirate System什么的,除了多媒体方向应用以外,不少主攻集成电路方向的同学也都来学。也可以说是一门硬核课,难度和计算量都不小,但是教授真的非常赞,所有的知识点和例题都讲得非常清楚,要是216和316能像她那么教就不至于学炸或者学不懂了。
选修课方面因为business minor还差两门课,我想试一门很有意思的新课但又怕踩雷,于是选了三门相关课程准备三选二(但是最后因为都有意思还是全部学了下来)。TEP444快乐工程师,确实课如其名,除了拿A几乎不可能(但是可以说保证A-)以外,拿来凑HSS太合适不过了,而且还能算Business Minor,所以几乎每年都是一抢而空,必须掐点第一个抢不然只能慢慢waitlist了。APS500,只开了两年的新课而且规模很小,教作为工程师在各种场合如何与其他人开展谈判。每周都会给角色和不同剧本然后随机安排不同的谈判对象,利用课上学到的谈判技巧来进行模拟谈判,特别锻炼口才而且过程也挺刺激,非常有意思。这门课是我整个大四最难忘最喜欢的一门课,真的强烈安利。最后还学了ECO101,对于不少文理的大一同学应该都有非常难忘的回忆了。修这门课是因为凑minor和CS还有相对计算比较多。一开始我觉得100 level的课能难到哪去,后来发现内容上确实是大一水平因为知识点确实是表层水平,但是教授玩文字游戏和挖坑真的太厉害了,不得不说这个作业和考试压分的样子真的大开眼界。我必须说这种背负着害怕分不够进不了系的压力真的不比直接课业量的压力来得小,所以文理的同学真的一路过来也特别不容易。Gazzale的名声之前从文理的朋友已经略有耳闻过,亲身经历过表示确实名不虚传。但是他上课真的讲得很好很有趣,每周看完专业课的视频过来看看eco也算是活络一下自己的脑子。后来教授换成Farhoodi后,教得还行不过确实没那么有趣,但是考试变得直接很多。本来是真的担心这门课拖GPA后腿,但最后结果还不错。据说Winter和Summer的ECO101压力要小些,所以如果不是要进专业而只是凑选修的话,可以考虑避开Fall来学这门课。
当然了对于大四工程怎么能少了全年毕业设计这个重头戏,平时在这方面也没少耗费时间,但是作为整个本科生涯的总结,怎么拼都是值得的,不仅仅是为了分数。开学前六月份敲定project内容和队友,主要是wifi和神经网络相关的方向,supevisor正巧是我大三ECE320的教授。团队方面一起合作的三位队友都很大佬,真的太感谢他们一路互相帮助了。毕业设计除了技术部分以外,大一ESP时经历的写各种报告还有presentation也是不可或缺的,上半学期主要是proposal这一类的文书还有技术部分的基础准备工作。必须要说在写文书时,大多数时候充当PM角色的admin常常和supevisor的要求是相反的,有些地方太细节了admin嫌啰嗦看不懂,supevisor觉得OK的示意图admin又觉得解释不够,怎么平衡两边需求真的是个问题……
当时疫情也一直在一个恶化的趋势,反而让我因此很专注在学业上。虽然网课上得很头铁,但是这个学期的结果是挺让人开心的。成绩方面可能是因为网课也可能是因为终于开窍也可能是因为自己选的课很愿意去学,这学期的GPA直接超过之前所有的学期,逆袭之路算是开了个好头。更高兴的是10月份的时候得到了PEY时的公司邀请return,开心之余更重要的是一下子不用为求职和申研费精力了,可以全身心投入在完成剩余的课程上。不过一直在家全程电脑前,感觉时间也确实过得很快,一个不留神这个学期也就过去了,很快就是真正的收官时刻了。
大四上的课表,选了APS500,ECE421,ECE431,ECE496Y(毕业设计),ECO101,TEP444
大四下:终极冲刺,逆风翻盘
不得不说网课模式下的多大硬生生地冲掉了很多作为大四学生应有的不舍得离开校园的情感,相反我是非常期盼早点上完早点卷铺盖走人了hhh。其实根据之前几个学期的课程完成情况,这学期在完成毕业设计的基础上我只要再上一门ECE专业课就可以直接毕业了。不过因为毕竟还是学生还比较有学习劲头,加上为了冲刺一把honours毕业(没办法大二托的后腿补起来不容易,但这还是可以做到的),于是依然选择了full-load,并且这个学期还是全专业课全写码的配置。
这学期首先是为了AI minor选的两门CSC课程。CSC384名字很霸气,AI入门,很早就有听说过的一门课,但实际上就是简单的介绍查找算法,CSP和HMM这一类的算法工具,主要的重点围绕怎么设计heuristics。作业代码稍微需要讲究一点performance但主要都靠提供的API,难度也不大。网课模式下这门课是上得非常轻松愉快了。CSC413神经网络深度学习,选的初衷是避开ECE368这门硬核难课,但这门课本身是了解这个领域最新成果的好机会,相比之前的课程会接触到很多更先进的神经网络架构比如BERT和StyleGAN。同时教授Jimmy Ba也是Hinton的学生,还是Adam优化法的提出者。不过课程设置有点失望,大多数作业的精力都花在怎么配平两边的matrix/tensor size然后应用部分比较缺失,但至少拿分还是还是愉快的就够了hhh。ECE462多媒体系统,JPEG制式细节还有各种视频原理,教授讲述非常不清楚上课也听不懂。还好Lab的设置很帮助理解内容,也正好重新熟悉了matlab。建议直接自己对着教材和课件自学加上lab的手感,完全够了。ECE568计算机安全,内容很多很杂,缓存溢出加密技术蠕虫病毒SQL注入。准备考试时很头铁,但是整个学习过程感觉很酷,lab都是各种各样的攻击漏洞,颇有黑客风范。
这学期最重要的还是完成毕业设计,做着做着也不可避免得发现了各种之前设计上的缺陷然后各种调整计划,中期训练GAN时一度各种玄学也挺让人崩溃。但很多时候整体效果不佳,往往是小问题在根源部位导致的。最终我们还是成功修复了问题,并在三月中旬达成了预期目标,训练出了理想的生成网络。当我们随后连续加班加点写完一万六千词的最终报告,做完海报和演示视频,得到教授的称赞肯定并且拿到A的总成绩时,真的感觉这一年的付出没有白费是值得的。最后一个final季疯狂冲刺了一波,最终也刷出了最好的学期成绩。而且冲刺毕业honours的目标也成功达成,算是成功补回了大二大三的欠债。不过相比成绩,我觉得这五年的跌宕起伏也真的是很精彩的经历。比起成果,这一路的过程更值得被纪念。
大四下的课表,选了CSC384,CSC413,ECE462,ECE496Y(毕业设计),ECE568
--------------------分割线(攻略相关)-----------------------
大三大四选课背景:
之前说过,大三开始ECE是全工程选课自由度最高的专业了,除了工程经济ECE472(可以选什么时候上)和毕业设计Capstone,所有的课其实都算是elective。多大的ECE提供的方向选择范围之广,应该是很多大学的EE和CE专业无法比拟的,从光纤半导体到软件人工智能,只要想学就都可以选。这些领域放在国内也应该是早就细分成了很多个不同的专业。当然每门课也还是有自己的属性,然后选课还是要满足毕业要求的。
ECE的高年级专业课分为六个Area,其中Area 1-4属于EE,Area 5和6属于CE。此外还有一个Science/Math Elective Area,或者称之为Area 7,毕业要求这个area也要修一门课。前六个Area都有一两门课属于Kernel Course(核心课),都是300级别。每个ECE的同学都需要选择四门来自不同Area的Kenel Course,这也是为什么说即使是CE在高年级也要至少修两门大三难度以上的EE课。在选完Kernel后,对应的四个area要再选择其中两个,每个area再修两门其他课程,称之为Depth Course(深度课)。这四门Kernel和四门Depth的选择会决定你是以EE还是CE毕业,而在校期间注册在EE还是CE其实是完全没有任何关系的。除了这八门课以外,还要求完成一门Area 7的课,工程经济ECE472,大四的全年毕业设计Capstone,额外三门任意的高年级Technical Elective,两门Complementary Studies和两门HSS Elective(比较像ArtSci凑BR,但是必须算GPA总分,没有CR),和一门Free Elective。同时除了学校课程要求以外,还要满足CEAB要求(交给Magellan来算就行)和600小时工作时间要求(或者完成PEY)。
虽然说有六大Area之分,但是因为现在的行业发展与就业形势,绝大多数同学都是往CE方向靠。(2T0+PEY和2T1这一届的毕业生中最终CE 237人,EE 58人)Area 1和2相对冷清很多,因为所属课程是半导体光纤电磁和能源相关的领域,大多数人最多只会考虑修一门Kernel凑毕业要求。Area 3是模拟电路和数字电路,相对还是能听说有些人在这个方向发展,不过经历了ECE231我是肯定不会去凑热闹的。选课热度基本上都集中在Area 4(信号处理和控制与通信系统,也包括Machine Learning方面的课),5(计算机网络与硬件)和 6(软件)上。因为这个大家的选课倾向,不同的课程的热度和设置位置数量也是差异巨大,基本上目前是这个情况(以下课号如没有注明均属于Kernel Course):
热度超高:ECE302 (Math/Area 7 Elective),ECE345
“不是必修似必修”,这两门课基本上是必修课一般的存在,几乎所有人不论最终发展方向如何都会选的课,而且绝大多数人都会在大三上半学期修完,不过下学期也有开设以备不时之需。
热度很高:ECE334,ECE311,ECE344,ECE361,APS360 (Area 6 Depth),ECE421 (Area 4 Depth),ECE568 (Area 5/6 Depth)
全年两个学期都会开,总课位数在200-400之间,不过相对上面两门不会太集中一个学期。除了334和311是属于热门的凑毕业型kernel以外,剩下几门都是对于Software方向发展非常实用甚至必备的知识,以及Machine Learning方向的入门课。
热度中等:ECE318,ECE320,ECE316,ECE342,ECE326 (Area 6 Depth),ECE368 (Area 4 Depth),ECE419 (Area 6 Depth),ECE470 (Area 4 Depth)
全年课位数在100-200之间,有一定需求量,而且相对来说内容本身更硬核一些。其中ECE318和ECE320因为可以满足CEAB的NS点数要求因此大多数人都会在这两门二选一,不过也可以两门都不学,选择通过额外学CIV300/CHE353这类Area 7课程来满足NS点数要求。
热度较低:ECE313,ECE314,ECE331,ECE335,绝大多数非kernel课程
课位设置本身就不多,而且要学也不愁选不上。这四门列出的课都是能源、模电电路还有半导体方向的Kernel。除此以外除了上面列出的几门depth course以外其余的都规模都不大,因为越往上大家的兴趣方向也会越来越发散,而这里没有提到的课程还有很多很多,仅ECE内部就至少还有五六十门可以选择。
此外如果愿意,ECE是可以选修最多三门的CSC300+课程的,其中CSC343和CSC317/418可以算作Area 6的Depth。其他课程也可以用来满足technical elective或者AI还有Robotics minor的要求,像CSC309,CSC384还有AI/ML方向的CSC400+课程在ECE也是非常抢手。CSC给大多数高年级课程都设置了工程专属section,因此不用和CS竞争位置,当然这些位置通常也很有限。需要注意的是也不是所有的CSC课都可以选,如果ECE有供应同样内容的课程比如OS (CSC369,ECE344)或者机器学习入门(CSC311,ECE421)那就必须上ECE的版本。