Department of Computer Science and Engineering
Instructor: Jungsun Kim
(031) 400-5669

Time Location
Lecture (Mon) 13:00-14:15 제1공학관 101호
(Fri) 09:00-10:15 제1공학관 101호
Lab. (Mon) 14:30-16:30 제3공학관 307호/ CAD실(기계) / 제3공학관 318호


In this course, we will learn the design concept, architecture, and programming interfaces of Unix (or Linux) operating system. Specially, we also learn the skill and knowledge for developing various system-level software by deeply understanding the functionalities that are provided by Unix (or Linux) kernel.


Students should be able to program in C programming language.
Basic knowledge of Operating System is desirable, but not mandatory.

Textbook (Optional)

Unix System Programming (2nd ed)
Keith Haviland, Dina Gray, Ben Salama
Addison-Wesley Longman Inc., 1999
Lecture notes may be posted on the class web page, if necessary, as the lecture proceeds.


  1. Operating System Concepts, Abraham Silberschatz et. al, 9th ed., Wiley, 2013
  2. Advanced Programming in the UNIX environment, 3rd ed., W. Richard Stevens, Pearson, 2013
  3. Linux System Programming, 2nd ed., Robert Love, O'reilly, 2013
  4. Understaning the Linux Kernel, 2nd ed., Daniel P. Bovet et. al, O'reilly, 2006
  5. Any C Programming References

Course Schedule

This is a tentative schedule and thus might be updated as the class progresses.

Week Contents
1 Introduction to UNIX/LINUX
2 C, Make, Shells
3 File I/O (I)
5 File I/O (III)
6 Process (I)
7 Process (II)
8 Midterm Exam
9 Signal & Signal Handling
10 Inter-Process Communication (IPC)
11 Advanced IPC (I)
12 Advanced IPC (II)
13 Advanced IPC (III)
14 Socket (I)
15 Socket (II)
16 Final Exam


Midterm Exam 30%
Final Exam 35%
Homeworks & Projects 10%
Labs 20%
Class Attendency 5%