C++ Unleashed

C++ is an object-oriented language developed by Dr. Bjarne Stroustrup in the early 1980s and released commercially in 1985. During that time he was working on Distributed Operating System. He was very much influenced by Simula67 and wanted to write systems programs in its style but with high efficiency. So, what he did was borrowed the features of Simula67 and incorporated it with C. Thus was born the initial version called “C with Classes”. This was later re-christened as C++.

C++ today is the most popular and widely used Object Oriented Language. The object-oriented paradigm is built on the foundation laid by the structured programming concepts and data abstraction. The fundamental change in OOP is that a program is designed around the data being operated upon rather than upon the operations themselves. The basic idea behind object-oriented language is to combine into single unit, both, the data and the functions that operate on the data. C++ incorporates the popular features of OOP like Classes, Objects, Inheritance and Polymorphism, Templates and Exception Handling at the same time retaining the classic features of C.

From very small applications to large and distributed applications across network it is used. Some of the very well known software are – Adobe Products, Maya, Amazon.com, Google search engine, IBM – O/S 400, Intel V-tune, Scansoft – Dragon Naturally Speaking Software,Symbian OS and so on. The list is endless.

The curriculum below aims at introducing the students to all those aspects of the language that a C++ learner should know to be considered as C++ Competent.

The program is divided in three parts: –

  1. C++ Basics
  2. Data structure Using C++
  3. C++ – The Advanced Topics

C ++ Basics

Module 1: C++ – The Language

Introduction

  • A brief history of C and C++
  • C’s Continuing role
  • C versus C++
  • A brief description of C++
  • The main() function

Writing Simple C++ Programs

  • Anatomy of C++ program
  • Identifiers
  • Keywords
  • The standard Output Stream
  • Variables
  • Constants
  • Expressions
  • Assignments
  • Comma-separated Declarations
  • Operator in Expressions
  • Precedence and associativity
  • When an expression is not evaluated
  • Initializers
  • Type Conversion
  • Console Input and output

Functions

  • The function
  • Arguments versus Parameter
  • Declaring Functions by using prototypes
  • Defining and Calling Functions
  • Returning from Functions
  • Returning Values from Functions
  • Passing and Using Arguments
  • Unnamed Function Parameters
  • Default function arguments
  • Inline Functions
  • Recursion
  • Overloaded Functions
  • Type-safe Linkages
  • Linkage specifications

Program Flow Control

  • Statement Blocks
  • Selection: Tests
  • Iteration: Looping
  • Loop Control
  • Jumping: goto
  • Invalid Uses of goto
  • C++ goto versus C goto
  • Fixing an Invalid goto
  • Should you Use goto?

More about C++ Data

  • Scope
  • Storage Classes
  • Initial Default Values
  • Type Qualifiers
  • User-Defined Data Types
  • The Union Data Type
  • Arrays

Pointers, addresses and Reference Variables

  • Pointers and Addresses
  • The sizeof operator
  • C-Style Typecasts
  • Command-line Arguments: argc and argv
  • Program Memory Architecture
  • Recursion
  • Reference Variables

The Preprocessor

  • Pre-processing directives
  • Including files
  • Macros
  • Compile-Time Conditional Directives
  • Other Standard Directive

Structures and Classes

  • The C++ Class
  • The characteristics of Data Type
  • User-defined Data type
  • Structure with functions
  • Access Specifiers
  • Procedural programming versus oops
  • The class versus the structure
  • Unions

Function Templates

  • Function template Basics
  • Function Specialization
  • Sorting with a template
Top
Module 2: C++ & OOPS

C++ Classes

  • Designing a class
  • Constructor
  • Destructor
  • Class Conversions
  • Manipulating Private Data Members
  • Friends
  • Using Destructors
  • Overloaded Assignment Operators
  • The this Pointer
  • Arrays of Class Objects
  • Static Members
  • Classes and the Heap
  • Copy constructor
  • References in classes
  • Constructor Parameter Initialization list
  • Mutable Data Members
  • Management of class Source and Object Files

Overloaded Operators

  • To overload or not to overload
  • A class for overloaded operators
  • The Rules of Operator Overloading
  • Binary Arithmetic Operator
  • Class Member Operator Function
  • Non-member Operator Functions
  • Relational operators
  • More assignment operators
  • Auto-increment and Auto-decrement
  • Unary plus and minus operators
  • Subscript Operator
  • Pointer-to-member operator

Class inheritance

  • Inheritance
  • Specialized Data Abstraction Class Design
  • Problem Domain Class Hierarchy Design
  • Calling virtual functions by reference
  • Calling non-virtual functions by reference
  • Overriding the Virtual Function Override
  • Virtual functions without Derived Overrides
  • Virtual Destructors
  • Polymorphism

Multiple Inheritance

  • Multiple Base Classes
  • Redefining the Property System
  • Overriding members with Multiple Inheritance
  • Ambiguity with multiple inheritance
  • Virtual Base Class

Class Template

  • Class Template Basics
  • Declaring Multiple Objects of a Class Template
  • Calling Class Template Member Functions
  • Declaring Multiple Parameters
  • A Bounded Array Class Template
  • When to use class templates
  • A linked list template
  • Template Specialization
  • Default Class Template Arguments

Object-Oriented Programming

  • The object-oriented Program
  • The Object
  • Abstraction
  • Encapsulation
  • Methods and messages
  • Functional Methods
  • Data Type Methods
  • Implicit Conversion Method
  • Member Functions
  • Inheritance
  • Single Inheritance
  • Multiple Inheritance
  • Class Relationship
  • Polymorphism
Top
Module 3: C++ – The Standard Library

