Re: [問題]即將赴美念MSCS,非CS本科生該如何作準備
看板studyabroad作者bluebluelan (長得很像伊頭鬼作)時間7年前 (2017/03/30 08:56)推噓29(29推 0噓 12→)留言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
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
03/30 12:44, 13F
→
03/30 12:45, , 14F
03/30 12:45, 14F
→
03/30 12:46, , 15F
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
03/30 14:07, 17F
推
03/30 14:19, , 18F
03/30 14:19, 18F
→
03/30 14:19, , 19F
03/30 14:19, 19F
推
03/30 14:19, , 20F
03/30 14:19, 20F
→
03/30 14:51, , 21F
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
03/30 21:27, 24F
→
03/30 21:28, , 25F
03/30 21:28, 25F
推
03/30 22:40, , 26F
03/30 22:40, 26F
推
03/31 00:22, , 27F
03/31 00:22, 27F
推
03/31 00:35, , 28F
03/31 00:35, 28F
→
03/31 00:58, , 29F
03/31 00:58, 29F
→
03/31 00:59, , 30F
03/31 00:59, 30F
推
03/31 01:02, , 31F
03/31 01:02, 31F
→
03/31 06:30, , 32F
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
04/03 02:25, 39F
※ 編輯: bluebluelan (24.5.244.173), 04/04/2017 14:50:22
推
04/05 02:47, , 40F
04/05 02:47, 40F
→
04/05 02:47, , 41F
04/05 02:47, 41F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):