Re: [問題]即將赴美念MSCS,非CS本科生該如何作準備

看板studyabroad作者 (長得很像伊頭鬼作)時間7年前 (2017/03/30 08:56), 7年前編輯推噓29(29012)
留言41則, 32人參與, 最新討論串2/3 (看更多)
寫一篇比較通用的好了 CS留學熱潮也四五年過去 轉專業的人不計其數 有寫錄取文的人少 有寫求學心得的又更少 適應得好不好從板上無從得知 以下的心得出自於個人經驗跟想法 不一定適用所有人 但有別的想法也歡迎提出 這邊有一個命題 大家想想自己的答案 "轉專業的人把作業系統/資料結構/計算機組織/演算法弄熟 就能駕馭CS碩班課程" 我的答案是It depends 如果你選了network programming卻連TCP/IP都不知道是啥 那自然還得花時間唸一下computer networks 但你也可以除了上課以外相關的知識什麼都不知道 寫TCP socket不需要知道BGP/MPLS/IS-IS/OSPF 也能拿個A是沒問題 但是你想丟的工作是Software Engnieer, network之類的 恐怕就不符合了 1.那如果你的目標是想學得扎實一點 需要什麼樣的背景知識呢? 對於一個非CS/EE 或者離開學校很久的學生 要如何在CS program生存下來 我們從stanford MSCS的課程安排來看好了[1] Stanford 覺得學生要有以下部分課程的知識才能夠駕馭MSCS的課程 CS 103. Logic, Automata and Complexity CS 109. Probability CS 161. Algorithmic Analysis CS 107. Computer Organ & Systems CS 110. Principles of Computer Systems CS 140. Operating Systems and Systems Programming CS 143. Compilers CS 144. Introduction to Computer Networking CS 145. Introduction to Databases CS 148. Introduction to Computer Graphics and Imaging ==================以上為大學部基礎課程================= CS 210B. Software Project Experience with Corporate Partners CS 221. Artificial Intelligence: Principles and Techniques CS 227B. General Game Playing CS 243. Program Analysis and Optimizations CS 248. Interactive Computer Graphics CS 341. Project in Mining Massive Data Sets CS 346. Database System Implementation =====================以上為實作課======================= 對於一個大學是資工/電機的學生 在大學四年修完這些課的人應該也不在少數 所以台灣高等教育的課程設計概念 其實沒有跟美國差太遠 除了大家常常談到的那四個以外 還有Databases/Computer Networking/Prob./Computer Graphics/Compiler 如果想在美國找到工作 前兩個倒是值得花時間唸一下應該會有幫助 有餘力再念個compiler 不過software engineer在job description上頭要求compiler知識的 大概就是FPGA/EDA/IC design公司 就業大宗的Full stack/front-end/back-end職缺上 會比較希望你摸過SQL/NoSQL/Javascript(node.js react.js) 舉個stanford CSMS的track Mobile and Internet Computing就規定必需修這兩門課 CS140 Operating System, CS144 Computer Networking 有點像是RPG的轉職一樣 你要有這兩門課的知識 才能去修一些更進階的課 2. 要學什麼語言? 基本上"所有"的工作都會希望你是二刀流 一者是general purpose programming language 大太刀: Java/C++/Python/JavaScript 一者是scripting language 小太刀: Python/Perl/Shell scripting (對於做前後端而言 JavaScript也能算是GPPL) 只要求你只會某一種語言的工作是極少數(但實際上工作用的又是另一個故事) 3. 如何刷題? 刷題是現在面試的主流 但是完全看你面試官的心情 不問刷題問課程知識的也是一堆 不如說這才是比較健康的面試過程 而不是考這個人多會做考古題 即使在大家都知道的Google/FB SDE不問刷題的也是有 各大公司招聘的流程跟方式日新月異 會不會有哪天又回到西雅圖洗窗那種題目 兩年之後 會不會有新的面試方式沒人知道 如果說刷題涵蓋的範圍 如果說大學的課範圍是100 刷題大概是70 演算法:時間/空間複雜度 Dynamic Programming 資料結構: 結構主要用stack/queue/hash table/priority queue/heap/linked list /binary search tree/array/fenwick tree(binary indexed tree)/graph 方法 BFS/DFS/binary search/Quick Sort/heap Sort/Merge Sort/Count Sort/ Bucket Sort/backtracking 物件導向:會用this. private: public:就差不多了 資料結構會講到的紅黑樹 AVL 剪枝之類的不會碰到 值得一提的就是fenwick tree 因為307. Range Sum Query - Mutable不用fenwick tree解的話 沒什麼意義 要不就是add O(1), sum O(N) 或者顛倒過來 如果是用fenwick tree則可以達到 兩者都是O(logN) 在這邊就可以看得出一個資料結構選得好不好 差距是O(N)跟O(logN) 靠刷題來學資料結構跟演算法不夠系統性 雖然你可以邊寫邊念也能學個七七八八 還是推薦找本好書來帶你入門學的也比較扎實就是 4. 2017Fall CS入學的學生有什麼事情現在能做的? 如果你想找到2018 summer intern 請現在開始修履歷+唸唸書+刷刷題 然後打聽一下各大公司FB/Google/Microsoft/Amazon什麼時候開始招募intern 一般來說是九月丟 不要晚過十月 當然你八月就要把東西準備好了 第一時間就丟下去 一般來說因為人數眾多 所以即使安排面試 也要排上大把個月 如果在學卡到期中或者期末還要面試之類的 會相當痛苦 最理想當然是在期中前面一面 期末前拿到offer 補充:Amazon 2018 summer intern 2017/8開始招 [1] Stanford CS Graduate. (2017). Guide to the 16-17 Program Sheets. Retrieved from https://cs.stanford.edu/degrees/mscs/programsheets/psguide1617.pdf -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 24.5.244.173 ※ 文章網址: https://www.ptt.cc/bbs/studyabroad/M.1490835366.A.CBE.html

