Skip to main content
Woman smiling with back to computer screens of code

Linux Systems Programming | EMBD.X420


In this course, you will explore the vital role of system calls in Linux and other systems, enabling user-space applications to connect with the kernel and perform privileged functions. System calls contribute to application and operating system compatibility and interoperability by offering a defined interface for accessing the kernel that is used for functionality.

You will explore system call APIs to learn how to build interactive and service (daemon) applications that control the system and perform operations. We categorize based on the type of operation they perform: process management and file management. Practical projects include building standard Linux applications, such as ls, cat, etc. as well as some service processes, such as ftp.

Key topics covered include I/O control, file systems, access, and locking; signal handling; process and threads management; IPC using pipes and TCP/UDP sockets. Additionally, the course will address makefiles, man pages and packaging utilities.

By the end of the course, you’ll have developed a complete ftp package and mastered the implementation of client-server programs using TCP, UDP, and RPC. This course adheres to the POSIX standard, ensuring a solid foundation, while also incorporating discussions on portability considerations for BSD extensions and SVR4 differences.


Learning Outcomes
At the conclusion of the course, you should be able to

  • Design and demonstrate implementation of standard LINUX utilities (e.g. ls, wc, cat)
  • Explain programming interfaces and topics on I/O control, file systems, access and locking
  • Describe the use of signal handling interfaces
  • Describe Process and threads management
  • Describe IPC using pipes and TCP/UDP sockets
  • Discuss makefiles, man pages and rpm/apt packaging utilities

Note(s): To practice, students are expected to install or have access to Linux Operating System version 7, or higher (version 9 is preferred) on their home computers. Options include VMWare, VirtualBox, LiveCD, disk partition or separate drive or an embedded Linux system such as a Raspberry Pi.

Skills Needed:

A basic knowledge of C language programming and a working knowledge of the Linux/UNIX operating environment are required.

Have a question about this course?
Speak to a student services representative.
Call (408) 861-3860
FAQ
ENROLL EARLY!
This course is related to the following programs:

Estimated Cost: TBD

Course Availability Notification

Please use this form to be notified when this course is open for enrollment.

Contact Us

Speak to a student services representative.

Call (408) 861-3860

Envelope extension@ucsc.edu