C/C++ PROGRAMMING

 This course is specially designed for University and College students to learn C / C++ from basic to advance level. C++ is the object-oriented version of C that has been widely used to develop enterprise and commercial applications. Created by Bjarne Stroustrup, C++ became popular because it combined traditional C programming with object-oriented programming (OOP) features.  If you are curious to start your career in Software Development and Software Engineering then this course is the best starting point for you.

Course Contents

  1. Introduction to C++ Programming
  2. Flow Chart
  3. Basic Input and Output
  4. Flow Control
  5. Conditional Statements
  6. Loops
  7. Arrays
  8. Functions
  9. Pointers
  10. Structures
  11. Classes
  12. Objects

Course Outline for C and C++ Compiled  By Sardar Azeem 

Week 1: Introduction to C Programming

  • Day 1: Overview of C and C++, Compiler Installation (GCC), and IDEs
    • Intro to programming, what is C, and installing necessary tools (like Code::Blocks, Visual Studio, or GCC).
  • Day 2: Basic Syntax in C
    • Data types, variables, keywords, constants, basic input/output (printf, scanf)
  • Day 3: Operators and Expressions
    • Arithmetic, relational, logical, bitwise, and assignment operators
  • Day 4: Control Structures I
    • If-else, switch-case, nested if, loops (for, while, do-while)
  • Day 5: Functions and Recursion
    • Writing functions, call by value, call by reference, recursion basics
  • Day 6: Arrays and Strings in C
    • One-dimensional and two-dimensional arrays, string manipulation (strlen, strcpy, strcat, etc.)
  • Day 7: Weekend Review
    • Practice exercises on control structures, functions, arrays

Week 2: Advanced C Programming

  • Day 8: Pointers
    • Introduction to pointers, pointer arithmetic, pointers with arrays and functions
  • Day 9: Dynamic Memory Allocation
    • malloc, calloc, free, realloc
  • Day 10: Structures and Unions
    • Defining and using structures, nested structures, unions, and bit-fields
  • Day 11: File Handling
    • File I/O operations (fopen, fclose, fread, fwrite, fscanf, fprintf)
  • Day 12: Preprocessor Directives and Macros
    • #define, #include, macros, conditional compilation
  • Day 13: Review and C Project Assignment
    • Practice questions, debugging exercises, and a small C-based project
  • Day 14: Weekend Project
    • Work on the project assigned (such as a file management system or a mini calculator)

Week 3: Transition to C++ Programming

  • Day 15: Overview of C++
    • Introduction to Object-Oriented Programming (OOP), comparison of C and C++, basic syntax in C++
  • Day 16: Functions in C++
    • Function overloading, inline functions, default arguments, pass by reference
  • Day 17: Introduction to Classes and Objects
    • Defining classes, creating objects, member functions, accessing data members
  • Day 18: Constructors and Destructors
    • Constructor types, overloading constructors, destructors
  • Day 19: Static Members and Friend Functions
    • Static variables, static member functions, friend functions and classes
  • Day 20: Review and Coding Practice
    • Solve problems related to functions, classes, and constructors
  • Day 21: Weekend Review
    • Deep dive into C++ concepts practiced during the week, working on small projects

Week 4: Advanced C++ OOP Concepts

  • Day 22: Operator Overloading
    • Overloading unary and binary operators, friend operator functions
  • Day 23: Inheritance I
    • Single, multilevel inheritance, constructor invocation in inheritance
  • Day 24: Inheritance II
    • Multiple and hierarchical inheritance, virtual base classes
  • Day 25: Polymorphism I
    • Function overriding, virtual functions, runtime polymorphism
  • Day 26: Polymorphism II
    • Abstract classes, pure virtual functions
  • Day 27: Templates in C++
    • Function templates, class templates, specialization
  • Day 28: Weekend Project
    • Develop a class-based C++ project such as a simple banking system or employee management system

Week 5: Advanced C++ Features

  • Day 29: Exception Handling
    • Try, catch, throw, nested try-catch blocks, exception hierarchy
  • Day 30: File Handling in C++
    • File streams, reading from and writing to files, file pointers
  • Day 31: Standard Template Library (STL) I
    • Introduction to STL, vectors, lists, and iterators
  • Day 32: Standard Template Library (STL) II
    • Sets, maps, algorithms (sort, find, etc.)
  • Day 33: Namespaces and Dynamic Memory in C++
    • Using namespaces, memory management in C++ (new, delete)
  • Day 34: Review and Practice
    • Practice exercises on inheritance, polymorphism, templates, and STL
  • Day 35: Weekend Review
    • Complete exercises on exception handling, STL, and file handling

Week 6: Final Projects and Applications

  • Day 36: Introduction to Algorithms and Data Structures in C/C++
    • Basic sorting (bubble, selection, quick sort), searching (linear, binary search)
  • Day 37: Linked Lists and Stacks
    • Singly and doubly linked lists, stack implementation using arrays and linked lists
  • Day 38: Queues and Trees
    • Circular queue, priority queue, introduction to trees, binary trees, traversals
  • Day 39: Final Project Discussion
    • Discuss final project requirements, outline structure and features
  • Day 40: Start Final Project
    • Work on a medium-sized project (such as a mini-compiler, a library system, or a basic game)
  • Day 41: Continue Working on Final Project
    • More coding and implementation for the final project
  • Day 42: Project Submission and Review
    • Final project submission, code review, discussion on optimizations and improvements

Week 7-8: Additional Topics and Practice (Optional)

For these two weeks, you can focus on any of the following topics or spend time deepening concepts:

  • Advanced Data Structures (Heaps, Graphs)
  • Multithreading in C++
  • More practice with real-world projects
  • Deep dive into algorithms for competitive programming
  • Revisiting complex C++ OOP topics (virtual destructors, multiple inheritance pitfalls, etc.)

This course provides enough time to grasp fundamental to advanced concepts in C/C++ and complete meaningful projects that solidify understanding.