03/30 09:35, , 1F
推整理
03/30 09:35, 1F

03/30 10:04, , 2F
推喔
03/30 10:04, 2F

03/30 10:11, , 3F
推!轉職跟集龍珠的感覺好像啊
03/30 10:11, 3F

03/30 10:15, , 4F
推 其實你web(full stack)寫得超好 然後不懂資工基礎
03/30 10:15, 4F

03/30 10:15, , 5F
礎課程也是很好找工作
03/30 10:15, 5F

03/30 10:20, , 6F
03/30 10:20, 6F

03/30 11:00, , 7F
03/30 11:00, 7F

03/30 11:13, , 8F
感謝分享
03/30 11:13, 8F

03/30 11:20, , 9F
03/30 11:20, 9F

03/30 11:47, , 10F
目標四大巨頭要很拚 強者第一年就先卡位了
03/30 11:47, 10F

03/30 11:50, , 11F
03/30 11:50, 11F

03/30 12:06, , 12F
感謝分享!
03/30 12:06, 12F

03/30 12:44, , 13F
丟履歷的時間比較難說 我找的researcch intern都是一二月
03/30 12:44, 13F

03/30 12:45, , 14F
才開出來, HP career的網站我看了好幾次 以為今年沒招
03/30 12:45, 14F

03/30 12:46, , 15F
結果二月中HP LABS 才放到網頁上
03/30 12:46, 15F
嗯 這邊沒說 其實1~3月才是intern的主戰場 上頭舉的是大家比較知道的FB/google等 三月中之後應該可以感受到intern的數量少了一截 VMware二月之後就沒看過software intern缺

03/30 12:48, , 16F
好文推!!! 很完整的資訊!!!
03/30 12:48, 16F

03/30 14:07, , 17F
VMware我從12月丟到2月總共投了六七個,都是無聲卡
03/30 14:07, 17F

03/30 14:19, , 18F
推,我去年也是 2 月左右開始準備,最後在去年聖誕節前把
03/30 14:19, 18F

03/30 14:19, , 19F
offer收割完
03/30 14:19, 19F

03/30 14:19, , 20F
push push!!
03/30 14:19, 20F

03/30 14:51, , 21F
typo: hash table, linked list
03/30 14:51, 21F

03/30 14:59, , 22F
寫的超好!
03/30 14:59, 22F
※ 編輯: bluebluelan (24.5.244.173), 03/30/2017 15:18:07

03/30 19:37, , 23F
03/30 19:37, 23F

03/30 21:27, , 24F
FB的recruiter今年2月的時候就說招差不多了
03/30 21:27, 24F

03/30 21:28, , 25F
intern的部分
03/30 21:28, 25F

03/30 22:40, , 26F
我面Uber的時候有考到紅黑樹...
03/30 22:40, 26F

03/31 00:22, , 27F
謝謝bluebluelan大大的專業建議 我從中獲益良多 :)
03/31 00:22, 27F

03/31 00:35, , 28F
考紅黑樹也太硬了 誰還記得啊XDDD 該複習惹
03/31 00:35, 28F

03/31 00:58, , 29F
紅黑樹基本原理不難吧 重點是..如果叫你實作哈
03/31 00:58, 29F

03/31 00:59, , 30F
但如果考概念而已 AVL vs RB 就相對簡單很多
03/31 00:59, 30F

03/31 01:02, , 31F
03/31 01:02, 31F

03/31 06:30, , 32F
我覺得EE/CS的課大學部常常比研究所的課 更硬更難修
03/31 06:30, 32F

03/31 11:25, , 33F
藍藍大必推
03/31 11:25, 33F

03/31 16:10, , 34F
謝謝分享 推!
03/31 16:10, 34F

03/31 16:24, , 35F
推一個!
03/31 16:24, 35F

03/31 22:22, , 36F
推 以後被問可以請他們先看這篇了!
03/31 22:22, 36F

03/31 22:42, , 37F
03/31 22:42, 37F

04/01 12:31, , 38F
可惜去年此時沒先看到這篇,相見恨晚推!!轉專業必看啊
04/01 12:31, 38F

04/03 02:25, , 39F
推詳細整理 先存最愛xdddd
04/03 02:25, 39F
※ 編輯: bluebluelan (24.5.244.173), 04/04/2017 14:50:22

04/05 02:47, , 40F
這篇是不是沒講到如果是ML/CV相關的準備方式?
04/05 02:47, 40F

04/05 02:47, , 41F
好像這方面工作刷題不用多
04/05 02:47, 41F
文章代碼(AID): #1Ot5Uco- (studyabroad)
文章代碼(AID): #1Ot5Uco- (studyabroad)