2016年12月15日 星期四

如何自學Python?六大網路自學coding線上資源


很多領域都需要coding技能,很多人想要轉領域,大家都有個問題:初學者如何從零開始自學coding。我的學生說「第一個程式語言, 選簡單易上手的(ex: python),因為這樣才能培養寫程式的興趣」因此我又詢問了CS領域的同學的意見,經同意後整理出來大家分享的coding自學資源,給大家參考。網頁內有圖文連結,若有需求,建議儲存本文


Bamboo: 雖然不是coding大神,但分享一些自己的心得:

1. Codecademy


以互動式教學方式從基礎開始,適合入門者學習,對於有程式底子的人可能會覺得步調過慢,但不失為學習一個新語言的管道,重點是完全免費,付費升級後可實作課程裡的project。


2. Code School


同樣是互動式教學方式,課程選擇更多元,並會依據你想學習的能力建議學習課程,缺點是通常只有前幾堂入門課是免費的,愈進階的課程需要付費,所以後來我使用率也不高。


3. Coursera

個人使用頻率最高的 MOOC,比較少針對某種語言開課,適合已有底子想增進個人實力時使用,課程有免費也有付費的,重點是非常多名校教授親自授課,例如 Algorithms (Princeton) 、Machine Learning (Stanford) 等熱門領域學習,這兩門我都有修過,強力推薦!

4. LeetCode
如果目標是 Google、Facebook 的工作,都會把上面的題庫刷完,據我了解不管你是申請什麼職缺,都會考演算法白板題,即使答對也會更進一步問你是否能優化,所以上面的題型是最佳面試練習題。

5. Stack Overflow

如果你有程式開發經驗,只要 google 你遇到的問題,大約 90% 的機會答案會從這網站找到。

突然想到,再補充一點 (雖然可能大家已經知道)

6. GitHub
Git 是好物,個人認為是軟體開發者應該具有的基本技能,GitHub是免費的,不儘可以做版本控制,還可以記錄自己的開發心路歷程,也方便分享給其他人,趕快申請一個吧!



