# 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 到程式碼:

## 作業的範疇
每份作業的繳交分成 2 部份:
* GitHub 上的程式碼,公開存取,而且要有完整的開發紀錄
* HackMD 上的「開發紀錄」:公開給大家指教 (需要設定為 Editable)
以上都該在指定的截止時間前完成,不接受補交。
## 參考和抄襲
* 我們鼓勵學生多方參考各種材料,除了第一手資料以外,也包含其他同學的共筆
* 作業的開發紀錄和程式如果引用到參考資料時,務必指出來,特別是其他同學的共筆,除了給予 credit 外,還要附上充分的超連結資訊
* 無法認定出處的「參考」,則視同為「抄襲」,授課教師會斟酌給予學生澄清的機會