Workshop on Unix/Linux System Programming (Academic Edition)

The Linux system programming workshop for students and academic is designed to be a completely hands on workshop to address the need of upcoming professionals who would like to pursue a career in Linux/Unix for software development/QA/system administration or those who wish to enrich their understanding of programming related concepts of Linux/Unix.
This course aims at developing a comprehensive understanding of the Linux system programming aspects with emphasis on the following areas:

  • Overview and structure
  • Working of system calls on Linux
  • Understanding of file, process and memory management
  • Inter-process communication and signal handling
  • Multi-threading and thread synchronization
  • Multi-threading and thread synchronization

Takeaways from Workshop:

  • Develop good understanding of Linux operating system concepts and development environment
  • Exhaustive hands-on coverage aimed at making participant ready for independent software development/QA

Target Audience:

  • College staff teaching courses in computer science or final year students
  • Anyone who wishes to develop a good understanding of the workings of Unix/Linux OS


  • C coding on any platform
  • Familiarity using any flavour of Unix/Linux. Knowledge of basic shell commands like listing files, starting processes, using cat, grep etc. Refer pre-requisite doc for more information

Delivery Method:

Instructor lead and hands on. The course has a heavy emphasis on hands on coding for almost every topic of the presentations.

Faculty: Ravishankar Rajagopalan, BE (NIT)

Ravishankar has 16 years of professional experience in software design, development and has lead engineering product development teams at several reputed MNC’s. He has been associated with Cisco Systems, Intransa, Symphony Services among others and is currently consulting. He has also conducted several internal trainings in the companies he worked for and recently also delivered corporate trainings at Wipro and Symphony services.

Course Contents:

  1. Introduction to Unix development environment 
    • Overview of Source structure
  2. Compiling and linking programs with gcc
    • Compiling C source
    • Understanding the 3 steps for compiling
    • Writing functions in separate file, compiling files separately
    • Linking together to produce executable
  3. Using libraries
    • Overview of libraries
    • Creating static and shared libraries
    • Linking program to shared library to produce executable
    • Types of linking (static, dynamic, run-time), understanding the process for generation
    • Related utilities
  4. System Calls and File management
    • Internals of system calls
    • Examples of system calls
    • Understanding file management and related system calls
  5. Processes
    • Types of processes (executables, daemons, zombies..)
    • Process creation
    • Process scheduling
  6. Signals
    • Types of signals
    • Signal handlers
  7. Memory management
    • Memory management overview (virtual address space, virtual memory, paging, shared memory)
    • Memory allocation, allocating memory on stack
    • Tracking memory allocations
  8. Multithreading
    • Creating Threads
    • Thread data
  9. Interprocess Communication
    • Overview of interprocess communication
    • Interprocess communication using Pipes
    • Interprocess communication using FIFO’s
    • Interprocess communication using Message Queues
    • Interprocess communication using Shared Memory
    • Synchronization using Semaphores
  10. Using GDB
    • Overview of GDB
    • Stepping into code
    • Breakpoints, conditional breakpoints
    • Attaching debugger to a running proces

Duration : 5 days

Click here to download this as a PDF doc