C/C++ has become one of the most dominating programming language in software industry. It is used in wide spectrum of domains like banking, embedded, telecommunication, graphics, animation, game development and huge number of complex softwares like protocol libraries, device drivers, compilers, operating systems, browsers, web servers, audio players, video players, office softwares, drawing softwares and window managers.

You can find a list of popular softwares developed with C/C++ here. Recently there are lot of activities happening in C/C++ community. The recent standardization works (C++11, C++14 & C++17) which introduced many new features like in build thread, regex, lambda and etc will further increase the usage of C/C++ programming language.

This tutorial is not for beginners looking to learn basic C/C++ programming. Instead the reader is expected to have the following prerequisites so he / she can compile the sample programs shown in the tutorial and view the output as they learn for clear understanding of the topics covered

  • Basic programming knowledge in Linux platform [ learn ]
  • Good understanding of basic C/C++ programming concepts

I this tutorial you will learn some advanced topics. Any how these topics are not specific to C/C++ programming and are common to any other programming language. The purpose of this tutorial is to show how to achieve these advanced concepts in C/C++ programming language. This tutorial is completely focused on Linux / Unix like environment.

Since there is huge amount of concepts and softwares are implemented in C/C++ because of its usage in various domains it is very difficult to make a solid definition of what all topics should be covered under advanced C/C++ programming concepts. Any how from my experience the following concepts can be consider as a starting point for advanced C/C++ programming

  • Data-structures
  • Software Libraries
  • Multi Threading
  • Inter Process Communication (IPC)
  • Network Programming
  • Data Formats (XML/JSON)
  • Database Connectivity
  • Graphical User Interface (GUI)
  • Design Patterns
  • Debuggers (gdb/dbx)

Among the above topics “Data-structures” is covered extensively in academics and can find many other good tutorials by googling. The other topics are not much discussed in academics (at least in my country) and programming tutorial sites. At present tutorial is not ready for all of these topics but you can find some of these topics. I have planned to complete the other topics in future in a phased manner. One can learn these topics in any order of their interest or in the order given in the series.

next : Install Linux