作者: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,著實把自己整吐了,這玩意兒比硬體還噁心。所以說什麼晶片//chip,硬體,集成電路這些東西真的和自己無緣,雖然說國家很需要這方面的人才,但是這玩意兒是真的不好學,連入門基礎課都是如此……最後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的版本。