Method
Flexible
Term
SPRING
Units
3.0 QUARTER UNITS
Cost
$750

Skills you will gain

  • Linux Utility Development: Design and implement standard Linux utilities such as ls, wc, and cat.
  • System Call APIs: Master system call interfaces for process and file management operations.
  • Signal Handling & Process Management: Understand and implement signal handling, process, and thread management.
  • Inter-Process Communication (IPC): Develop client-server applications using pipes, TCP/UDP, and RPC.
  • Packaging & Portability: Work with makefiles, man pages, and packaging utilities while ensuring portability across systems.

Course Description


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.


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.

Prerequisites / Skills Needed

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

  • Flexible Attend in person or via Zoom at scheduled times.
Schedule
Date Start Time End Time Meeting Type Location
Fri, 04-03-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 04-10-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 04-17-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 04-24-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 05-01-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 05-08-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 05-15-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 05-22-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 05-29-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 06-05-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
Fri, 06-12-2026 6:00pm 9:00pm Flexible SANTA CLARA / REMOTE
 

This class meets simultaneously in a classroom and remotely via Zoom. Students are expected to attend and participate in the course, either in-person or remotely, during the days and times that are specified on the course schedule. Students attending remotely are also strongly encouraged to have their cameras on to get the most out of the remote learning experience. Students attending the class in-person are expected to bring a laptop to each class meeting.

One “no meeting” TBA. To see all meeting dates, click "Full Schedule" below.

You will be granted access in Canvas to your course site and course materials approximately 24 hours prior to the published start date of the course.

Required Tools and Materials: 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.

This course applies to these programs:

Demo