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.
Strong focus on hands-on experience
Learn not only 'C++' language, but also object oriented design and software engineering
Insight into effective use of Standard Template and other popular libraries
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
Students who want to learn object oriented programming
Job seekers or fresh hires who are looking forward to or starting a career in Embedded Systems, Semiconductors, Networking or any other high-tech area having little or no C++ programming experience
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.
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.
Pre-requisites and goals of the course
Hello world program
Software tools flow on UNIX for C++
Compiling, linking and debugging
Classes and Objects
Need for classes
Layout of a class
Object initialization and destruction
Dynamic object creation and deletion
Why is overloading required
Passing objects and function arguments
Calling C functions from C++
Need for operator overloading
Overloading unary operators
Overloading binary operators
Implicit copies with overloaded operators
Polymorphism and Virtual Functions
What is polymorphism
Need for polymorphism
Where is polymorphism useful
Calling base class functions
Strongly and weekly typed languages
Why use consts
Pointer to consts and const pointers
Const functions arguments
Introduction to Templates
What are templates
Utility and overhead of using templates
Operations on strings
Reading from and writing to files
What is unittesting
Introduction to Google test library
Standard Template Library
Introduction to STL
Set and bitset
Debugging C++ Programs
Common pitfalls and tips
Debugging STL errors
Debugging with gdb
What are design patterns and how to use them
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
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.