The std :: string class

  • Constructing strings
  • C++ – The I/O Operations
  • Input/Output Streams
  • The std::complex Class
  • The standard Template Library
  • Standard Exceptions

Formatting iostreams and the stringstream classes

  • Formatted output
  • Manipulators, Flags, and Member Functions

File I/O Stream

  • The File stream Class Hierarchy
  • The std :: ofstream Class
  • The ifstream Class
  • Binary and Text Files
  • The std :: fstream class
Top

Data structure using C++

Module 4: Data Structure

Programming Performance

  • Space complexity
  • Time complexity
  • Asymptotic notation
  • Big Oh
  • Omega
  • Theta
  • Little Oh
  • Performance measurement

Linked List

  • List as ADT
  • Types of Linked List
  • Formula Based representation
  • Application

Stacks

  • Stack as ADT
  • Formula Based representation
  • Linked Representation of stack
  • Application

Queues

  • Queue as ADT
  • Types of queue
  • Formula Based representation
  • Linked Representation of stack
  • Application

Trees

  • Binary trees
  • Properties of a binary tree
  • Operations
  • Traversal
  • Binary tree as ADT
  • Applications

Search trees

  • Binary Search Tree
  • AVL tree
  • Red Black Tree
  • B Tree

Graphs

  • Graph as ADT
  • Diagraph and non-directed graph
  • Representation of networks
  • Applications
Top

C++ – The Advanced Topics

Module 5: C++ – The Standard Template Library (STL)

Introduction to STL

  • Why STL ?
  • The STL Programming model
  • Sequence
  • Container Adapters
  • Associative Containers
  • Iterators
  • Algorithms
  • Predicates
  • Allocators

Sequence

  • Introducing the Sequence Containers
  • The vector Class Template
  • The deque Class Template
  • The List Class Template
  • The std :: stack Container Adaptor
  • The std :: queue Container Adaptor
  • The std :: priority queue Container Adaptor

Associative Containers

  • The std :: set Class Template
  • The std :: multiset Class Templates
  • The std :: map class Template
  • The std :: multimap Class Template
  • The std :: bitset Class Template
  • User-Defined Predicates

Generic Algorithms

  • Introduction to Generic Algorithms
  • Non-Modifying Sequence Algorithms
  • Mutating Sequence Algorithms
  • Number Algorithms

Iterators

  • Introduction to Iterators
  • Input Iterators
  • Output Iterators
  • Forward Iterators
  • Bi-directional Iterators
  • Random-Access Iterators
  • Special-Purpose Iterators

Exception Handling

  • Exception Handling In C
  • Exception Handling In C++
  • The try Block
  • The catch Exception Handler
  • The throw Statement
  • The try/throw/catch Sequence
  • Exception specification
  • Unexpected Exceptions
  • Catch-All Exception Handlers
  • Throwing an Exception from a Handler
  • Uncaught Exceptions
  • Selecting Among Thrown Exceptions
  • Exceptions and Unreleased Resources
Top
Module 5: C++ – Classics

Namespaces

  • Introducing Namespaces
  • Referring to Members of a Namespace
  • Using namespace Statement
  • Defining a namespace
  • Nested namespaces
  • Unnamed Namespaces
  • Namespace Aliases

New-Style Casts and RTTI

  • New-Style Cast
  • Runtime Type Information (RTTI)

Locales

  • Elements of Internationalization
  • The std :: locale Class
  • Creating a Locale Object
  • Creating a Mixed Locale
  • Streams and Locales
  • Manipulating Facets

UML and C++

  • What is UML?
  • Design and Implementation
  • Coding Standardisation
Top
Module – 6: C++ under Linux

Linux and Open Source
Linux – the OS

  • Features of Linux as OS

Writing a C++ Program under Linux

  • Using different editors for writing C++ programs
  • Compiling a stand alone program in C++
  • Using qmake utility to compile multiple program files

Graphics programming under Linux using QT

  • Concept of widget
  • Showing a hello world widget
  • Compound widget
  • Adding signals to widgets
  • Writing slots for signals
  • Using QT Designer
Top
Module – 7: Multi-Threading in C++

Introduction to threads
Multithreading in QT

  • QThread
  • QWaitCondition
  • QMutex
  • QSemaphore

QThread

  • Creating first thread
  • Compiling thread
  • First Thread program
  • Wait function
  • Thread handle
  • Multiple threads
  • Finished and running function
Top
Module – 8: Windows Programming and C++

Introduction to MFC

  • Win32API and MFC Libraries
  • Visual C++ components used
  • Revisiting OOPs
  • CWinApp class
  • CFrameWnd class
  • Message Maps
  • Message Routing
  • CMenu class
  • Shortcut menus
  • User Interface classes

Device Context Manipulation

  • Conceptual Framework for Interactive Graphics
  • Device Contexts
  • GDI Objects
  • CPen, CBrush class
  • CClientDC, CMetaFile class
  • Hierarchy of a class in MFC

Mapping Models

  • Understand the coordinate system of windows
  • MM_TEXT mapping mode
  • MM_LOMETRIC mapping mode
  • Changing Viewport and Window origin

Working with Files

  • File classes in MFC
  • Reading and Writing a file

Dialog Boxes with MFC

  • The CDialog class
  • Modal and Modeless Dialog Box
  • Processing Dialog Box messages

Common Dialog Box Library

  • Using Common Control in a Dialog box
  • Common Dialog Library
  • CFile Dialog Box
  • CColor Dialog Box
  • Font Dialog Box
  • Print Dialog Box
  • Find and Replace Dialog Box
Top
Module – 9: C++ – Googlies
  • Traps & Pitfalls
  • Tips to approach C++ Questions
  • Sample Test Papers for Campus

Comments are closed.