Skip to content
UdemyIT & SoftwarePaid courseIntermediate levelCertificate

Linux System Programming Techniques & Concepts (Udemy.com)

For Developers - Build Linux Programmable Libraries, Makefiles, Memory Management, Compilation & Linking, C Programming

Created by: Abhishek CSEPracticals

Last updated September 2024

icon
What you will learn

  • Learn Advance Programming Concepts in C/C++
  • Develop and Integrate C/C++ Libraries
  • Automate Build Process using Makefile
  • Use of Function Pointers as Callbacks
  • Static and Dynamic Libraries and Linking
  • Compilation Process of a GCC Compiler
  • Organize the code into Header and Source files
  • Understanding Memory allocations, Heap Memory Management, Memory Leaks
  • Stack Memory, Stack overflow, Stack Corruption, Stack Registers
  • Paging Concepts and Page Tables
  • Concept of TLVs

How it compares

Against the other 1,182 rated Udemy courses in IT & Software on CourseDuck:

  • Rating4.6 out of 5higher than 67% of them
  • Reviews1,566#292 of 1,183 by number of reviews
  • Length14.3 hourslonger than 82% of them
  • Last updatedSeptember 2024earlier than 61% of them

icon
Course Description

There are already innumerable courses/tutorials on the internet/Udemy which teach almost every aspect of C programming language. All those courses sound the same, talk the same and deliver more or less the same knowledge. How is this course different from others?


The intention of this course is to make you ready for System programming Technical interviews, interview level - from Beginner to Intermediate. This course is for (future) Developers, not for testers or System Administrators.


I choose to create this course to fill the gap between novice/beginner and intermediate/Advanced Programmers. This course assumes that you are at least above average in programming (in any programming language, but preferable in C/C++) - know memory allocations, all kinds of loops, function calls, pointers etc.  In this course, I won't teach C/C++ (there are already many courses on it online) but would teach programming techniques and low-level details regarding how C program works behind the scenes - All topics are very important from an interview point of view. My Target is to grow this course into Linux/C Bible.


Yet, I always feel, you need to outsmart your fellow colleagues in this era of stiff competition, and therefore, I tried this attempt to present you the wisdom and knowledge which is of utmost importance for a programmer. I have seen though students could write good C/C++ programs, yet they lack the clarity on how one should write better organized, Manageable, extensible, and programmable codes in the form of libraries. For example, Students are too good at competitive programming, yet do not know how to write a simple Makefile, the reason being, Academics do not teach and students do not care to learn.

In this course, I will cover the topics related to creating Linux System Libraries (release 1) with Advanced language-agnostic Programming Concepts (release 2) which can be well applied if you happen to become a programmer in other languages tomorrow. 


The Concepts like MultiThreading, Thread-Synchronization, Socket Programming, IPCs, etc demand a separate course on each topic altogether. Currently, I have a course on IPC, pls check it out. These topics are out of scope for this course.


The Course shall be delivered into two Releases :


     Release 1 Building and Managing a Library:  This covers the basics regarding how one should create and organize his code as a Library.

     Release 2 Memory Management Concepts:  This covers Advance concepts on Linux Memory Management specifically. Please check the Table of Contents for more info.


Why you should *NOT* do this course?

1. Please Excuse this course if you are the ultimate beginner in C programming !!

2. There is no point of doing this course if you don't like hitting the keyboard, and are lazy enough to watch lecture VDOs only

3. If you want everything cooked and served on your plate.


Course Pre-requisite :

  • Above Beginners Level in C/C++ programming

  • Good to have basic OS knowledge

  • Zeal to excel and Code


No Third-Party libraries

Whatever logic you implement, you need to implement it from scratch. Like all my other courses, this course does not suggest taking the help of any third-party library to get the jobs done. The use of external libraries completely defeats the purpose of the course.


Warning: This course has auto system-generated subtitles which may not be perfect. Please disable subtitles at your convenience.


Curriculum :

**********************************************

Release 1 Building and Managing a Library

**********************************************

Section 1 : Introduction to Libraries

  • What is Library

  • Relationship between Library and Application

  • Ex : Doubly linked list as a Library

  • Quick Compilation Steps

  • Summary

