2023/07/30

贊助上課費用的學習平台,還可以拿到免費哈佛 CS50 課程證書?


我的 Harvard University CS50 之通過證書!


繼上次這一篇 還在考慮轉職工程師要上哪間學校? 這裡推薦你免費的學習資源、書籍與素材,有幾個平台想特別介紹一下,特別是不確定自己想上什麼課程想要試聽的、或是需要資金贊助的、或是想要更多不同課程的。


這邊會提到 Coursera、Edx、還有些課程在這些平台上沒有,但在學校網站上有提供的、上完 Harvard University CS50 的筆記和心得,以及拿到 Harvard University CS50 免費課程證照的方式。






一、Coursera

Coursera 相信大家都不陌生,但今天想拿出來講,是因為我後來才知道原來有好多功能自己先前不知道,知道後覺得好實用,想推廣給也還不知道的人。

但還是稍微簡單介紹一下,Coursera 是由 Standford 的資工教授 Andrew Ng 和 Daphne Koller 聯合建立的一個線上學習平台,包含課程很廣泛,有數據科學、商務、計算機科學、個人發展、語言學習、藝術與人文等,又分為付費和非付費的課程

並與多家知名大學如 Yale, Pennsylvania, Princeton, Standford University 等推出學位課程,不需要實際到大學上課、也不用繳昂貴的學費就可以取得這些學位的證書。

也與多家知名公司合作如 Google, Meta 等,皆可在網路上相關課程並獲得證書。



1.1 Audit 旁聽功能 - 課程免費證照要錢

通常付費課程旁邊都會顯示 enroll to start your 7-day full access trial,之前都覺得七天試聽好短好趕,後來才知道其實有一個旁聽功能,不用 enroll 就可觀看整個課程。

拿這門課 Google Data Analytics Professional Certificate 舉例,不是點選整個課程那個 enroll 的藍色按鈕,而是點選下排的 courses。





然後假設點選第一門課 Foundation: Data, Data, Everywhere 




進來這個課程後,就可以點選圖中的藍色 enroll 按鈕




這時候彈出的視窗就會顯示很下面很小的 audit 旁聽的按鈕,這時候按下去你就可以不受七天限制的旁聽啦!

但是如果要旁聽每門課都要這樣操作喔,不過實際實行起來很快,不會花太多時間。




但這個缺點是,選擇旁聽的話是不能參與課程中的專業考試和作業環節,所以也不能取得證照。如果你只是為了獲取知識可能沒什麼問題,但有時候可能證照可以為履歷加分,或是你真的很想要證照證明那就要花點錢了。

這時候如果你手頭充裕可以選擇付費上課 (每個月大致 1,500 台幣,上越快付越少;比如一個月就上完那就只要付 1,500 台幣,兩個月上完就是要付 3,000 台幣),或是選擇接下來要介紹的 financial aid。
                                                                                                                                                                                  
                                                                                                                                         


1.2 Financial Aid 財務補助 - 課程免費證照免費

可以看到全部課程的首頁在藍色 enroll 按鈕下方有個小小的 financial aid available 


 
                                                            
點進去每堂課都可以申請補助,當然也是每堂課都要個別申請。




點選 continue to the application。



這時候開始填寫相關資料,reason you applied for aid 勢必要好好寫,
畢竟是要交給對方審核為什麼要補助你上課。




還有 how will your selected course help with your goal?



每堂課程的 financial aid 都要這樣個別申請
但 reason you applied for aid 和 how will your selected course help with your goal 每堂課都可以填一樣,我試過全部都補助沒問題。



最後填寫完後送出申請,大概要等 10 ~ 15 天左右。




成功通過補助!



然後就可以免付費上完課程和免費拿到證書囉~
但是要在申請成功的 6 個月內上完課程,不然時間過了之後就還是要付費的。



另外這個課程是我沒申請補助拼七天內上完的,也是一種方式,但不推薦嘗試,因為很累。

一直對醫學方面很有興趣,之前買了法醫學、法醫鑑識與昆蟲、毒物學書,突然發現很嚮往的 Johns Hopking university 有開 cancer biology,忍不住就報名上課了。
本來預計念完這門要來上藥物學,現在上完課和考完試的感想是我想休息了,好多專有名詞好多分類考試好多要鑑定現在的病人需要做什麼檢查或治療,累,不過主要還是時間安排上太密集了。