Jacky Tung:
會用github之前, 我覺得要先熟悉linux相關指令跟git基本概念比較好喔
有沒有突然不想跨組的(燦笑

線上資源課程 個人最喜歡 Udacity (https://www.udacity.com/)
幾乎都是跟CS相關的, 互動性高, 資源也很豐富
每個觀念都是幾分鐘的影片 複習起來很方便


David Zheng:
學Python的話, 想推薦一本書Automate the Boring Stuff with Python for Beginner, Amazon 評價4.6星

這本書的目標跟書名一樣, 要讓門外漢學完Python之後可以馬上做出幫助日常工作的自動化工具
從程式的基本架構學完, 就開始好幾章的實作範例, 包括整理word, excel文檔, 到簡單的網路爬蟲
我覺得蠻適合初學者, 因為讀起來簡單又可以在實作中找到成就感
作者還很佛心, 把他的電子書還有影片都免費放網站上, 搜尋一下就可找到

對了同一個作者還有出幾本教初學者用Python做遊戲的, 適合喜歡不那麼正經學習的人XD


Fraser Lai
Automate the Boring Stuff with Python for Beginner, Amazon 其實有CC,所以可以在下面找到內容!
https://automatetheboringstuff.com/#toc



Yun
要刷leetcode之前先學演算法
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/

https://github.com/prakhar1989/awesome-courses
這個repo有超多東西,要什麼有什麼

https://www.google.com/about/careers/students/guide-to-technical-development.html
非本科沒概念,先跟這個guide就對了


Liu Yi-Lin
我聽好幾個朋友的分享是看網路開源課程,coursera有基礎到進階的課程,有些組織也會有免費研討課程可以參加。練coding都是刷題(幾乎都刷leetcode)吧。也可以寫寫看台大資工的計程作業。
我自己是n年前用網路上提供的免費manual練R,但我學R純粹是為了跑統計資料而已,沒特別用R在coding。


Shih Haw Yeh
python 的話我推薦 treehouse Kenneth Love的, 教得非常清晰明白淺顯易懂。 code school 強在 javascript 以及 ruby / on rails的課程。

如果真的是想以工程為職業的唯一推薦 the odin project.
BTW 中文目前的品質還有很大的差距,有心想學的建議還是找原文的source。



Kristine Chuang
還有台灣新創codementor :)



Champion Fu

剛好最近有人提到要怎麼入門學CS。以下是魯蛇小弟我的建議。

如果你真的只想知道code是什麼樣子,可以去Codecademy, Code school之類的網站。不過這就像是剛打籃球的人,就知道把球投入籃筐裡面這樣。

但是如果真的想學好code,我建議要把data structure, algorithm, 線性代數學好。至於OS,計算機組織之類的還不急迫就先不用學,應該是也用不太到。

然而有人會說那去coursera學,是沒錯啦!但是我更建議去學校,例如stanford,berkeley看有哪些老師開課,通常在他們的personnal page都會有他們在他們自己學校教的影片。上了幾堂國外coursera的課我覺得普遍來講還是簡單了些,好的課程跟難的課程真的要自己稍微挑選過。那就不如直接上全世界最好的課程。像這個連結 http://mirlab.org/jang/courses/dsa/schedule.asp 是台大資料結構與演算法的課程網,把他學完跟作業都自己寫完,就很猛了。

這就像是學會打球後,要怎麼學V cut跟下擺球,上擺球一樣。
學完這個後再去看看你想進修哪些課程例如最夯的ML, DL, Data mining, iOS,我的建議也是直接找學校的老師的personnal page直接看他們在課堂教什麼。

至於要學什麼語言我覺得都可以,但是請學物件導向的語言。


Arbit Chen

通常剛學git(version control tool)時 我會都會叫人去玩一下這個遊戲(http://learngitbranching.js.org/) 裡面有把git常用的指令walk through過一次 這樣學起來比較快


智程梁

台灣有很多免費公開的技術社群,業界的高手新手都在這邊交流哦。有空可以跑跑外面的黑客松,觀察人們怎麼用軟體協作解決問題。我是 2013 左右認真學程式,學的方法和清單上差不多,加上這裡提的,目前是職業工程師。 https://www.facebook.com/Tw.R.User/?fref=ts


Meng-Ju Leu (Bloomberg工程師)

等一下去 Discovery Day 才知道,因為我也是初學者
BBG 80% 以上的專案都是用 c++ 寫的,所以對 intern 而言:
1. 基本的 c++ 知識(encapsulation, inheritance, polymorphism...etc)
2. OOD (object oriented design) 的技巧
3. 基礎演算法相關知識(sorting, search, graph, network...)
4. 資料結構(array, linked list, tree, hash...)
大概是這些,我有趁現在寒假看 Udacity 自學 web development ( https://classroom.udacity.com/courses/cs253 ) 和讀一些 design pattern 的書。
總而言之,就是要不斷學習新知識XD
一點淺見


盧元駿

其實大家講得很完整了,我再補充一些吧.
.
Java:
我是從Java開始學的,推薦大家可以從Head first Java (深入淺出Java)開始,這本書淺顯易懂,就算是寫過一陣子Java的回去看應該也會有點收獲.或是可以觀看良葛格學習筆記: http://openhome.cc/Gossip/
.
然後根據前輩們的說法,我補上三個覺得不錯的線上課程來源:
1. 計算機結構(交大黃婷婷老師): https://www.youtube.com/playlist?list=PLS0SUwlYe8cxMiFW_PiaBu53nOAXl3dxS
.
2. 線性代數(MIT): https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8
.
3. 機器學習(台大林軒田老師): https://www.youtube.com/user/hsuantien/playlists
.
如果想學linux,從入門到進階都可以看鳥哥的私房菜: http://linux.vbird.org/
.
對電腦底層架構有興趣的話可以考慮去Nand2Tetris自己建立自己的電腦: http://www.nand2tetris.org/
.
最後,如果你寫了一段時間的code,對於物件導向程式設計(OOP)有點興趣的話,可以考慮學一點設計模式(Design Pattern),推薦入門用書:深入淺出設計模式(Head First Design Patterns)

這一篇也可以看看
https://www.ptt.cc/bbs/Soft_Job/M.1453137664.A.52D.html


--
以上整理,歡迎大家補充資源在本文的留言版或 Mason GRE 臉書社團本文

#經原po同意分享
#歡迎轉錄
#MasonGRE2016高分人數全台北第一