Section 2 : Header Files

  • Relationship between Source and header files

  • Text Substitution Method

  • Text Substitution Method - Example and Demo

Section 3 : Preprocessing Directives

  • Problem of Duplicate inclusion of Hdr files

  • Pre-processing Directives

  • Solution to Duplicate inclusion of Hdr files

Section 4 : Correct way of Using Structures and Functions

  • Structures - Define and Use thumb Rule

  • Functions - Declare and Use thumb rule

  • The problem of Recursive Dependency

  • A solution to Recursive Dependency

Section 5 : Creation of Static and Dynamic Libraries

  • Resuming with Doubly Linked List Library

  • Quick Creation of Static and Dynamic Libraries

  • Linking with Static Library

  • Linking with Dynamic Library

Section 7: Understanding four stages of Compilation

  • Four stages of C/C++ Compilation

  • How Dynamic Library works ?

  • Dynamic Linking : Linking with Dynamic Library

  • Comparison - Static Vs Dynamic Linking

Section 8 : Building using a Makefile

  • What are Makefiles and why do we need it

  • Functions of Makefile

  • Makefile Dependency tree

  • Steps of Writing a Makefile

  • Assignment on Makefile

Section 9 : Run-time Programmable libraries

  • What are Programmable Libraries?

  • Steps to Program the libraries

  • Registering of the callbacks with Libraries

    • key_match callback

    • comparison_fn callback

  • Delegation of Application-specific operations to Libraries

Section 10 : Writing Iterators using Macros

  • What are Iterative Macros ?

  • Why we need Iterative Macros ?

  • How to Write Iterative Macros - For Trees and Linked Lists

  • Exercises

Section 11 : Glue Based Libraries and Data structures

  • What are the Glue Based Libraries?

  • Introducing Glthreads - A Glued LinkedList

  • Glthreads Vs Traditional Linked List

  • Structure field offset

  • GLThread Operations

  • Code Walk

  • GLThread Benefits 

icon
Udemy Discount

The discount is applied through our link. Open the course from here and Udemy's current promotional price is applied at checkout on most courses, no code to type.

Some courses are excluded from Udemy's promotions. If the price does not drop, clear your browser cookies and use the button again.

icon
Instructor Details

Abhishek CSEPracticals

I have been engaged with coding and software for a decade now. I am a Networking developer at MNC. My rich working experience is backed by graduation from IIT Bombay as an MTech specialist. I am restless for more in-depth knowledge, and always working out the ways to integrate what I know in practical ways. I am always happy to train and encourage people on Udemy – the next-gen education platform.


I will help you to strengthen the networking concepts and fundamentals in a very practical way. I also hones in System Software Development, Linux System Programming and Network Software Development. I love to create courses on unique non-standard topics, and projects. Check my catalogue, you will find couple of project based courses which you can add to your resume.


You’ll complete assignments and work on a project where you’ll use all the theory. I make sure you build a proper understanding and that you’ll get all the questions and doubts answered. Let me take the privilege to guide you and bring useful additions to your resume !

icon
More courses by Abhishek CSEPracticals

$79.99

$49.99

icon
More IT & Software courses

$49.99

$10.99

$124.99

$19.99

$11.99

$19.99

icon
Reviews

4.6

1,566 ratings on Udemy

Select a bar to show only those reviews.Select the bar again to show every rating.

By K S Santosh on 6/14/2024

The course content is very easy to follow. I learned about how malloc and free functions work under the hood, which was always a mystery to me. The theoretical knowledge about stack, heap and virtual memory, blowed my mind. I had no idea about this even though I have been coding in c for so long. The course really made me intreseted in linux OS and now I am venturing into other topics related to this. Overall this course will take you a level above in programming and you will get to understand the working of C on linux OS.

By Yu-Cheng Kuo on 4/30/2024

(1) The coding style the instructor adopt is kinda weird and quite different from K&R style. (2) I don't think iterative macro (or iterator macro) is something worth mentioning. In addition, it's confusing. There's almost no info on this if you google it and the most recent thread discussing this on Stackoverflow is about 10 years ago. (3) And the course would be better if the accent of the instructor could improve.

By Amr othman on 5/17/2023

