August 2, 2017

[CS50] Week 1 C - 中文導讀筆記

*此筆記是依據胡立老師的 CS50 中文導讀直播影片所寫。

胡立老師的直播:
CS50 中文導讀:week 1

如果想要對第一週內容有更全面的了解,建議配合 [CS50] Week 1 C - 課程筆記 一起閱讀。因為第一週課程筆記內容已經蠻長了,所以我把課程筆記裡沒寫到,而胡立老師有額外補充的部分寫在這一篇,如果在課程筆記就寫過的部分(像是 command line 指令),這篇就沒有重複寫。這篇我略過關於 Scratch 的講解。

以下是我的筆記整理:

July 22, 2017

[CS50] Week 1 C - 作業筆記

*此作業筆記是依據 CS50x 2017 版本(也就是哈佛大學 2016 秋季班的 CS50)所寫。

作業筆記我只會寫出我做作業時遇到的問題,或是需要特別注意的地方,但不會把完整的程式碼寫出來。也因為這個緣故,所以只能用文字與少量的程式碼描述,可能會有難以理解的地方,還請見諒。

即使課程影片我都看得懂,但是做作業時還是卡關了一下,但做完後發現其實真正難的不是如何寫出程式,而是要寫出符合作業規定的 UX 設計。

第一週的作業分四小題,第三跟第四題還有分比較簡單的(他們叫做 less comfortable) 和比較困難的(他們叫做 more comfortable)這兩種版本,每個作業說明裡面都會有助教的講解短片 Walkthrough,基本上看完 Walkthrough 後就可以抓到如何寫作業的方向,強烈建議一定要看過才動手寫。

July 20, 2017

[CS50] Week 1 C - 課程筆記

*此課程筆記是依據 CS50x 2017 版本(也就是哈佛大學 2016 秋季班的 CS50)所寫。

CS50 原本就提供很詳細的課程筆記了(第一週筆記),所以這個筆記偏向記錄我比較不熟悉的部分而已(事實上這個筆記也是很長,廢話不小心寫太多)。

雖然我學程式的資歷還很淺,但已經不算是完全新手,看完第一週的課程影片後,覺得如果當初 CS50 是我的第一門程式課,我應該是痛苦不堪然後快速投降 XD

剛開始學程式的時候,我花了不少時間才完全理解第一週裡面教到的東西,像是函式、迴圈、條件判斷、資料型態等等,有些甚至到現在都還不算完全理解,像是浮點數。而 CS50 用一堂課就全部都講完了。雖然看完課程之後,我自認有 80% 以上的內容對我而言都是以前學過的東西,或容易理解的概念,但是在寫作業的時候仍然卡關嚴重(因為之前都沒有認真練寫程式 XD)。

即使第一週課程大部分的內容對我來說都不陌生,不過上完課還是收穫很多,Malan 教授上課的脈絡非常清晰,課程的步調也抓得很好,我甚至懷疑他在課堂上連出錯都是原本就安排好的,因為想要讓學生了解寫程式會發生的錯誤和一些邏輯思考,不過到底是不是真的出錯這就不得而知了。

July 19, 2017

[CS50] Week 0 Scratch - 中文導讀筆記

*此筆記是依據胡立老師的 CS50 中文導讀直播影片所寫。

胡立老師的直播:
CS50 中文導讀:week 0

原本不想寫這次的導讀筆記,因為所有內容都在胡立老師的 初心者的計概與 coding 火球術 有學過。但是呢,之後應該都會寫每週的導讀筆記,只有第零週沒有寫總覺得不完整(這應該是強迫症 XD),所以最後還是決定寫一下導讀有講到的,而 CS50 課程裡面沒有講到的一些補充。

以下是我的筆記整理:

July 6, 2017

[CS50] Week 0 Scratch - 課程筆記與作業

*此課程筆記是依據 CS50x 2017 版本(也就是哈佛大學 2016 秋季班的 CS50)所寫。

可能有些人不清楚如何在線上註冊 CS50,所以我大概講解帶過。

在 edX 上註冊帳號之後,還要到 Introduction Computer Science Harvardx CS50x 課程頁面上註冊加入課程,目前最新的課程內容是 CS50x 2017。課程本身是免費的,如果希望在修完課程後可以拿到證書,才要繳交費用。

稍微看一下他們的 FAQs,裡面有說到你一開始上課的時候不需要決定要不要拿證書,可以在完成所有作業及課程後才申請。所有作業都要 70% 以上才可以申請到證書。但是你可以繳交很多次作業,他們只會記錄你最後交的作業成績。

我猜測 CS50x 是指放在 edX 的課程,而 CS50 是指哈佛的課程,其實兩個是一樣的,只是時間上會有半年的差異,通常他們只錄製秋季班的課程(春季班應該也會有 CS50 但是沒有錄製),然後在隔年才放到 edX 上,因為影片需要時間剪接上字幕,還有一些其他的教學材料的準備,所以才會有半年的時間差。

July 5, 2017

[CS50] 導讀哈佛大學程式課程:CS50 - 緣起

昨天正當我還沉浸在 Diablo 的世界時,收到胡立老師的關切。
他說:「所以妳有要一起來修 CS50 嗎?XD」

馬上從 Diablo 的世界中驚醒,然後我回:「好想繼續耍廢啊 😂」
的確是上個前端課程結束之後就一直耍廢,因為剛好 Diablo 死靈法師出了啊 XDD

最近胡立老師創了自己的教學網站 Lidemy 鋰學院,然後下個星期要開始一個新的課程:導讀哈佛大學程式課程:CS50。上次課程快結束前,胡立老師就有建議我可以再去上 CS50,但是我懶惰,只是放在「待修課程清單」XD

June 25, 2017

Frontend Intermediate Course - 作業十直播筆記

最後一次作業胡立老師沒有修改,不過交完作業之後,在 Slack 群組裡面胡立老師有提到其實應該所有的 JavaScript 檔案都應該檢查才對,當時我在 webpack.config.js 裡面出現的錯誤不知道怎麼修改,所以就把設定檔都放在忽略檔案名單裡,不是最正確的方式。

後來才知道,原來在 webpack.config.js 檔案裡,如果沒有用到 webpack 這個變數,其實是不用引入的,這跟我原本的認知不一樣,點破我的盲點 XD

也加入 path.join() 修正我的另外一個錯誤。

所以在 package.json 裡面,讓設定檔也要被 semistandard 檢查:
"semistandard": {
    "ignore": [
      "src/css/",
      "dist/*.min.css",
      "dist/*.min.js",
      "node_modules/"
    ]
  }

然後在 webpack.config.js 裡面,拿掉 var webpack = require('webpack');,同時引入 var path = require('path');,修改一下路徑的寫法:
module.exports = {
  entry: './src/js/index.js',
  output: {
    path: path.join(__dirname, '/dist'),
    filename: 'bundle.min.js'
  }

/* Original codes:
module.exports = {
  entry: './src/js/index.js',
  output: {
    path: __dirname + '/dist',
    filename: 'bundle.js'
  }
*/

最後再重新用 semistandard 檢查一次,全部都沒有問題了~