# 2017 年春季作業說明 ###### tags: `sysprog2017` :::info :mega: 本頁為開設於台南成功大學資訊工程系的「[嵌入式作業系統設計與實作](http://wiki.csie.ncku.edu.tw/sysprog/schedule)」課程作業的注意須知,請詳閱。 ::: ## 共筆和繳交方式 本課程使用 [HackMD](https://hackmd.io/) 來輔助教學,所有的作業也一併使用該系統來追蹤和紀錄 - 新手教學影片: [從無到有學習HackMD](https://www.youtube.com/watch?v=r5FOR-YU33c) - 開發過程很重要,我們不接受「突然生出進度」這種事 ## 標注須知 下方只要是 `$` 開頭,就表示在 GNU/Linux 的終端機裡面輸入的指令,比方說 `$ sudo apt-get update`,就表示要輸入 `sudo apt-get update`。 ## 預先準備動作 * 安裝 GNU/Linux,建議安裝 [Lubuntu](http://lubuntu.net/) 16.10 (注意: 應安裝 64-bit 版本) * 注意: 不要透過虛擬機器,而是用==多重開機==直接裝在==實體機器==的硬碟中,記得先切割好硬碟 * 新手教學影片: [輕鬆學會 Windows / Ubuntu 雙系統安裝](https://www.youtube.com/watch?v=rjpBTT6AmeU) * 安裝相關開發工具 * [gnuplot 語法解說和示範](https://hackmd.io/s/Skwp-alOg#) ``` $ sudo apt-get update $ sudo apt-get install build-essential $ sudo apt-get install linux-tools-common linux-tools-generic $ sudo apt-get install cppcheck astyle colordiff gnuplot ``` * 關於 GNU/Linux 指令,請參閱 [鳥哥的 Linux 私房菜](http://linux.vbird.org/) * 本系列課程全程使用 GNU/Linux,全世界有十幾億台裝置內建 Linux 系統,學習 Linux 是相當划算的投資! * 新手教學影片: [快快樂樂學 Vim](https://www.youtube.com/watch?v=1MtQoKP_uxU) * [終端機和 Vim 設定](https://hackmd.io/s/HJv9naEwl) * [vim 命令圖解](http://blog.vgod.tw/wp-content/uploads/2009/12/vgod-vim-cheat-sheet-full.pdf) * [Trace C 程式碼的 vim 設定](http://wen00072.github.io/blog/2016/11/26/vim-setup-for-trace-c-code/) * [熟悉 Git 和 GitHub 操作](http://wiki.csie.ncku.edu.tw/github) * 在 `~/.bashrc` 最後一行加入 `export EDITOR=vim`,就可以指定 git commit 時呼叫 vim 來編輯訊息 * [30 天精通 Git 版本控管](https://github.com/doggy8088/Learn-Git-in-30-days) * [Learn Git Branching](http://learngitbranching.js.org/) 可線上練習 git 命令,右側直接反應出目前 branch 的模樣。多試幾次就會熟悉較進階的 git 命令。網頁介面提供中文版,用右下角的地球圖示即可切換語言 * [Makefile 語法和示範](https://hackmd.io/s/SySTMXPvl#) * 沒有特別聲明的話,原始程式碼==應採用 [K&R style](https://en.wikipedia.org/wiki/Indent_style#K.26R_style)==,我們會透過 [Git Hooks](https://git-scm.com/docs/githooks) 強制要求保持一致的程式開發風格 * 參考資訊: [Recommended C Style and Coding Standards](http://ieng9.ucsd.edu/~cs30x/indhill-cstyle.html) * ==不用 Tab,而是 4 個空白==來進行縮排 * astyle 工具可進行程式排版,透過 Git hook 自動套用 K&R style 到程式碼: ![](https://i.imgur.com/AF7RTMM.png) ## 作業的範疇 每份作業的繳交分成 2 部份: * GitHub 上的程式碼,公開存取,而且要有完整的開發紀錄 * HackMD 上的「開發紀錄」:公開給大家指教 (需要設定為 Editable) 以上都該在指定的截止時間前完成,不接受補交。 ## 參考和抄襲 * 我們鼓勵學生多方參考各種材料,除了第一手資料以外,也包含其他同學的共筆 * 作業的開發紀錄和程式如果引用到參考資料時,務必指出來,特別是其他同學的共筆,除了給予 credit 外,還要附上充分的超連結資訊 * 無法認定出處的「參考」,則視同為「抄襲」,授課教師會斟酌給予學生澄清的機會