Welcome to the repository for the C++ projects from the School 42 curriculum. This repository contains various projects designed to teach and reinforce C++ programming concepts through practical applications. Each project aims to develop different aspects of C++ programming and system design.
The C++ curriculum at School 42 is divided into several modules, each focusing on different areas of C++ programming, including fundamental concepts, object-oriented programming, templates, memory management, and more. Below is a brief description of the general objectives and topics covered in these projects.
-
Introduction to C++
- Objective: Get acquainted with the basic syntax and structure of C++. Learn fundamental programming concepts and the basics of object-oriented programming.
- Key Topics: Functions, variables, data types, control flow.
-
Object-Oriented Programming (OOP)
- Objective: Understand and apply OOP principles such as classes, inheritance, and polymorphism. Dive deeper into constructors, destructors, and encapsulation.
- Key Topics: Classes and objects, inheritance, polymorphism, encapsulation.
-
Advanced OOP and Design Patterns
- Objective: Explore more advanced OOP concepts and design patterns. Implement and understand concepts like operator overloading, abstract classes, and various design patterns.
- Key Topics: Operator overloading, abstract classes, design patterns (e.g., Singleton, Factory).
-
Templates and Standard Template Library (STL)
- Objective: Learn about generic programming using templates and the STL. Understand how to use and implement STL containers, iterators, and algorithms.
- Key Topics: Function and class templates, STL containers (vector, map, set), algorithms.
-
Memory Management
- Objective: Gain proficiency in dynamic memory management, including the use of smart pointers and resource management techniques.
- Key Topics: Dynamic memory allocation, smart pointers (
std::unique_ptr
,std::shared_ptr
), RAII.
-
File I/O and Serialization
- Objective: Implement file input/output operations and data serialization techniques to handle data storage and retrieval.
- Key Topics: File streams (
ifstream
,ofstream
), binary and text file operations, serialization.