1.3 Master Degree - 課程要錢證照要錢

除了 certificate 還可以申請線上 master degree,都是經由大學認證的,其中不乏知名學校如 University of London。

不過這就沒有這麼容易了,除了要繳學費外,對於英文成績是有要求的;同時報名時間也有限制,所以有興趣的人可以先至網站上查詢,若有需要花時間準備的資料可以趁開始報名前趕快準備。

學費補助倒是可以至學校官網上查看是否符合條件,還蠻多元化的。







二、Edx


Edx 跟 Coursera 很像,但我沒有實際用過,只是比較起來 Standford University 和 Edx 合作的課程比較多,畢竟是 MIT 和 Standford 創建的大規模在線課堂平台。

不少免費課程! 像是 CS50's Introduction to Programming with Python, CS50's Introduction to Cybersecurity, CS50's Introduction to Artificial Intelligence with Python 等等;但是比起 Coursera 證照費較貴。

然後有些免費課程是不提供證照申請的。








三、各學校自己提供的線上課程

有鑑於覺得這些平台提供的特定大學的課程也太少,於是就直接搜尋校名 + online courses,結果發現有些學校自己提供的課程其實很多,如 Standford online 還有 Harvard online course

不過如果像是在 Standford 線上課程上查 statistical learning 這門課程,看到下面有個顯示 Edx 的,打開後按 enroll 還是會導到 Edx 的頁面,上完課程後付約台幣 4,600 申請證書。




而證書會長類似這樣




這邊拿 Standford 舉例,線上免費課程很多也很豐富,這幾門課在 Standford 線上課程是免費且可以申請 Stanford University transcript。

如果你對其他學校的課程有興趣,也可以去該校網站查查看有沒有提供線上課程。






那其實 Standford online,大部份的免費課程都沒有證照可以申請,如果願意付錢的話有 這幾種證書 可以篩選 :



而證照從輕鬆到困難程度依序為 : 

Statement of  Participation Document (參與聲明文件)
參與少於 20 小時課程且不需被評估 (如專案或結業作業提交、論文、演講、考試或其他要求)

Record of Completion (完成紀錄)
成功完成個別課程時,將會獲得完成紀錄。



Certificate of Completion (結業證書)
成功完成需要至少 20 個小時的課程作業,以及學校制定的其他相關標準的課程或項目時,將獲得結業證書。



Certificate of Achievement (成就證書獎勵證書)
當成功完成由學校規定的 36 小時至 150 小時課程,學習成果評估 (如專案或結業作業提交、論文、演講、考試或其他要求),以及其他相關標準,您將獲得成就證書。





Professional Certificate (專業證書)
當成功完成至少 150 小時課程、掌握嚴謹的課程的內容且經過程度評估、參與課堂參和學校制定的其他標準的課程時,將獲得專業證書。




Academic Credit and Degree Courses (學分和學位課程)
成功完成課程後,將獲得斯坦福大學的學分,該學分可用於獲得 Standford 大學或研究生學位。




四、Harvard CS50


前面提到 Harvard online course,但我比較想推薦他們的 CS50。

CS50x 其實就是比較廣為人知的 CS50,是 Harvard 的一門介紹 computer science 的課程,從開始解問題,如何解決問題,到如何 debug;包括使用 Scratch, C, Python, SQL, JavaScript 等,介紹 algorithms 和 data structures。

很久以前在要轉職工程師前就久聞過 CS50 大名,不但可線上免費觀看影片且內容豐富紮實,但那時候我看了很快就放棄了,不是因為老師的問題,也不是因為英文的問題,而是我基礎太弱實在聽不懂。

現在看倒覺得是補足我非本科的 CS 相關知識,個人推薦大概在轉職 1~2 年看,或是看到懂的快轉;因為蠻多東西都是我後來工作時才摸索到的,但這堂課先會介紹到。

如果真的不想看影片,有整理非常非常非常精美的筆記,提供課堂中使用的 source code,投影片、audio 等等,實在太佛心了。

每堂課都會有作業,但不用自行設定編譯器,CS50 有提供線上架好環境的 VS Code,而且可以跑 style check,run tests 跟最後 submit。


根據 CS50 FAQs,完成所有作業且分數達到 70 %以上即可申請免費證書。

