上一堂有趣的電腦課:哈佛大學的免費線上課程Computer ...
文章推薦指數: 80 %
... 線上課程Computer Science (CS50). 我是一個PM ,大學沒有修過計算機概論的那一種。
程度大概是讀過幾本書、一些些影片,自學HTML/CSS 這樣子的。
GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWrite上一堂有趣的電腦課:哈佛大學的免費線上課程ComputerScience(CS50)我是一個PM,大學沒有修過計算機概論的那一種。
程度大概是讀過幾本書、一些些影片,自學HTML/CSS這樣子的。
因為希望可以更有效率和工程師溝通、更快回應需求方的提問,因此想補充相關知識,在這樣的背景下來學這堂課。
這是一堂基礎的課程(但當然不是很簡單的意思),核心概念不是教會你寫哪一種語言,而是給你程式跟電腦硬體之間的關聯,資料如何被儲存、讀取、運算等等的基礎概念。
真的要說的話,前半部會用的語言是C,但是講觀念的時候遠多於怎樣寫,作業也是偏向訓練思考的邏輯,所以基本上用的語言對自己來說實不實用不在討論範圍內,這堂課學的是從事網路相關產業的人該有的思維邏輯和基礎知識。
影片剪輯做得很好,還有字幕綜合前幾堂課的作業和課程內容來說:電腦是二進位的、用0和1來儲存資料大家可能都知道,但0和1當然不是直接用文字刻在那塊硬碟上,要怎樣能記憶資料、又能夠被覆寫?為何有人說硬碟不能摔?這可能是一般人沒想過的問題。
我覺得其中最有趣的部分是課堂的舉例和作業:舉例來說,在以「演算法」為核心的課程裡,舉的例子是排序。
假如班上有7位同學,今天作業要依照分數由高至低排序,用口語的文字來說,你要怎樣做?人類的可能做法是把所有的作業分成兩堆,一邊是還沒看過的,一邊是排好順序的,分數假如是86、60、73、92、98、70、81:先比較最前面的兩個數(86、60),高的86放上面,低的60放下面,放進有順序的一堆裡;接著拿出第三個數字73,小於86、大於60,因此排進中間;第四個92,大於86,因此取代它排在最上面…….直到排完所有數字。
聽起來很合理、很迅速,但假如今天你要排序的位置,是一張成績登記表從高到低必須紙本手寫上去時,問題就來了。
當「第一名的分數」在比較的過程中被更新了,你就必須把後面所有分數都往後移一個位置,擦掉再寫就會很辛苦。
對記憶體來說就是如此。
這種作法叫做Insertionsort。
而除此之外當然還有非常多作法(例如兩兩比較交換位置的Bubblesort、分成兩半排序再合併的Mergesort),每種作法需要的步驟當然不一樣多,最後回歸到哪種做法會使用到較少的步驟,也就是對程式來說有比較高的效能。
類似的問題還有:如果要在電話簿裡找一個人名,你要怎樣最快找到?甚至week1continued的課程作業裡你就會被要求寫簡單的加密,作業連結在這,條件是跟使用者要原字串、接著符號不變動、大小寫不變動,剩餘的字依照使用者輸入的數字將字母往前推移(如果推移數字是2,A就變成C這樣),最後打印在螢幕上。
或是做一個找零錢的算法,客人的大鈔買小東西,你要怎樣總是給客人找出最少的零錢數?內容的有趣之處大概就講到這邊,剩下就講CS50給的完整資源和免費課程哪裡看吧。
—————————————推薦的課程觀看處:edX線上平台,最新版是2018(介紹影片在這)課程一共有11週,像前面提到的有些課程會分成兩段長度講(才會有week1continued這種項目出現),作業也都有小講解(Walkthrough)。
唯一的缺點是英文課程(但我覺得不算是真的非常艱澀難懂,畢竟程式碼寫出來也是英文,習慣一下也是還可接受)也有中文社團在討論:CS50中文討論區官方有英文社團:CS50如果真的很需要看中文翻譯版,可以到網路上蒐會有中文字幕的版本,只是就會比較舊這樣~—————————————必須要大推的是他們提供寫作業的環境(用edX帳號可以直接登入使用)這是我寫加密那一題啦,希望不要有寫錯被抓包糗糗有資料夾,可以直接用下方的終端機去操作(也可以直接點),中間是編輯程式碼區,右側可以收合,是抓蟲用的。
我認為課程很貼心的部分是:分成lesscomfortable跟morecomfortable兩種資源。
例如有個reference網站,裡面介紹各種已經寫好的指令該怎樣用,解說部分的頁面右上角會有一個按鈕可以按,如果你比較不擅長、剛接觸,可以點那個lesscomfortable的按鈕,解說會友善很多!是克服恐懼的良方。
右邊是lesscomfortable被勾起來的狀態(範例是isalpha這個指令)作業也有分lesscomfortable跟morecomfortable兩種程度,可以寫完less再挑戰進階,就不會覺得很有挫折感!其他相關工具也都是完整到不行,大學教授都沒這麼認真:help50:給你寫不出來時的提示。
check50:幫你檢查作業,看有沒有通過作業要求。
style50:幫你檢查你寫程式有沒有縮排、有沒有寫漂亮的功能。
當然幫debug的方式也有很多種,課裡都有說明(而且他課程示範經常犯錯,人肉示範各種debug不過就是日常)。
而且老師非常會講課,不是從大神的角度教你,而是真的講基礎,讓人思考理解,總之很推啦,我在中文討論區裡找人一起開了讀書會(而且讀書會裡的成員都是工程師,寫了幾年程式再回頭捕基礎的),討論、一起寫作業覺得很有效,我們目前還沒讀完啦,如果有人也去上了也可以一起討論噢!保證燒腦但是樂趣十足!MorefromSummerChangFollowPM、狗派、常常睡不好的人Lovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedSummerChang99FollowersPM、狗派、常常睡不好的人FollowMorefromMediumMitchellSparrowWhatisthebestFantasyFormulaOneteam?MirhaanayaWhyCompetitiveProgrammingisaMustforComputerScienceStudentsVapored.ArtbyOliverAllenInterviewwithTiinaTörmänen — Question1DemiOshin5ThingsYouMustUnderstandBeforeYouDoACSDegreeHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1[心得] CS 自學網站/資源推薦- 看板studyabroad - 批踢踢實業坊
我沒有看完Havard cs50這個系列,所以不便在這邊提出太多的心得。 不過對於CS零基礎的人來說,這門課也是很多人一開始的選擇。
- 2上一堂有趣的電腦課:哈佛大學的免費線上課程Computer ...
... 線上課程Computer Science (CS50). 我是一個PM ,大學沒有修過計算機概論的那一種。 程度大概是讀過幾本書、一些些影片,自學HTML/CSS 這樣子的。
- 3Day 2: 自學的心態與課程資源 - iT 邦幫忙
edX 是哈佛跟MIT開發的線上課程系統,裡面也有許多名校的課程,知名的CS50 就在這個平台。 Harverd: https://www.edx.org/school/harvardx; MI...
- 4CS50 完結篇 - 關於程式的那些事
以前的我,靠著上一個月的JS課入門程式設計,主要是在工作上自學,學習未從細節開始,所以常常寫出一堆莫名自己難解釋的bug。謝謝,不厭其煩跟我說著 ...
- 5[CS50] 導讀哈佛大學程式課程 - Lidemy 鋰學院
CS50 是哈佛大學開設的程式通識課程,內容包山包海,從最簡單的Scratch 教到C ... 如果你想更了解我,可以參考:自學、哲學、講學:我的程式之路以及一個工程師的履歷 ...