別猶豫了,來修CS50 吧!

文章推薦指數: 80 %
投票人數:10人

CS50 的課程名稱叫做Introduction to Computer Science,是一堂哈佛大學的通識課程,總之就是一門在介紹Computer Science 的課。

TechBridge技術共筆部落格 Menu Home About Tags Archives RSS SignIn 前言 其實我之前就已經寫過一篇文章(如海洋般的程式課程:CS50)大力稱讚過CS50,但那篇比較凌亂一點,比較像是自己的筆記。

今年再修了一次之後,依然覺得這門課很棒,決定再次跟大家分享。

CS50是什麼? CS50的課程名稱叫做IntroductiontoComputerScience,是一堂哈佛大學的通識課程,總之就是一門在介紹ComputerScience的課。

而這門課程的所有資料都有公開在網路上,也有在edx上面開課,可以跟著自己的進度來上。

除此之外,在cs50.tv也有課程的影片、逐字稿、作業等等的內容供大家自行取用。

CS50這門課是「完全免費」的,但是在edX上面你可以選擇修完課之後付錢購買「修課證明」,意思就是你有修過這門課了並且得到官方認證。

但是這個證明要不要花錢買完全是見仁見智,不買的話你還是可以免費修課。

CS50的課程會教哪些? 我列舉一下2016年秋季的課程的每一週的課程大綱: Scratch C Arrays Algorithms Memory DataStructures HTTP MachineLearning Python SQL JavaScript 每一週的課程都有大概兩小時的影片跟一份要花你超級多時間的作業,但你從它的課程大綱就可以看出來,這門課教的東西非常非常多。

若你想知道得更詳細,我貼一下我之前修的那年(2015)的每一週的更詳細的大綱: 第零週 二進位、ASCII、RGB、二分搜尋法 介紹基本程式語言:條件判斷、變數、迴圈、陣列、函式 作業:用scratch寫一個程式 第一週 開始介紹C語言,以及講解compile的觀念 介紹各種形態,像是double,float,int,bool,char,longlong... 介紹浮點數誤差與overflow 教你commandline基本操作,像是mv,ls,cd,make等等 作業:寫一個簡單的C程式(迴圈印出星星) 第二週 介紹function,string,array 以及如何利用argc,argv傳入參數 還有講到加密,像是RSA 教了commandline的Redirecting(>)還有Pipe(|) 作業:字串處理,簡單加解密實作 第三週 搜尋、排序(氣泡、插入、選擇、快排、合併)、bigO 遞迴、bit操作 GDB的使用 作業:實作O(n^2)的排序跟二分搜 第四週 再次講解遞迴 字串、指標、struct、bitmap格式 檔案處理(fprint/fopen...) malloc,記憶體分配 教你用xxd看檔案的hex 作業:給你bitmapheader的文件,處理bitmap圖片,例如說放大兩倍 第五週 深入講解記憶體與指標 資料結構:linkedlist,queue,stack,tree,BST,tries,hashmap 教你用wget抓檔案,以及如何寫Makefile 作業:實作字典樹或是hashmap 第六週 這週開始講跟網路有關的,包括:IP,IPv6,domain,nslookup,traceroute,封包,ports,dns,vpn,http,request,response 教你用chmod改檔案權限,以及curl抓網頁 作業:用C寫一個httpserver(的部份功能) 第七週 chromedevtool的使用,像是看html,request 基本html與css教學 php簡介 get/post參數介紹 sql基本教學 教你用apt-get安裝套件 作業:完成簡單的php網頁以及與資料庫溝通 第八週 示範重構程式碼,講解MVC的觀念 教基本SQL語法 有介紹到SQLInjection 作業:串GoogleMapAPI,使用jQuery跟ajax做出互動性較高的網頁 第九週 javascript語法簡介 json格式講解 DOM模型 eventhandler,事件機制 CS50值得推薦的另外一個點就是課程會不斷改進,像是我那年之後就把用C實作一個httpserver拿掉了,我猜測原因可能是這項作業太難。

還有像是以前是學PHP,現在課程教的是Python。

每一年CS50都在進步,把不適當的作業跟內容拿掉換成新的,儘管我已經修過一次,修第二次的時候依然可以學到一些新東西。