後面在申請證書時可能會有點小困惑,因為會被要求建立一個 edX 帳戶,但這只是一個允許提交作業的步驟,是完全不需經過 edX 購買證書的。




在 CS50x Gradebook 上可以看到繳交作業的進度,也可以看到實際上拿到的分數。


而分數計算分為是否通過測試和是否通過排版測試。

Your overall problem score is weighted 75% for correctness and 25% for style. In order to receive the green tick indicating completion, your overall score must be 70% or higher. As an example, if your check50 score is 7/8 and your style score is 0.95, your overall score will be (7/8 * 0.75) + (0.95 * 0.25) = 89%.



像是下圖是顯示我這幾項作業,通過所有測試和樣式檢查,所以得分是 100%;
第一次繳交作業時沒有通過也沒關係,可以多次嘗試。


底下稍微介紹每週在上什麼和一些心得,總共花我約 80 小時。




4.1 Week 0 Scratch


課程長度 2 小時 09 分,兩份作業。

從生活常見的 unary,到解釋電腦能讀懂的 binary,再講到那 ASCII 和 unicode 又是什麼,我們常用的 emoji 背後原理,接著是 RGB,圖像影片呈現。

用電話簿介紹 binary search,帶到 pseudocode,稍微介紹一下 algorithms 對於提升效能幫助。

Scratch 是 MIT 開發的一種圖形化開發平台,會有份作業要做,得說會寫程式後再用 Scratch 覺得很辛苦,不過在下堂課會搭配 C 做解釋,對入門者來說是相當不錯的方式。 



4.2 Week 1 C


課程長度 2 小時 29 分,四份作業。

從這周到 week 5 都是用 C 做為教學語言介紹了這門課使用的 compiler Visual Studio Code,用這段 print hello world 介紹了 :
  • 為什麼要 include <stdio.h>
  • 為什麼是 stdio
  • 拿掉 include <stdio.h>
  • 教的時候不小心出各種錯,先不執行讓聽眾嘗試想問題在哪
  • 教的時候不小心出各種錯,執行後讓聽眾觀看各種錯誤訊息,學習如何自行 debug


用上堂課介紹的 Scratch 對照到實際程式碼,有使用過 Scratch 的話會有印象橘色框是流程控制正好對到 for loop,而紫色是對話框,對照到程式的印出字串


也用例子介紹了寫程式要講求正確性,程式設計和排版的重要性。

介紹了常用的 command line,如 cd, cp, ls, mkdir, mv, rm 和 rmdir,都是工作上常用到的指令。

還有講到因為 type 所設定的 bits 不同,以至於有 integer overflow, float-point imprecision 等問題,也提到相關的案例如當年的千禧蟲,跟現在用 32 bits 在 2038 年時會發生的問題。





4.3 Week 2 Arrays


課程長度 2 小時 24 分,三份作業。

解釋 Compiling 其實是包含 :
  • Preprocessing : 將程式中引入的 library 複製到你的程式中
  • Compiling : 將程式轉換為 assembly  code
  • Assembling : 編譯器將 assembly  code 轉換為電腦能讀懂的 binary machine code,包括 library 中的程式
  • Linking :  將全部程式與你的程式合併,最終輸出可執行的文件

解釋 debug 的方式包括 :
  • 印出來,如 printf
  • 使用 debugger 工具
  • 使用黃色小鴨 / 找人解釋 

介紹各種型別所占用的 bits 、差異和用法,並搭配在電腦的記憶體上會是怎麼呈現;詳細解釋 array 和 string 用法與相關性。





4.4 Week 3 Algorithms


課程長度 2 小時 01 分,三份作業。

用視覺化的方式介紹 binary search 和一般單純從左找到右的方式、跟 sort 相關的演算法與其  running time;如果對於理論理解有點困難,不妨嘗試觀賞看看這種用 "實際" 呈現排序演算法的方式。




Selection sort : 假設總數為 n,每一次輪巡過 n 個數字,找出最小的數字後再和第一個數字做交換。

而 running time 計算,(n-1)+(n-2)+(n-3)+ ... + 1  n^2/2 - n/2  n^2,故為 O(n^2)。


Bubble sort : 假設總數為 n,先比較頭兩個數字,若右側數字比左側數字小,則進行交換,依序類推。


而 running time 計算,(n-1)*(n-1)  n^2 - 2n +1  n^2,故為 O(n^2)。