so good so far , you must be aware of data structure before enrolling in this course , you will learn a lot of techniques for me he made his promise to take my programing skill to the next step and that what happen with me , so thank you Abhishek for your effort and to make such great courses available to us. i already purchased all of his courses, meet you in the next course , heap memory manager while(Abhishek){ courses->next; }

By Joshua Lapo on 1/10/2022

The instructor was very good at simply explaining low-level topics. Most of the assignments were well-thought-out, but a couple in the paging section could have used some more examples to teach the procedures on calculating memory size. Overall a great course for intermediate programmers already familiar with the C programming language that want to learn more about Linux.

By Matthew Zito on 7/31/2021

Yet another incredible course by CSEPracticals. The instructor's knowledge is *vast* - definitely my favorite instructor on Udemy now. Seriously, if you want to understand how C and programming in general works under the hood, take this course. I really enjoyed that this course was more theory-heavy than the others. Lots of valuable information such as how malloc / calloc / realloc and heap memory works, how memory mapping and paging works, 36 bit vs 64 bit, etc. The theory is accompanied by tons of analogies, illustrations, and examples along the way. There's a LOT of information in here that you will absolutely need to know for interviews and professional software development. Excellent stuff!

By Nagarajkumar on 10/10/2020

Thanks for offering this course, got a better understanding over programming concepts and memory management. In demand paging, you mentioned CPU will locate the swapped out page, could you add how it will adding? In Multithreaded process you mentioned about stack, what does the stack pointer points to since it has to manage process's stack as well as thread stack

By Yuriy Prokofyev on 8/15/2020

When I started this course I was skeptical about the ability to explain all the topics that are listed in the Course Content. But, I changed my mind after a while. Yes, this course might suffer from, let's say, low quality slides and pure sound but if you follow instructor carefully you we see that the value of the course is the information and the simple explanation of a quite "hard to understand" topics. I've had some background in OS area before I started this course and wanted to brush up my knowlege, and must say I found lots of valuable things that filled the gaps I had in understanding the way OS processes works. It is actually can be applied to the Windows OS as well. Thank you guys!

By María on 3/13/2020

El inglés no es mi primera lengua y aún así se puede seguir el curso sin problema: la dicción y el ritmo son impecables. No puedo aún valorar cómo se va a abordar por el profesor el salto conceptual que necesariamente se va a tener que producir entre los primeros módulos, más básicos, y el tratamiento de la memoria: memoria virtual-física, paginación, stack-heap. Será interesante.

By Junaid Siddiqui on 12/7/2019

A truly amazing course with a very deep dive into the Linux system. But it went to deep into memory management instead of covering other important aspects like package managers, pthreads, sockets and files/resource which would have been more suitable to this course and would have been helpful in creating some useful Linux application. Good Content... But some things could have been compromised like paging and other mentioned topics could have been explained along with a little project.

By Kev Smith on 10/29/2019

Great course with useful content. I completed all of this course before leaving a review and can recommend it for anybody interested in furthering their understanding of the internals of the Linux OS and C programming. I'm a native English speaker and didn't have any problems understanding the instructor. The explanations are clear and often covered from different angles to help your learning with good diagrams. There are also optional assignments to do as part of the course which I highly recommend to do. One thing to be aware of is I was following along with this course on a very recent 64bit Linux distro and what wasn't covered in the lectures were some of the optimisations that occur at the OS level. For example, I wrote a small c program and looked at how it looked and changed in memory - this didn't marry up with what I was seeing/learning in (albeit just a small section) the videos probably for 2 reasons. The first is most of the emphasis on this course refers to 32 bit OS's (though I'm not sure if there are any huge differences with what is covered in this course for 64 bit systems) and the second is it may have made the lessons too complex and is probably a whole course in itself. So I had to do a bit of googling around to help me understand what I was seeing. It's not meant as a negative point at all - just something to be aware of. I've also bought another course from this instructor which I am looking forward to starting.

Showing all 10 reviews on CourseDuck

Read all 1,566 reviews on Udemy

icon
Quality Score

No CourseDuck member has rated this course yet. Taken it? Give each part a thumbs up or down.

Content Quality
/
Video Quality
/
Qualified Instructor
/
Course Pace
/
Course Depth & Coverage
/

Overall Score : 92 / 100