2008年11月3日 星期一

心目中的 Linux development 課程建議

早上讀了一封某國立大學資訊系教授的信,百感交集。也不想評論些什麼…
就說說自已的想法罷了
我個人覺得,一個活在 AC 2008 Embedded GNU/Linux Software Developer 要會以下一些東西。
我認為…這只是基礎。這些會了,再來談創意…
光是空想,手上沒有工具,或是有工具不會用…只是白搭。

技術方面
* C programming
-- study forever...
-- Learning how to tracing code - Learning from the master

* Shell programming
-- Bash & awk & sed & grep & diff & patch
-- Python | Perl | Ruby

* Software testing
-- smoke test
-- boundary test
-- stress test
...

* cross toolchain.
-- Static link & Share Library
-- ABI
-- Dependency tree
-- How kernel execute programs & ELF study

* SCM
-- git
-- svn
-- cvs
-- patch
---- quilt

* Distribution structure
-- How system boots
-- Build a distribution from scratch

* Misc tools
-- gdb
-- valgrind
-- gprof
-- gcov
-- doxygen
-- autotools

文化方面
* Mailing List
* Bugzilla
* Hacker ethics
* IRC
* English
* Eat your dog food
* Coding style
* Knowledge management skill - search & skip

很明顯以上不是一門課就可以上完的,不過可以分散在幾門課之中。
0. 計概
1. OS
2. C programming
3. System programming
4. XXX 專題

作為:
. 老師自已開始始用 GNU/Linux or any Unix like system 把自已丟進 FOSS 的世界…會更有 fu

. 鼓勵學生在大一時,就學習用 GNU/Linux,以及使用公開格式文件。
學校為什麼要為 MS 做免費的廣告呢?
要求學生使用不是每個人都買得起的東西,使用不公開格式的文件…
這是不道德也不經濟的。
學生也可以真正的體會 FOSS 的文化,有興趣的人還可以真正深入了解系統的運作。

. 要求學生使用 gpg keys 以及使用 ssh key

. 作業用 git+ssh 繳交…

. 教導學生使用 Unix 下的一些超級工具
-- 一旦學會了…一輩子受益。可惜…很多老師自已不會,學一下吧。 ~>_<~

. 要求學生加入有名的 open source 的專案,成為期中作業。(以 commit log 為準)

. OS 課程之中,指派學生 Trace Linux kernel code ,對照 textbook 內容,且 present 給大家,作為作業。

. Algorithm 課程中,指派學生 Trace glibc | stdc | stdc++ | java library code ,使用,且學習用它們的 API 自已 cleanroom 一個出來,用 test framwork 來測。

. C programming 中,學生的每個程式作業,都要擺出 autotools 的架式,以及使用 doxygen 產生文件 (或不同工具)

. RTFM, 選一些重要的 manual 叫學生讀,學會讀文件和學會讀 code 是一樣重要的。

. 出幾題如 pythonchallenge 之類的上機作業給學生…

. 要求程式作業要先交 .h 檔,先上 git

. 鼓勵學生訂 mailing list, 為課程開 mailing list,在上面討論課程和作業

. 老師也要學習新把戲 ;-) 如果您在教 GNU/Linux development 而上面的任何 Item 不清楚的話,或不了解怎麼做的話…也許要再 update 一下您的 knowledge 了。

基礎很重要。手中有工具,才能玩遊戲。

小弟其實懂得不多,每天也還忙著學新東西,不過看完了某教授的信後,心裏是這麼想的。