A comprehensive 7-day C++ bootcamp designed to take you from basics to intermediate-level Object-Oriented Programming concepts. This repository contains all the code examples, hands-on exercises, and resources covered during the bootcamp.
- About
- Prerequisites
- Getting Started
- Project Structure
- Daily Curriculum
- Extras
- Certification Task
- Contributing
- License
This bootcamp is organized by ACES (Association of Computer Engineering Students) and covers fundamental to intermediate C++ concepts including:
- Object-Oriented Programming (OOP) principles
- C++ language fundamentals
- Functions, Arrays, and Pointers
- Classes and Objects
- Inheritance and Polymorphism
- Operator Overloading and File I/O
- Templates and Exception Handling
Before starting this bootcamp, ensure you have:
- Basic understanding of programming concepts
- A C++ compiler installed (g++, clang++, or MSVC)
- An IDE or text editor (VS Code, Code::Blocks, CLion, etc.)
- Git installed for version control
# Check if g++ is installed
g++ --version
# If not installed (Ubuntu/Debian)
sudo apt-get install g++
# If not installed (macOS)
brew install gcc
# If not installed (Windows)
# Install MinGW or use Visual Studio-
Clone the repository
git clone https://github.com/adhikareeprayush/CPP-7-Days-Bootcamp.git cd CPP-7-Days-Bootcamp -
Navigate to a day's folder
cd day1_intro_oop_basics -
Compile and run a C++ file
g++ -o output hello_world.cpp ./output
CPP-7-Days-Bootcamp/
├── README.md # Main documentation
├── day1_intro_oop_basics/ # Day 1: Introduction & OOP Basics
│ ├── hello_world.cpp
│ └── compare_c_vs_cpp.cpp
├── day2_language_fundamentals/ # Day 2: C++ Fundamentals
│ ├── basic_calculator.cpp
│ ├── io_manipulators_demo.cpp
│ └── main_with_arguments.cpp
├── day3_functions_arrays/ # Day 3: Functions & Arrays
│ ├── array_function.cpp
│ ├── array_pointer.cpp
│ ├── calculate_area.cpp
│ ├── default_message.cpp
│ ├── multiply_overload.cpp
│ ├── pass_by_val_vs_ref.cpp
│ ├── pointers.cpp
│ ├── power.cpp
│ ├── square_cube.cpp
│ ├── strings.cpp
│ └── problems/
│ ├── array_sorting.cpp
│ ├── max_array.cpp
│ └── min_array.cpp
├── day4_classes_objects/ # Day 4: Classes & Objects
│ ├── README.md
│ ├── class.cpp
│ ├── constructors.cpp
│ ├── count.cpp
│ ├── descructors.cpp
│ └── person.cpp
├── day5_inheritance_polymorphism/ # Day 5: Inheritance & Polymorphism
│ ├── README.md
│ ├── access.cpp
│ ├── inheritance.cpp
│ ├── invocation_constructor.cpp
│ ├── polymorphism.cpp
│ └── practice1-3.cpp
├── day6_operator_overloading_file/ # Day 6: Operator Overloading & File I/O
│ ├── README.md
│ ├── add.cpp
│ ├── coordinates.cpp
│ ├── file.cpp
│ ├── friend_function_overloading.cpp
│ └── friend.cpp
└── day7_templates_exception_handling/ # Day 7: Templates & Exception Handling
└── README.md
Objectives:
- Understand why OOP is needed.
- Get introduced to C++ syntax and structure.
Topics:
- Problems with Procedure-Oriented Programming
- What is OOP? Core concepts: Class, Object, Encapsulation, Abstraction, Inheritance, Polymorphism
- Advantages of OOP
- Overview of C++: History, Features, Use Cases
- First C++ Program (
iostream,main(),cout,cin) - Compile and run in any IDE or terminal
Hands-On:
- Write and run a basic C++ program
- Compare simple C vs. C++ code structure
Day 1/2 Slides:
Objectives:
- Learn C++ syntax and data types
- Understand control flow
Topics:
- Keywords, Identifiers, Data Types
- Variables, Constants (
const) - Operators and Expressions
- Conditional Statements (
if,switch) - Loops (
for,while,do-while) cinandcout,endl, manipulators
Hands-On:
- Create a calculator using conditionals and loops
- Use I/O manipulators for formatting output
Day 1/2 Slides:
Objectives:
- Learn about modular programming
- Understand arrays and basics of pointers
Topics:
- Function syntax, declaration/definition
- Function Overloading
- Default Arguments
- Pass by Value vs Reference
- Arrays: 1D, basics of 2D
- Intro to Pointers and Strings
Hands-On:
- Write overloaded functions (e.g.,
add(int, int)andadd(double, double)) - Pass arrays to functions
- Reverse a string using pointer arithmetic
Day 3 Slides:
Objectives:
- Understand class-based programming
- Work with constructors and destructors
Topics:
- Defining Classes and Objects
- Access Specifiers (
private,public,protected) - Member Functions
- Constructors (default, parameterized)
- Destructors
thispointer- Static members
Hands-On:
- Class
Studentwith multiple constructors - Use static data for count of created objects
Objectives:
- Implement and explore inheritance
- Use virtual functions
Topics:
- Inheritance: single, multilevel
- Base and Derived class relationships
- Constructor invocation order
- Polymorphism basics
- Virtual functions
- Abstract classes (pure virtual functions)
Hands-On:
- Base class
Person, derived classTeacher - Virtual function example with base class pointer
Objectives:
- Understand operator overloading
- Learn how to handle basic file operations
Topics:
- Operator Overloading:
+,==as member functions - Friend function for overloading
- File I/O:
fstream,ifstream,ofstream - Opening, writing, reading from text file
Hands-On:
- Overload
+for aComplexnumber class - Create a student record manager that writes/reads from file
Objectives:
- Write reusable code with templates
- Handle errors with exceptions
Topics:
- Function Templates
- Class Templates (intro only)
- Try-Catch-Throw Exception Model
- Catching multiple exceptions
throwandrethrow
Hands-On:
- Template for swapping two values
- Exception handling for division by zero
new/delete– dynamic memory basics- STL Introduction:
vector,stack,map(quick demo) - Mini Project Suggestion: Student Report Card Generator or Inventory Management
- Code Push: Raise Pull Request for the code till day 7 to this repo
- Format:
- BCT: Raise PR in
BCTfolder, Rename your folder on your name For eg.prayush - BEI: Raise PR in
BEIfolder, Rename your folder on your name For eg.prayush
- BCT: Raise PR in
- Mini Project Submission:
- Submit the mini project in the same repo by raising another PR.
- Create
projectfolder inside your folder and put the project there.
Contributions are welcome! If you'd like to contribute:
- Fork the repository
- Create a new branch (
git checkout -b feature/improvement) - Make your changes
- Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/improvement) - Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Prayush Adhikari
- GitHub: @adhikareeprayush
If you found this bootcamp helpful, please consider giving it a star! ⭐
Made with ❤️ by ACES