# 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 是相當划算的投資!
* 務必細讀 ==[GNU/Linux 開發工具共筆](https://hackmd.io/c/rJKbX1pFZ)==
* 沒有特別聲明的話,原始程式碼==應採用 [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 上的程式碼,公開存取,而且要有完整的開發紀錄
* 延伸閱讀: [Git commit message 撰寫和改進實例](https://hackmd.io/s/HJQk5dt2x)
* HackMD 上的「開發紀錄」:公開給大家指教 (需要設定為 Editable)
以上都該在指定的截止時間前完成,不接受補交。
## 參考和抄襲
* 我們鼓勵學生多方參考各種材料,除了第一手資料以外,也包含其他同學的共筆
* 作業的開發紀錄和程式如果引用到參考資料時,務必指出來,特別是其他同學的共筆,除了給予 credit 外,還要附上充分的超連結資訊
* 無法認定出處的「參考」,則視同為「抄襲」,授課教師會斟酌給予學生澄清的機會