Learning/db/0019.txt
Oleksandr Kozachuk 585105b31b First iteration.
2023-09-09 13:15:23 +02:00

76 lines
5.0 KiB
Plaintext

TAGS: CppPlan
=== QUESTION ===
Please create a learning plan for the modern type of C++ programming language, very similar like GPU plan. It should be for one month with weeks instead of quarters. The target group should be very advanced programmers.
==== ANSWER ====
# Modern C++ Programming: A Comprehensive One-Month Journey
**Prerequisites**:
- Extensive experience in programming.
- Good understanding of basic and intermediate concepts in C++.
## Week 1: Advanced C++ Concepts and Techniques
**Goal**: Deepen understanding of advanced C++ topics and learn about modern techniques.
1. **Advanced C++ Concepts - Goal: Understand advanced C++ concepts**
- **Primary Resource**: Effective Modern C++ by Scott Meyers (Book).
- **Alternative Resources**: More Effective C++ by Scott Meyers (Book), "Mastering the C++17 STL" by Arthur O'Dwyer.
- **Supplementary Exercise**: Implement the concepts learned by developing small programs.
- **Evaluation**: Self-assessment based on the understanding and implementation of the concepts.
- **Time Management**: Aim for 2 hours of study per day.
2. **C++ Techniques - Goal: Learn about modern programming techniques in C++**
- **Primary Resource**: C++ Templates: The Complete Guide by David Vandevoorde, Nicolai M. Josuttis, and Douglas Gregor (Book).
- **Alternative Resource**: Discovering Modern C++: An Intensive Course for Scientists, Engineers, and Programmers by Peter Gottschling.
- **Evaluation**: Self-assessment based on the understanding and implementation of the techniques.
- **Time Management**: Aim for another 2 hours of study per day.
## Week 2: Mastering Standard Template Library (STL) and Boost Libraries
**Goal**: Gain deeper understanding of the STL and Boost Libraries in C++.
1. **Standard Template Library - Goal: Master the use of STL**
- **Primary Resource**: The C++ Standard Library: A Tutorial and Reference by Nicolai M. Josuttis (Book).
- **Alternative Resource**: C++17 STL Cookbook by Jacek Galowicz.
- **Evaluation**: Self-assessment based on the understanding and implementation of STL.
- **Time Management**: Dedicate 2 hours of study per day.
2. **Boost Libraries - Goal: Understand and implement Boost Libraries**
- **Primary Resource**: Beyond the C++ Standard Library: An Introduction to Boost by Björn Karlsson (Book).
- **Alternative Resource**: The Boost C++ Libraries by Boris Schäling.
- **Evaluation**: Self-assessment based on the understanding and implementation of Boost Libraries.
- **Time Management**: Spend another 2 hours of study per day.
## Week 3: High-Performance C++ and Parallel Programming
**Goal**: Learn about optimizing C++ code and parallel programming.
1. **High-Performance C++ - Goal: Write high-performance C++ code**
- **Primary Resource**: Optimized C++ by Kurt Guntheroth (Book).
- **Alternative Resource**: C++ High Performance by Viktor Sehr, Björn Andrist.
- **Evaluation**: Self-assessment based on the understanding and ability to write optimized code.
- **Time Management**: Aim for 2 hours of study per day.
2. **Parallel Programming - Goal: Understand parallel programming in C++**
- **Primary Resource**: Pro TBB: C++ Parallel Programming with Threading Building Blocks by Michael Voss, Rafael Asenjo (Book).
- **Alternative Resource**: "Parallel and Concurrent Programming in C++ Part 1" on Coursera.
- **Evaluation**: Self-assessment based on the understanding and implementation of parallel programming.
- **Time Management**: Allocate another 2 hours of study per day.
## Week 4: Modern C++ Project and Community Engagement
**Goal**: Apply modern C++ skills in a real-world project and engage with the C++ programming community.
1. **Project - Goal: Implement a real-world project using modern C++**
- **Resource**: Choose a project that allows you to apply the advanced C++ concepts, techniques, and libraries you've learned. Examples could be a complex data processing task, a game engine, or a machine learning algorithm.
- **Evaluation**: Project review by peers or mentors.
- **Time Management**: Spend at least 4 hours a day on the project.
2. **Community Engagement - Goal: Connect with the larger C++ programming community**
- **Resource**: StackOverflow, C++ forums, LinkedIn Groups, Reddit threads.
- **Supplementary Resource**: Participate in C++ webinars, meetups, and follow leading personalities on Twitter. This will help you network with professionals and stay updated about industry developments.
- **Evaluation**: Regular participation in discussions, problem-solving.
- **Time Management**: Aim to spend at least 1 hour per day engaging with the community.
This one-month plan focuses on advanced topics in modern C++ for high-level programmers, and while there are time estimates provided, they may vary depending on individual learning speeds. The goal is to provide an intensive dive into modern C++ programming, and engagement with the programming community for exchange of knowledge and experiences.