- 開課教師:黃俊穎
- 課程綱要
想為修課留下點紀錄,卻又有些怠惰。這學期一共修了四門課,就先從最充實的一門說起吧。
關於老師
大學時沒有修過黃俊穎老師的課,查了一下課表,原來他只有開基礎程式設計,也就是所謂的CPE程式檢定,這門課基本上是不會有老師教課的,是一門系上規定的必修課,學期中會舉辦好幾次上機考,只要期中一次有及格就算過關。沒記錯的話是五題滿分五分,及格門檻為 2.5 左右,其中有兩題基本題一定拿得到,所以算是相當寬鬆了。關於這門課就此打住,回來談談黃老師吧。這是他的個人網頁,相當年輕的一位教授,英文講得清晰流暢,講課是以投影片為主,講到程式時會實際開一個虛擬機跑給大家看,上課沒點過名,沒有互動式的內容。這門課賣點並不是上課,而是作業的部分。
作業
作業一共有四個,列舉如下所有解答
:
- Implement a ‘netstat -nap’-like program
比較單純,只要parse /proc 底下讀出來的資訊即可。 - Monitor File and Directory Activities of Dynamically Linked Programs
利用 LD_PRELOAD 將來製作hook,以達到監控某些 glibc function 的目的。 - Extend the Mini Lib C to Handle Signals
很有意思的作業,要我們寫一個小型的 C library,包括實做 entry point 以及 system call 的包裝。 - Simple Instruction Level Debugger
最複雜的作業,利用 ptrace 來時做一個類似 gdb 的 debugger。
除了第一個作業外,期他都花了不少時間研究,有空或許會整理成幾篇完整的文章。
期中期末
除此之外還有期中跟期末,都是紙筆考試而且可以開書。準備的部分考古題是必要的,懶得花錢買書的話投影片也夠用,一定要印出來帶去考試。雖然不會出現跟考古題一模一樣的題目,但有些東西每年都會考,現在剛考完期末還有些印象,必考的有:byte order 轉換、sigsuspend 功能以及使用方法等。以 byte order 為例,考古題考的是要你寫一段 C code 判斷某個short 是以何種 byte order 儲存,這次是要你寫一段 C code 轉換一個 8 byte 的unsigned long long 的byte order,大同小異。