|Can be completed in||3 Week|
|Course Validity||10 Week|
Linux System Programming (LSYS) is an online course designed to introduce you to the exciting world of writing programs on a GNU/Linux system which interact with the OS kernel (Linux). This kind of programming is known as System Programming. Linux System Programming is a hot skill to pick up as more and more companies working in the area of networking, embedded software and system software are looking out for system developers. Additionally, understanding the guts of your programs makes you a better programmer.
This is not an advanced course on system programming. The goal is to have a good amount of breadth so that the student has a solid base to build upon. We start off by explaining some background concepts such as System calls, Application Binary Interface (ABI), GNU tool suite etc. Next we move on to Files and directories, a topic which is divided into two sections. Processes and threads section describes the multi-tasking capabilities of Linux. Then we discuss how to create processes, their states, scheduling, deadlocks, barriers, daemons etc. In memory management section, we look at the address translation on x86, a often misunderstood topic along with various operations which can be done with memory and its allocation. The section on Inter Process Communication (IPC) explains the various mechanisms of IPC on Linux such as shared memory, message passing etc.
Each of the large sections has a running project based on a database program. Students need to write the various pieces of the database program as they learn new concepts. Part II of the course explains different kinds of virtualization which students may have come across. It also introduces the latest industry coined acronyms around these such as Cloud Computing, Platform as a Service (PAAS) etc. The purpose of touching upon these topics is to make sure that the student understands the underlying concepts involved here and no longer treats them as black-boxes. This course can be completed in around 2 weeks time.
This course is taught by Anup Gangwar. He will also be moderating the course forums.
This course assumes a sufficient background in the 'C' programming language and familiarity with programming on a GNU/Linux. If you have experience in working with any other UNIX system, then it is fine too. In case you do not have the required background, we recommend that you take up the courses User Level Linux and Programming With C to gain sufficient background before taking up this course.
This course is at an intermediate level. Most of the topics are treated at a reasonable depth. Goal is to expose you to the various system programming tasks and libraries so that you are able to gather more information on your own as needed.
The objective of this course as outlined above is to help you understand common system programming tasks. After finishing this course, you will be able to understand the guts of your programs better as well as be suitable for starting positions in a large number of companies.