你知道在塔夫茨「碼」出未來的正確操作是什麼嗎?
全文字數:5107
閱讀時間:16分鐘
本文是iTufts專業系列的第一篇文章。
我們希望可以通過官網專業的介紹,
課程信息,教授信息,
以及學習這個專業的在校生的親身經歷
帶大家了解塔夫茨不同專業的閃光點。
這一期我們將帶領大家走近
計算機科學專業
1
學科特色
Tufts CS的獨特優勢在於它對於交叉學科的探索:人工智慧(artificial intelligence)、生物(computational biology)、認知科學(cognitive science)、自然語言處理(natural language processing)、機器學習(machine learning)等等。這些都是我們學校教授正在進行的創新研究。
當然,對於本科生的CS基礎知識,學校也同樣非常重視。因為CS專業人多,每個課人數都要100-200人,但是大部分CS課依舊會將學生分散至20-30個人的小課進行每周的強制上機實驗課(lab component),以加深對於理論知識的掌握並加以實踐。同時,每個課都會有大量的助教(以上過此課的優秀本科生和研究生/博士為主)來幫助你進行學習。若上課沒有完全理解,你即可以問老師,也可以問助教(通常助教更多更有空回答你的問題)。
課程介紹
2
在Tufts學習CS專業一共需要完成10門課,其中包含7門必修課和3門選修課。(此為Tufts文理學院CS課程要求,工程院大同小異;中文翻譯僅供參考)
其中必修課包括:
COMP15 Data Structures 數據結構
COMP15是CS專業的第一門課,涉及相當多的CS基礎數據結構和演算法,是一門很實用很重要的課程(因為這些數據結構和演算法一直都會用到)。上完後CS基本可以算是入門了。
COMP40
Machine Structure and Assembly Language Programming 機器結構和彙編語言編程
很難說你上完了以後還會不會再接觸到彙編語言(一種相當底層的編程語言),但是通過這門課,你會對於編程有進一步理解:你會理解機器的工作原理、編程原理、軟體和硬體如何交互以及高級語言例如C++, Java, Python在背後是如何運作的。
但是這門課業要求相當大,每周需要花20-30小時進行編程、理解、熟悉。需要對CS的執著和喜歡!
COMP105
Programming Languages 編程語言
COMP105的魅力在於它教會了你什麼是真正的編程語言,甚至你需要自己設計一門如Python的語言。因此你將學習如何寫語言的interpreter以及語言背後的原理。這門課有很多的證明題,也有很多的編程量。很多人會覺得這門課比COMP40更難。
COMP160 Algorithms 演算法
在這門課當中,你會深入學習諸多經典的演算法,並學會如何使用這些演算法解決問題。你會知道他們的時間複雜度、好處、壞處以及如何在合適的情況下使用正確的演算法。這會是一門相當有用、理論的數學課。
COMP170 Computation Theory 計算理論
這門課當中主要學習的是一些計算的理論。涉及的內容有:models of computation, finite automata, regular languages, turing machines等等。課程其實並不算太難。
MATH34/36/39 Calculus II 微積分II
MATH/COMP 61
Discrete Mathematics 離散數學
同時,我們也給想要學CS專業的大家推薦一些選修課(Electives僅有一門課允許在課程編號100以下)
COMP20 Web Programming
這門課會學前端的HTML5, CSS, Javascript以及一些後端的編程。學完後可以做出自己的網頁、項目。如果想了解的話也可以具體關注每學期末的項目展示。這門課的難度不大卻又非常實際有用,而且通常都是由我校CS系眾人皆知,上課超有趣的Ming Chow教授授課。所以選擇這門課基本是要靠搶的。
COMP50 Game Design
從桌游開始入手,這門課會最終涉及Unity, Maya有關的2D、3D遊戲等等。整個學期有一半的時間會在製作自己的遊戲並不斷調試:相當有趣,也適合對game design濃厚興趣的同學。
COMP116: Cyber Security
這門課會講述一些基礎的網路安全,同樣也是Ming Chow授課。上完這門課你就知道怎麼去黑別人網站,如何防護、進攻、如何保護自己隱私;如何正確地寫代碼才不會有安全漏洞。這門課由10個lab、homework assignment和一篇final paper構成。
COMP135 Machine Learning
這門課是Machine Learning的入門課。其中會涉及:kNN, decision tree, feature processing and selection, association rule, neural network, dual perception, active learning, aggregation method, collective classification, reinforcement learning等等。很多的演算法都是目前非常熱門的人工智慧、機器學習的應用的基礎:例如alpha go的演算法中就是以reinforcement learning作為基礎的。
但是這門課只會大致闡述演算法的數學原理而不會深入,同時要求數學probability的知識。一共有4個programming assignments,大致耗費時間20-30個小時,兩周完成。
學校官網推薦的選修課課程:
COMP111 Operating Systems 操作系統
COMP181 Compilers 編譯器
MATH 70 Linear Algebra 線性代數
MATH 145 Abstract Algebra 抽象代數
MATH 161 Probability 概率論
3
教授介紹
(聲明:以下教授評價為訪問人群的綜合反饋。如對我們所給予的評價有異議或補充,歡迎在留言區留言~ 另外,因我們沒有了解到上過其他教授課程的學生,在此就沒有對其他教授給予評價。如果你對別的教授有所了解,也歡迎在下方留言~)
Ming Chow
Ming Chow是Tufts的校友,他的本科和研究生都是Tufts完成的。隨後,他返回Tufts創建了自己的課程Cyber Security,隨後又開設了Web Programming。他一直都和企業和公司有著緊密的聯繫,所以他尤其喜歡幫助學生、輔導學生在CS就職方面給予建議並開始建立自己的resume和projects。
他人有點小奇怪不過很幽默,說話很耿直:如果你的resume寫得很爛他會很直截了當地指出,不過如果你很優秀當然也會不遺餘力地誇獎並幫助你。
我校非常智慧、特別的教授。就是他本人設計了COMP105和40變態難度的課程,但是他本人很親切,也對細節非常重視——如果你有問題上課卻不敢舉手提出,可以寫一張小卡片,他下課前會解答。長發飄逸,一年四季都是涼鞋上課。(可以去他的個人主頁了解更多有趣小故事)
Norman Ramsey
Laney Strange
迷之熱愛超級英雄的老師,雖然看起來有點胖胖的但是卻參加過波士頓的馬拉松!上課節奏比較慢,非常適合剛學CS的同學(她也確實主要教授入門的CS課程),但是如果已經有基礎的同學可能會略顯無聊。
上課講的很清楚,會強調比較有用的東西。她的專業領域是computational biology。她非常關心她的學生,也會很用心輔導那些對她專業領域感興趣的同學。最近上課還經常拿童話故事作為比喻講課,很有意思。
Lenore Cowen
Noah Mendelsohn
Mendelsohn教授年輕時求學於MIT和Stanford,之後在IBM工作數十年,退休前是IBM的傑出工程師(Distinguished Engineer)。 他屬於Tufts計算機系的Professor of the Practice」,是學校從業界請來專業人士,目的在於讓學生更好的了解產業界的前沿工作。Mendelsohn教授授課內容包括Machine Structure and Assembly Language Programming 以及Internet-Scale Distributed systems. Mendelsohn教授知識淵博、教學認真負責,經常因為解答學生問題在Halligan Hall待到很晚,是計算機系最受歡迎的教授之一。
Megan Monroe
我校剛從University of Maryland轉過來的教授,
專業領域是Data Visualization。
Diane Souvaine
講課很細緻,會在課上就確保每一個同學都理解課程內容。
Roney Khardon
上課講法有點模糊,office hour很好。
Mark Sheldon
非常熱情的教授,網上問問題回復特別快,但是上課順序非常混亂。
(感謝劉玥琳Lily,湯益榕Wayne提供的信息)
畢業去向
4
我們根據tufts官網信息選取了2014-2016三屆CS專業的畢業生,共195人,整理出了他們的畢業後的去向。
前往地區:
馬塞諸塞州
加州
紐約
87人
38人
14人
前往公司(部分):
Microsoft
19人
11人
Hubspot
6人
Kayak
3人
IBM
3人
Amazon
2人
Apple
2人
2人
1人
Uber
1人
完整畢業生去向google doc
在讀專業學生採訪
孫睿(Junior CS+IR)
田學長(Sophomore CS)
神秘學姐 ( Junior CS+Applied Maths)
Q: 為什麼會選擇在tufts讀cs專業?
孫睿:其實我是沖著塔夫茨的國際關係專業來的, 直到大一開學,我都沒有想過讀 cs 專業。不過因為之前考過 cs 的 AP,大一選課的時候也就選一門計算機入門課看看。上了兩個月覺得哎,寫代碼也挺好玩的嘛!於是就漸漸在考慮讀 cs 專業的事情了。但是又捨不得放棄 IR,所以最後讀的是 CS 和 IR 兩個專業。
不過大家經常說當時被騙了,其實到後期計算機課全是數學課,哈哈。不過也不盡然,只是說,寫代碼只是一種工具,而「計算機科學」這個專業要更多地學習其背後的系統、邏輯、數學原理等等內容。所以單純因為喜歡「打碼」而選擇 CS 專業可能不是最好的選擇。不過反正我還是入坑了。
神秘學姐:我在pre-orientation的時候參加了一個叫FOCUS (Freshman Orientation Community Service)的新生入學義工類活動。當時我小組的組長是一個大四的學生,他的專業就是cs。當時我對數學挺感興趣的,跟他聊天的時候,他就推薦我嘗試一下cs。大一的時候,我嘗試上了comp15,感覺很有意思,也就繼續堅持了下來。
田學長:我原本是想來tufts學化工的,但最終卻選擇了cs。我在大一上學期上了在tufts的第一節自然科學課(chem11)以後發現我自己對於做實驗、寫實驗報告這些事情並不是很感興趣,覺得這好像不是我想要的。當時,我就有一點動搖。在大一下學期,我覺得現在的大形勢下什麼都跟科技有關係,不管哪個行業一些基礎的computer skills都是需要的,所以選了一門編程課。上完之後發現我對這門課非常感興趣。 在這節課上我所體驗到的邏輯思維和小組合作讓我覺得以後走這條路我會很開心。
Q: Tufts和其他的學校相比,我們的cs專業有什麼優勢?
田學長:客觀來說,tufts工程院非常小,設施也比較陳舊,而且我們學校的課程提供的課程相對於別的cs大校來說也比較少。但好在我們身處波士頓附近,the greater Boston area,那機會肯定是比較多的。包括我們也可以去BU選課,利用他們high level cs選修課的多樣性。
另外,Tufts帶來的優勢就是系內部人員很熟,哪個professor教什麼課帶什麼lab大家基本心裡都有數,甚至是上comp40這種的百人大課(對於我們來說一百個人已經非常非常非常多了),你的professor還會記住你是誰,你怎麼寫的你的project,你提出過什麼問題。像我有個professor特別好。人家已經是七十幾歲的人了,就為了讓我們按時交作業,有任何問題可以隨時找他,在作業due之前他甚至會在lab里呆到十二點一點。我覺得在我們cs系裡,「the professors truly care about his or her students」,給你一種很暖心的感覺。
Q:學習cs的課業量大概是怎樣的?
田學長:從開學到現在,除非我人不在波士頓,基本每天我都會出現在halligan,時間長短的話可能從兩個小時到八個小時不等。也有過幾次就是下午一下課2:45過去halligan,一直呆到凌晨一兩點鐘的經歷。(笑)
神秘學姐:我當時上comp 11的時候,基本上可以說整天就沉浸在打碼里,但是後來上到comp 40的時候,興趣有點減退, 慢慢的就沒有那麼優先打碼。除了作業以外,我平時不怎麼會去打碼。
Q: 學習cs讓你掌握了什麼樣的知識或是能力?在cs中學到的什麼知識或是能力對你非常有啟發/讓你很有成就感?
孫睿:就像之前說的,我感覺計算機科學更多地是學習「自動化計算」這一行為背後的系統和邏輯,電腦、代碼都只是實現這一功能的工具,所以在某種程度上它與「邏輯學」是有一些相似的。例如我們的必修課數據結構、演算法、計算原理,我認為本質都是邏輯和數學(數學也是一種邏輯)。
不過,寫代碼當然還是很爽的,宛如嗑藥。一方面,光從「寫代碼」這個技能來說,它是很開放的,所有的工具箱、技巧都可以在網上找到,只是你檢索能力夠不夠強的問題。另一方面,這也是一個很大的平台,你可以用「寫代碼」這件事去創造很多有意思的東西,比如我暑假寫了一個每天隨機幫自己調衣服的程序,這樣就不用自己每天思考今天要穿什麼了,哈哈。這也很有趣吧。
神秘學姐:我覺得最大的收穫應該是the skill to build something from scratch。 cs的作業有很多一個個的小問題。在完成這些小問題的基礎上,我們需要去組成一個大的project。我覺得這個是一個挺啟發人的practice,鍛煉了我以小見大的能力。CS有點像拼圖, 把信息排列,然後組合。
Q:曾經有沒有質疑過自己為什麼會選擇打碼?
神秘學姐:當然有!大二上學期的時候,我上了comp 40,但當第一個作業結果很不理想的時候,我感覺自己超級崩潰,後來就狠心地drop了這門課。但是我大二下學期的時候又重新上了comp 40,當時這門課還是很難,第一次作業也非常的崩。我打電話給父母商量要不要drop cs這個專業。但父母告訴我決定權在於自己。幸好,最後我還是咬牙堅持了下來。
(嗯嗯是的,我感覺每個人都多多少少質疑過自己的專業和方向吧,有時候我覺得最致命的是,不知道自己為什麼選擇這個專業。)
田學長:在debug到想摔電腦的時候……(笑)我覺得相對來講一個比較好的消息是我還沒有很認真的去質疑過,因為我也不是心血來潮說要轉專業,我問過我的professor,我兩個department的professor和dean,我們engineering school的dean和advisor,包括我的一些學長學姐叔叔阿姨從事相關行業的……那一兩個月我真的找了很多很多人最後才轉,因為ChemE的話我也是從高中開始學了五年化學的,相當於現在正常本科生大二上、大二下的化學我都學過了,當時的方向是非常明確的。但我覺得這種東西不知道說是緣分還是註定吧,就是到了一定程度以後就覺得自己真的是不適合做這個。所以因為自己不是說異想天開或者三分鐘熱度選了cs,我現在雖然有時候會比較frustrated,但真正質疑自己選這個專業的是沒有過的。
Q: 你對碼農/程序猿這一刻板印象有什麼看法嗎?
孫睿:「刻板印象」這東西大部分時候都是合理的,這個現象如果不是真的經常出現,大家又怎麼會形成這種刻板印象呢。不過,我認為很大程度上「格子襯衫、宅、不修邊幅」這類形象在國內的吻合程度比較高。我在這裡認識的「碼農」都是很注重生活質量、健身、修養得體的年輕人,不過這也算是刻板印象的一種吧,哈哈。
碼農常說自己是在「搬磚」,確實,如果僅僅是在一個公司里每天寫重複的代碼,其本質和搬磚沒有什麼區別,只不過建築工人用手,碼農用腦子罷了。可能氣質上確實會因此有些相似吧(滑稽)。
田學長:這個其實我們無所謂呀……不要說外人怎麼說了,我們自己也自稱代碼狗。其實我們自己也會說碼農分成各種種類,最低端的碼農在爭論什麼編程語言比較好,中端的碼農在爭論在哪個公司的offer比較好,高端的碼農在爭論帶女朋友去哪兒玩兒比較好……什麼碼農鄙視鏈是有老婆的碼農,有女朋友的碼農,沒女朋友的碼農,被女朋友拋棄的碼農,被女程序員拋棄的碼農……其實這種東西自黑的話我們比任何人黑的都起勁,因為從某種程度上來說這就是我們生活中的一個調劑了。
Q:在學習CS專業的同時,還學習另一個專業有什麼感受嗎?
孫睿:IR 和 CS 是兩個很不一樣的專業,基本上沒有太大的聯繫,我選擇這兩個專業也純屬意外。CS 學習的主要內容比較抽象,比較「artificial」;而 IR 關注的問題是實實在在的這個世界。我的感覺是一個往抽象的世界走,一個往世俗的世界走,比較互補,也挺有意思的。最大的好處可能是:打碼打累了可以看 reading,reading 看累了可以打碼吧。
神秘學姐:我的第二個專業是應用數學。其實我覺得這個專業不是很花時間,至少我到現在為止不是很花時間。相較而言,我大部分的時間都花在了cs上。
Q:鑒於越來越多人已經開始選擇cs這個專業,你覺得未來的競爭會不會更激烈?
田學長:之前我和一個朋友聊天聊到這個問題,他給了我一個很有趣的看法。他說之前美國不是有淘金熱嗎,那些往西部走去淘金的人里沒有幾個真正富起來的,反倒是當時賣鎚子、賣榔頭、買牛仔褲的那個李維斯富了。現在cs的這個浪潮有人覺得是未來的一個終極趨勢,有人覺得是現在暫時的泡沫,但不管怎麼樣這個市場現在說飽和是不對的,因為對於很多start up和很多tech company來說他們現在是缺人的。但我們因為以一般的視角去看是看不到這個職位的缺口的,我們只能看到越來越多的人在學cs,可能會給你一種假象說這個市場現在飽和了你找不到工作了,但實際上cs要說吃香還是最吃香的。所以現在對於cs來說才剛剛起步,不存在什麼飽和不飽和的說法。現在開始的話,應該是趕上了一個正在崛起的,一個將會非常繁榮的科技時代。我是這麼覺得的。
特別感謝接受採訪的三位學長學姐
以及劉玥琳Lily,湯益榕Wayne兩位為我們提供信息
如果你對Tufts的CS專業有其他問題或想看更多Tufts的專業介紹,
歡迎在下方留言~
如果你想加入我們,歡迎在後台留言
採訪|Ivy Cheng Namu
信息搜集整理|Simon
編輯&排版|二娃


TAG:iTufts |