為什麼推薦這門課? 現在網路上其實已經有很多教學資源了,包括各式各樣的文章以及線上課程,可是這些課程有時候會有一個問題,那就是太零散。

這邊一點、那邊一點,你修完這個之後還要去修別的才能補齊其他知識。

還有,半路轉職的人跟資工系本科出來的工程師有一個最大的差異:ComputerScience的相關知識。

許多職業培訓班教的都只有工具,例如說RubyonRails,PHP等等,有很多學生結訓之後可以寫出一個網站,但卻完全不知道這樣為什麼可以。

所以常常會看到很多案例是培訓班出來的學生都被公司打槍,因為隨便問個很簡單的問題也回答不出來(但如果直接叫他們做網站,是做得出來的)。

而CS50這門課一次幫你補足了知識的廣度與深度。

如果你有認真修完,你會知道: 記憶體相關知識,像是stack跟heap的差別跟什麼是stackoverflow 經典排序演算法,像是bubblesort,mergesort等等 基礎資料結構,stack,queue,hashtable... 網路相關知識,像是TCP/IP,HTTP等等 除此之外呢,你也會學到怎麼用python+flask寫出一個簡單的網站,藉此學習到網站開發相關知識,例如說: cookie與session webserver database的使用 資訊安全相關知識,像是sqlinjection 總而言之,不管你之後想走的是哪個領域的工程師,這堂課對你一定很有幫助。

誰適合這門課? 我最推薦的族群是「正在上或是已經結業的培訓班學生」。

為什麼? 因為這門課的門檻真的不低。

你看他要教這麼多東西,然後我又說他不只教的廣,還教的深,學生必須要投入很多時間在上面,才能取得相對應的回報。

如果是「完全新手」,幾乎沒有任何對程式的相關知識,當然還是可以修這門課,但我覺得一定會非常非常非常累,而且挫折感應該滿重的,因為這堂課真的不簡單。

想要挑戰看看的話我也十分鼓勵,我敢保證你認真修完之後一定能學到很多東西。

對於那些已經有基礎程式知識的學生來說,這門課的門檻會稍微低一點,但前面五週都在上C,還是很有挑戰性。

之後幾週上Web相關的才會比較輕鬆一點。

我心動了,那應該怎麼開始? 最簡單的方法就是去edX上面註冊,然後根據上面給的指示開始修課,其實就跟你修其他的開放式課程一樣。

但如果你想先體驗看看,可以直接到Youtube去看課程影片,看完之後再決定要不要修課。

在這邊要提醒大家,我覺得CS50課程的精華在於作業,如果你只是想看看影片,但你大概只能學到這堂課的一半,因為另外一半都在作業裡了。

請大家務必做作業,學程式這種東西光看是不行的,一定要下去動手做才會更有感覺。

之前為了鼓勵更多人來修CS50,我有做了一系列的導讀,每一週都有一支導讀影片,主要就是聽我稍微再講一下這一週的重點以及做一點小補充。

導讀影片的話也可以到Youtube上面看。

每一次導讀完我都有把心得記錄下來,想看心得的話可以到這邊。

結論 CS50以非常生活化而且盡量簡單的方式講授艱澀的電腦科學相關知識,對我本身的教學理念以及風格影響深遠。

這門課給了我很多教學上的啟發,讓我知道原來換個方式講,可以把一件事情解釋得清楚許多。

「如海洋般的程式課程」是我之前給它取的稱號,因為它「又深又廣」。

講述的知識範圍既廣又同時兼顧了深度,真的是一門很棒的課程。

最後,再次推薦這門課給所有想要更瞭解ComputerScience的人。

關於作者: @huli野生工程師,相信分享與交流能讓世界變得更美好 #cs50 huli Follow Following 野生工程師,相信分享與交流能讓世界變得更美好 Facebook RelatedPosts 使用JavaScript處理二進位資料 TechBridge技術週刊 CS50IP(InternetProtocol) feliiiii 關於Cookie!! hoyi-23 Newsletter Subscribe Comments Submit SignIntojoininthediscussion. Edit Submit Edit Submit Reply Submit



請為這篇文章評分?