This repository contains the source code for the 42 Cpp modules. Each module is a different project that covers a specific topic in C++ programming. The modules are part of the 42 Cpp curriculum and are meant to be completed in order.
# | Module | Introduction | Topics Covered | Language | Status | Comments |
---|---|---|---|---|---|---|
00 | Module 00 | Introduction to C++ | Namespaces, classes, member functions, stdio streams, initialization lists, static, const | C++ | ✅ 80 | Basic C++ concepts |
01 | Module 01 | Memory allocation, pointers | Memory allocation, pointers to members, references, switch statement | C++ | ✅ 100 | Intermediate concepts |
02 | Module 02 | Ad-hoc polymorphism, operator overloading | Ad-hoc polymorphism, operator overloading, Orthodox Canonical class form | C++ | ✅ 80 | Advanced concepts |
03 | Module 03 | Inheritance and Encapsulation | Inheritance, constructors and destructors chaining, class hierarchies, access specifiers, special member functions | C++ | ✅ 80 | Inheritance and encapsulation concepts |
04 | Module 04 | Polymorphism, Abstract classes | Abstract classes Polymorphism, abstract classes, interfaces, pure virtual functions | C++ | ✅ 80 | Polymorphism and abstract concepts |
05 | Module 05 | Repetition and Exceptions | Try/catch blocks, exceptions | C++ | ✅ 100 | Exception handling |
06 | Module 06 | C++ casts | Different types of casts (static_cast, dynamic_cast, reinterpret_cast, const_cast) | C++ | Type conversion | |
07 | Module 07 | C++ templates | Function templates, class templates | C++ | ✅ 100 | Template programming |
08 | Module 08 | Templated containers, iterators, algorithms | STL, containers, algorithms | C++ | ✅ 100 | Standard Template Library |
09 | Module 09 | STL | Standard Template Library | C++ | ✅ 100 | Advanced STL usage |
Module | Exercise | Objectives | Status |
---|---|---|---|
00 | Exercise 00: Megaphone | Implement a simple program to repeat input in uppercase | ✅ Done |
00 | Exercise 01: My Awesome PhoneBook | Create a simple phonebook using classes and object-oriented programming | ✅ Done |
00 | Exercise 02: The Job Of Your Dreams (Optional) | Recreate a lost file for a banking application | ⏭ Skipped |
01 | Exercise 00: BraiiiiiiinnnzzzZ | Introduction to memory allocation and class implementation | ✅ Done |
01 | Exercise 01: Moar brainz! | More practice with memory allocation and pointers | ✅ Done |
01 | Exercise 02: HI THIS IS BRAIN | Advanced memory management techniques | ✅ Done |
01 | Exercise 03: Unnecessary violence | Implementing classes with complex behaviors | ✅ Done |
01 | Exercise 04: Sed is for losers | More advanced C++ features and file operations | ✅ Done |
01 | Exercise 05: Harl 2.0 | Working with advanced class implementations | ✅ Done |
01 | Exercise 06: Harl filter | Filtering and managing complex data structures | ✅ Done |
02 | Exercise 00: My First Class in Orthodox Canonical Form | Implementing a class in canonical form | ✅ Done |
02 | Exercise 01: Towards a more useful fixed-point number class | Enhancing the fixed-point number class | ✅ Done |
02 | Exercise 02: Now we're talking | Implementing advanced features in the fixed-point class | ✅ Done |
02 | Exercise 03: BSP (Optional) | Implementing Binary Space Partitioning | ⏭ Skipped |
03 | Exercise 00: Aaaaand... OPEN! | Implementing a basic class with specific attributes and functions | ✅ Done |
03 | Exercise 01: Serena, my love! | Creating a derived class with specific constructors and functions | ✅ Done |
03 | Exercise 02: Repetitive work | Implementing another derived class with specific attributes and functions | ✅ Done |
03 | Exercise 03: Now it’s weird! (Optional) | Creating a complex class that inherits from multiple classes | ⏭ Skipped |
04 | Exercise 00: Polymorphism | Implementing polymorphism in classes | ✅ Done |
04 | Exercise 01: I don’t want to set the world on fire | Implementing deep copies and managing dynamic memory | ✅ Done |
04 | Exercise 02: Abstract class | Implementing abstract classes to prevent instantiation of base classes | ✅ Done |
04 | Exercise 03: Interface & recap (Optional) | Implementing interfaces and ensuring understanding of module concepts | ⏭ Skipped |
05 | Exercise 00: Mommy, when I grow up, I want to be a bureaucrat! | Implementing exception handling in a bureaucrat class | ✅ Done |
05 | Exercise 01: Form up, maggots! | Creating a Form class with exception handling | ✅ Done |
05 | Exercise 02: No, you need form 28B, not 28C... | Implementing abstract classes with concrete derived classes | ✅ Done |
05 | Exercise 03: At least this beats coffee-making | Creating an Intern class to generate forms | ✅ Done |
06 | Exercise 00: Conversion of scalar types | Implementing type conversion between scalar types | ✅ Done |
06 | Exercise 01: Serialization | Converting between pointers and integer types | ✅ Done |
06 | Exercise 02: Identify real type | Identifying actual types at runtime | ✅ Done |
07 | Exercise 00: Start with a few functions | Creating template functions for basic operations | ✅ Done |
07 | Exercise 01: Iter | Implementing a template function to iterate over arrays | ✅ Done |
07 | Exercise 02: Array | Creating a template class for arrays | ✅ Done |
08 | Exercise 00: Easy find | Implementing a template function to find elements in containers | ✅ Done |
08 | Exercise 01: Span | Creating a class to store integers and find spans | ✅ Done |
08 | Exercise 02: Mutated abomination | Modifying the std::stack container to make it iterable | ✅ Done |
09 | Exercise 00: Bitcoin Exchange | Creating a program to calculate bitcoin value based on exchange rates | ✅ Done |
09 | Exercise 01: Reverse Polish Notation | Implementing a program to evaluate RPN expressions | ✅ Done |
09 | Exercise 02: PmergeMe | Creating a program using the merge-insert sort algorithm | ✅ Done |