Description
¡@
This course is designed for sophomore CS-major students and serves as the introduction system-level course. In this course, students will learn how to write the programs using system services in Unix-like systems. The following are the goals of this course.
1. To be familiar with the UNIX-like systems.
It means to know how to make use of many tools/services provided by the system: commands, library calls or system calls. It also means that you understand the model of computation that Unix presents.
2. To become good system programmers.
It means that you should know how to write a descent C program in Unix/Linux as the semester is over. However, this course should not limit yourself in writing system programs in Unix/Linux. The learning process that you will have in this course should teach you how to program in any other operating systems which you might use later in your career.
At the end of the semester, you may want to go through this list again to see if the goals are met. We will appreciate if you could provide us your comments regarding the class at the end of the semester. (Well, you can send us your comments at any time. However, I guess that it is more reasonable to review the class at the end of the semester.)
The topics covered in this course include:
- Course Overview
- Introduction and Unix Standardization
- File Input and Output
- Standard I/O Library
- Files and Directories
- System Data Files and Information
- Environment of a Unix Process
- Process Control
- Process Relationships
- Signals
- Inter-process Communication
- Advanced Topics (optional)
Websites
http://www.csie.ntu.edu.tw/~pjcheng/course/sp2008
Advanced Programming in the Unix Environment, 2nd Edition, by Richard Stevens and Steven A Rago, Addison-Wesley, 2005
References
-
Managing Projects with make, by Andrew Oram and Steve Talbott, 1991.
-
The Art of Unix Programming, by Eric S. Raymond.
Assignments (30%)
Midterm Exam (35%)
Final Exam (35%)