Programming With C++ [PCPP]

At a Glance

Can be completed in 2 Week
Total Lectures 20
Course Validity 7 Week

Subscribe to this course

Basic      (INR) Standard (INR) Professional (INR)
Choose your package


Sample lectures on YouTube

Course Details

Programming With C++ (PCPP) course is designed to teach you programming in the 'C++' language on the UNIX platform. It focuses on standard language features along with best practices, flows and exposure to work with a large software. The course has toy exercises as well as a running example of a big software system, around which advanced exercises are based. This course can be completed in around three weeks time. We also suggest you to go through our blog on Do you really know 'C' and 'C++' to gain an insight into why it makes sense to learn these languages.


  1. Strong focus on hands-on experience
  2. Learn not only 'C++' language, but also object oriented design and software engineering
  3. Insight into effective use of Standard Template and other popular libraries
  4. Discuss with the instructors on the forums as much as you want

Instructors and Forum Moderators

This course is taught by Anup Gangwar and Basant Dwivedi. They will be moderating the course forums as well as lead the contact sessions.


This course assumes a sufficient background in the 'C' programming language and familiarity with Linux as the online laboratory is based on it. If you have experience in working with any other UNIX system, then it is fine too. We recommend that you take up the courses User Level Linux as well as Programming With C to gain sufficient background before taking up this course in case you are not very comfortable with the pre-requisites.

Who should take the course


This course is an intermediate level course. Most of the topics are treated in depth. Further, at every stage, there is also focus to correlate how compiler treats a particular language feature. This has been done to provide an insight into how to predict performance of the program.

Detailed Description

The first chapter brings out the difference with C. Various C++ concepts and those of Object Oriented Programming (OOP) are introduced in the next few chapters. Constantness is clearly explained as well as the reasons as to why incorporating this is a good practice.

Standard Template Library (STL) forms a very integral part of learning C++. This is introduced along with a detailed discussion of several of its data structures and algorithms. We also discuss common pitfalls and performance considerations here along with debugging programs incorporating STL.

The last few sections deal with concepts and practices for working with a large software. These include commonly used libraries and design patterns etc. Please note that this course is not a detailed tutorial to any of these, rather only an introduction. Detailed table of content is as follows.

  1. Pre-requisites and goals of the course
  2. Introduction
    • Hello world program
    • Software tools flow on UNIX for C++
    • Compiling, linking and debugging
    • Template makefile
    • Coding conventions
  3. Classes and Objects
    • Need for classes
    • Layout of a class
    • Object initialization and destruction
    • Derived classes
    • Scopes
    • Dynamic object creation and deletion
    • References
    • Namespaces
  4. Functions
    • Why is overloading required
    • Overloading
    • Default arguments
    • Passing objects and function arguments
    • Inline functions
    • Static functions
    • Return values
    • Name mangling
    • Calling C functions from C++
  5. Operator Overloading
    • Need for operator overloading
    • Overloading unary operators
    • Overloading binary operators
    • Implicit copies with overloaded operators
  6. Polymorphism and Virtual Functions
    • What is polymorphism
    • Need for polymorphism
    • Where is polymorphism useful
    • Abstract classes
    • Type casting
    • Calling base class functions
    • Performance considerations
  7. Constants
    • Strongly and weekly typed languages
    • Why use consts
    • Pointer to consts and const pointers
    • Const functions arguments
  8. Introduction to Templates
    • What are templates
    • Utility and overhead of using templates
    • Templatized functions
    • Templatized classes
  9. Strings
    • Creating strings
    • Operations on strings
    • Efficiency considerations
    • String conversions
  10. Streams
    • Introduction
    • Formatted output
    • Input
    • Reading from and writing to files
    • stringstream
  11. Unittesting
    • What is unittesting
    • xUnit architecture
    • Introduction to Google test library
  12. Standard Template Library
    • Introduction to STL
    • STL containers
    • STL iterators
    • STL algorithms
  13. STL Containers
    • List
    • Vector
    • Map
    • Set and bitset
    • Performance considerations
  14. STL Algorithms
    • Sorting
    • Searching
  15. Debugging C++ Programs
    • Common pitfalls and tips
    • Debugging STL errors
    • Debugging with gdb
  16. Design Patterns
    • What are design patterns and how to use them
    • Singleton pattern
    • Factory pattern
    • Callbacks
    • Model-view-controller
  17. Boost and Other C++ Libraries
    • Upside and downside of using external libraries
    • Boost library: introduction
    • Boost library: strings
    • Boost library: multi-dimensional arrays
    • Boost library: graphs and graph algorithms
    • Standard math library
  18. References

The 'C++' programming course as outlined above will help you start writing 'C++' programs in short span of time. The course will also expose several software engineering tools to help you become more productive. Further, our compiler centric way of treating various language features will help you quickly analyze the performance of your program which will eventually lead to writing efficient code.

About Us | Resources | Contact Us
Terms of Use | Privacy Policy
© 2016 VirtuQ™ Education All right reserved.