Y
Y
YanRauh2018-05-02 10:10:55
C++ / C#
YanRauh, 2018-05-02 10:10:55

How to make a C++ learning plan?

Good afternoon.
Please tell me a consistent C ++ training plan that will give you the knowledge not only to solve cognitive problems, but to apply yourself in commercial practice.
Most courses provide the basics, the plan is the same everywhere. Passed the basics, data types, overloading, encapsulation, polymorphism, etc. and finished with the theoretical part of using templates.
I would like to see something like a hexlet training plan, where the technologies for creating a specific application are described in detail.
I found an otus plan in the courses, and I would also like to know an opinion on it:

  1. Build system: build, test and deploy
  2. Widely used features of the C++11 standard. auto. Closure - Lambda functions. Tuples.
  3. Widely used features of the C++11 standard. rvalue and lvalue references. Move semantic. Variadic Templates. POD. Lambda functions. Tuples.
  4. Innovations 14 standard.
  5. Deep into the implementation of smart pointers.
    Pitfalls and optimizations.
  6. Standard allocator and its disadvantages. Various methods of memory management.
  7. C++: macros. Type traits in STL. SFINAE

  8. UML software design principles . Principles: SoC, DRY, YAGNI, KISS, TDA, LoD, SOLID
  9. GRASP
  10. GoF Templates
  11. Antipatterns
  12. STL
  13. Boost
  14. Multithreading
    Threads. Critical sections and synchronization methods: mutexes, semaphore, condition variables, barriers. Thread pools.
  15. concurrency pattern. Active Object, Balking, Barrier, Double-checked locking, Guarded suspension, Leaders/followers, Monitor Object, Reactor, Read write lock, Scheduler, Thread pool, Thread-local storage.
  16. Asynchronous programming
    Architecture of asynchronous services. Low-level support for asynchronous code execution.
  17. Lockfree DS
    Non-blocking data structures and algorithms. BOOST lock-free
  18. Networking
    Sockets. Protocols: TCP and UDP. Serialization. HTTP. json. Zmq. Protobuf.
  19. Asynchronous I/O
    Libraries and practices for working with non-blocking data transfer
  20. RDBMS
    Using RDBMS. Connecting and working with the database
  21. Key Value
    NoSQL idea. Aerospike, redis, leveldb
  22. Map reduce
  23. OOP when working with databases. DAO and Repository Patterns
  24. Dlib. Clustering, thematic modeling. Regression. Classification.

There is also a competency matrix , but I would like to project it into C ++
And a couple more questions:
1) Do I need a mentor? So does his presence help to progress?
2) Should I immediately "jump out of the boat to learn how to swim" and try to write some kind of simple game engine, a bot with tutorials where you google incomprehensible parts and study topics?

Answer the question

In order to leave comments, you need to log in

3 answer(s)
T
terrier, 2018-05-02
@YanRauh

At otus, this is a training plan for a junior with some kind of commercial experience to the middle. And the idea of ​​stuffing all of C++ into your head before you even start commercial experience doesn't make much sense.
Perhaps it would be better to master the basics of the language in the volume of Stroustrup's book (but not necessarily according to it), plus add git, read some articles on performance and typical errors and go get a job as a junior. And even then, to fill bumps, study patterns / anti-patterns, etc.
Useful, of course, if you find a good one.
Writing a bot is a good idea, plus you'll need some code to show at the interview. You don’t need to write something big, at first it will be noodles from bad code, which you won’t learn much from.

D
devalone, 2018-05-02
@devalone

It's better to write code, the theory is certainly good and necessary, but it's useless without practice.

K
Kairat Ubukulov, 2018-05-02
@ubukulov

Try watching this video tutorial. I think it will be useful.
here

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question