Systems Programming in Unix/Linux
Abstract
Systems programming is an indispensable part of Computer Science and
Computer Engineering education. System programming courses in Computer
Science/Engineering curriculums play two important roles. First, it provides
students with a wide range of knowledge about computer system software and
advanced programming skills, allowing them to interface with operating
system kernel, perform file operations and network programming, and make
efficient use of system resources to develop application programs. Second, it
prepares students with needed background to pursue advanced studies in
Computer Science/Engineering, such as operating systems, embedded
systems, database systems, data mining, artificial intelligence, computer
networks, and distributed and parallel computing. Due to its importance,
systems programming in Unix/Linux has been a popular subject matter in
CS/CE education and also for self-study by advanced programmers. As a
result, there are a tremendous number of books and online articles in this area.
Despite these, I still find it difficult to choose a suitable book for the Systems
Programming course I teach at WSU. For many years, I had to use my own
class notes and programming assignments in the course. After careful thinking,
I have decided to put together the materials into a book form.
The purpose of this book is to provide a suitable platform for teaching and
learning the theory and practice of systems programming. Unlike most other
books, this book covers systems programming topics in greater depth and
it stresses programming practice. It uses a series of programming projects to
let students apply their acquired knowledge and programming skills to
develop practical and useful programs. The book is intended as a textbook
in technical-oriented systems programming courses. It contains detailed
example programs with complete source code, making it suitable for selfstudy
also.
Undertaking this book project has proved to be another very demanding
and time-consuming endeavor. While preparing the manuscripts for publication,
I have been blessed with the encouragement and help from many people.
I would like to take this opportunity to thank all of them. I want to especially
thank Yan Zhang for his help in preparing figures for the book and proofreading
the manuscript.