Merge sort : 假設總數為 n,先分別 sort 左右側後 merge,merge 的方式是拿出左右側頭一個數據比較,再存到一個新 array 裡,以此類推。
而 running time 計算是為 O(n log(n))。





4.5 Week 4 Memory


課程長度 2 小時 25 分,三份作業。

這周的課程最主要在介紹 memory 存儲相關;hexadecimal 如何計算的,以及跟 binary 的差別。

介紹 pointers (指標) 是一種可以儲存 memory address 的變數,使用 dereference 運算子 * 來提取指標儲存的位址中之資料,使用 address-of operator 運算子 & 來取得指標指向的變數之地址。

而下圖最後 print 出來會是 0x7fff84f2ff0c。


在 C 比較字串的方式,和比較其他 integer, float, double, long 等型別不同,還有在 C交換時會遇到的問題。

順帶介紹到 malloc, free,用 valgrind 指令測試是否有記憶體相關問題





4.6 Week 5 Data Structures


課程長度 2 小時 16 分,兩份作業。

這周主要在介紹 data structures,包括 queue, stack, linked list, binary search tree, hash 和 tries 及如何用 C 實作,實作部份程式太多在此不贅述。

個人感覺是這堂課對於初學者比較不友善一點,講得比較快,沒有先備知識的話可能會需要多看幾次




4.7 Week 6 Python


課程長度 2 小時 15 分,六份作業。

運用了前幾周學 Scratch 和寫 C 的作業相比,介紹同樣的狀況使用 high-level language python 可以如何寫的更有效率,不過這也是花費人工時間和電腦運行時間的 trade-off。

python 也不需要管理記憶體、也不用使用 pointer,在很多方面比起使用 C 會更直覺;不過對於寫習慣 JS 和 PHP 的我來說,在語法方面我是狂打錯。




4.8 Week 7 SQL


課程長度 2 小時 20 分,三份作業。

接續上一堂課程介紹如何引入 csv 檔案到 Python 裡並進行操作,還有介紹如何在 Python 裡使用 SQL。



介紹了 relational databases,indexes 和 SELECT, WHERE, LIKE 等語法,最後不免俗的講解了 SQL injection。

算是蠻好上手基本的介紹。


必須講一下這堂課有個作業 Fiftyville 超有趣,要你利用 SQL 各種指令找出小偷是誰、要逃去哪個城市、幫兇是誰。比如先從 crime_scene_reports 找出當時竊盜案發生時相關證人的證詞,再藉由證詞去查如當時曾停在店裡的車牌號碼、竊賊跟誰通過話、有誰在某條街上領過錢等,幾乎每個 table 都需要查過一遍,有必要就需要進行 join 比對,What a genius who designed this homework!






4.9 Week 8 HTML, CSS, JavaScript


課程長度 2 小時 39 分,兩份作業。

主要介紹 TCP/IP, DNS, 主要幾種常見的 HTTP code 代表什麼意思,還有 HTML, CSS, framework, JavaScript,也算是蠻好上手基本的介紹。





4.10 Week 9 Flask


課程長度 2 小時 20 分,兩份作業。

介紹可和 Python 配合使用的 library - Flask,包括如何驗證表單資料、送出資料跟打API 取得資料、設計和建立表格、Session 的使用。




4.11 Final Project

最後的最後還要繳交一份 final project,不限定形式,可以是網站、遊戲、Google 套件等,只要有用到課程中的觀念或技術即可;我是基於之前的互動式履歷網站再進行修正。

主要是想突破之前的傳統履歷網站,只是單純呈現了工作經驗、學歷等,因為之前已經寫過兩版類似的網站,開始覺得有點無聊。

所以自己設計一款互動式履歷網站。背景是我的書桌,上面放了我拍的照片、鍵盤、書、咖波等。桌上手機是可以點進去選擇對話,中間的電腦也是可以解開密碼後進去使用的。

這網站也帶點解謎的成分在,有些物品是解謎後才能看得到的,還藏了一些工程師才知道的彩蛋,希望以此方式可以讓使用者用這種方式稍微了解我的個性和特質。

整體來說是蠻滿意自己的這個網站,就是這種互動式不好寫 RWD,所以讓使用者可以選擇至 YouTube 上看我 demo 這網站的功能。

記得開 CC 字幕喔,中英文都有。








沒有留言:

張貼留言