※ 本文是否可提供台大同学转作其他非营利用途?(须保留原作者 ID)
(是/否/其他条件): 是
哪一学年度修课: 103-1
ψ 授课教师 (若为多人合授请写开课教师,以方便收录)
郑卜壬
λ 开课系所与授课对象 (是否为必修或通识课 / 内容是否与某些背景相关)
资工系大二必修
δ 课程大概内容
按照老师教授的顺序列出课本章节名
Ch1. UNIX System Overview
Ch3. File I/O
Ch14. Advanced I/O
Ch4. File and Directories
Ch8. Process Control (前半)
Ch5. Standard I/O Library
==========期中考==========
Ch7. Process Environment
Ch8. Process Control (后半)
Ch10. Signals
Ch11. Threads
Ch12. Thread Control
==========期末考==========
上第一堂课前,光看大纲几乎不知道这课在教什么,对于Unix, Linux 也可说
都没接触过。现在修完一学期如果要和没修过的人解释的话,我会说这堂课顾
名思义就是学习在 "Unix系统上写程式" ,一开始我们学写程式通常不会在意
作业系统扮演的角色,然而比如说像是把结果印到萤幕上、开启或读写档案,
都需要使用公用的资源,因此这时就要系统管理、分配各程式可拿的东西,并
把资源做有效的分配。而通常这些动作都会包成一个个函式供程式呼叫 (像是
printf(),fopen()等) ,所以这课很多时间是在介绍这些函式运作的方式,进
而对系统如何执行众多程式有基本的了解 (算是作业系统的前导课程) 。
以内容来讲,这门课可粗略分成两大部分: file 和 process。file 包含像是
buffered & unbuffered I/O, file table, file system...等等,而 process
的部分有 fork, exec, thread, signal...等等。
Ω 私心推荐指数(以五分计) ★★★★★
★★★★★
先说我是外系的,可能是我以前对这块一窍不通的关系,不怕死的(?) 来修后
,真的觉得学到很多,对写程式、类Unix、作业系统的了解皆比以往多了不少
。所以如果你会一点点程式,但你还想知道作业系统和其执行程式间是怎么沟
通、运作,或是你单纯想了解多一点关于Linux 的知识的话,都很建议来修这
门课。
η 上课用书(影印讲义或是指定教科书)
Advanced Programming in the UNIX Environment, Stevens Rago
一开始老师是说这本比较像字典,不见得要从头第一个字开始慢慢看到尾,可
以直接查不会的函式来看就好。不过以我读过的心得是,不懂某个函式怎么用
,反而查网络比较快,因为这本书的索引太繁杂了,不容易找到想要的资讯,
倒是这本书写得满好读的,观念交代的也算清楚,投影片配合课本看应该满有
加成的效果。
μ 上课方式(投影片、团体讨论、老师教学风格)
主要用投影片上课,偶而会用白板配合讲解。老师感觉在这一部分很有心得,
讲观念都讲得很清楚,也有足够时间让同学思考。老师算满风趣的,虽然有很
多哏都是关于本课程内容的XD,偶而也会讲一点Google的事情(?
就授课顺序来讲,虽然内容大部份都是照课本,但老师有时候会一章讲一半就
跳到另一章,或两章一起讲,听课当下是不会有不连贯的感觉,但在复习的时
候会麻烦一点,不过这也要归咎于这门课的内容满多也满杂的,各章的内容看
似独立却又都有关联...。
σ 评分方式(给分甜吗?是扎实分?)
期中考 30%
期末考 30%
作业 40%
应该满扎实的,好像不太会调分的样子,不过期末考满分都会超过一百 (本学
期是120),若程式作业写太差还有补救的机会。
ρ 考题型式、作业方式
考试题型满多样的,大部分是问答,也有复选或选填题,另外也会要求手写程
式码,不过老师会提供所有需要的 function prototype 。也有那种给你几行
程式码,要你指出其中可能会发生的问题,算是考满活的。而考题基本上都没
超过投影片的内容和老师讲的,也没有太偏或太刁的题目,只是一次考试的投
影片份量不少,要花一点时间读熟才容易考好。
作业也占了成绩很大的比例,除了三次手写外,大半作业成绩是由四次程式作
业决定,可能是一开始对很多函式要怎么用都还不太熟的关系,前两次都写了
二、三十个小时有,而后两次大概也是助教出比较简单的缘故,分别十几个小
小时就搞定了。不过似乎都是助教出题,所以应该每年会不一定。
ω 其它(是否注重出席率?如果为外系选修,需先有什么基础较好吗?老师个性?
加签习惯?严禁迟到等…)
不在乎出席,加签好像也是满容易的,基础的话我觉得只要会一点 C/C++ ,程
度大概会写、呼叫函式就差不多了。
Ψ 总结
很推这门课,也很推郑教授 (刚好这学期两班都是他教) 。对于以前只会拿来
呼叫的系统函式(printf(),fopen()那些),你会更了解它背后偷偷的做了什么
事;对于新学到的函式,也提供你写程式时新的选择,或说可以写出考量到更
多牵涉系统内部运作的程式,让你的程式更安全、更有效率。
除了对写程式的助益外,对 CS 的知识也会增加很多,尤其是作业系统的部分
,以前计概可能会学到 Semaphores, Race Condition, Deadlock 这些名词,
但往往只是粗略的交代它的概念而已,这门课就会很实际的把 code 列出来,
告诉你怎么样就会发生这些事,该怎么解决也会一并介绍。总之这是一门修完
可以有很多知识或概念内化于心的课,而不会只是考前背一背名词,考后就都
都忘记学了什么的那种。