Link to C++ course https://www.coursera.org/learn/c-plus-plus-white/
This course is devoted to acquaintance with the C ++ programming language. You will learn how to use its basic constructions, create your own data types, break the program into classes and functions.
At the end of the course, the final project awaits you: you can independently implement a simple data store with the ability to add, delete and search.
The course was developed by leading Yandex specialists and teachers of the School of Data Analysis. They have years of development of search services, advertising and infrastructure behind them.
The course is part of the Art of Modern C ++ Development Specialization.
The Moscow Institute of Physics and Technology (Phystech) is one of the leading universities in the country and is included in the main rankings of the best universities in the world. The institute has not only a rich history - the founders and professors of the institute were the Nobel laureates Pyotr Kapitsa, Lev Landau and Nikolai Semenov - but also a large research base.
The basis of education at MIPT is the unique "Phystech system" formulated by Petr Kapitsa: painstaking selection of talented applicants who are inclined to creative work; participation in the training of leading scientists; an individual approach to individual students in order to develop their creative inclinations; education from the first steps in an atmosphere of technical research and constructive creativity using the potential of the best laboratories in the country. Among the graduates of MIPT are Nobel laureates Andrey Geim and Konstantin Novoselov, founder of ABBYY David Yan, one of the authors of the architectural principles of building computing systems Boris Babayan, and others.
Yandex is a technology company that builds intelligent products and services powered by machine learning. Our goal is to help consumers and businesses better navigate the online and offline world.
The Online Education Development Fund (FRO) is a Russian operator of online program management (OPM) that creates content in partnership with leading companies and universities and promotes it on major educational platforms.
1. C ++ Development Fundamentals: White Belt
This course is dedicated to acquaintance with the C ++ programming language. You will learn how to use its basic constructions, create your own data types, break the program into classes and functions.
At the end of the course, the final project awaits you: you can independently implement a simple data store with the ability to add, delete and search.
The course was developed by leading Yandex specialists and teachers of the School of Data Analysis. They have years of development of search services, advertising and infrastructure behind them.
The course is part of the Art of Modern C ++ Development Specialization.
2. Fundamentals of C ++ Development: Yellow Belt
This course is a follow-up to C ++ Development Fundamentals: White Belt. In it, teachers continue to acquaint you with the capabilities of the C ++ language. The course covers:
- integer types of the C ++ language
- pairs and tuples
- function templates
- inheritance and polymorphism
- iterators and standard algorithms
- distribution of code over several files
In addition, the course discusses the use of unit tests for debugging programs and ensuring the reliability of the code, and also demonstrates how, using the knowledge of only the "White" and "Yellow" belts, to develop your own unit test framework.
Just like in the "White Belt", at the end of the course you will find the final project. In the "White Belt" it was necessary to independently implement a simple data store with the ability to add, delete and search. In the Yellow Belt, this storage will need to be improved to add support for more complex queries.
3. Fundamentals of C ++ Development: Red Belt
This course is a follow-up to C ++ Development Fundamentals: The Yellow Belt. The main goal of the course is to teach how to write efficient code in C ++. In addition, some C ++ features are considered that were not included in the previous courses.
The course covers:
- macros
- class templates
- principles of code optimization
- efficient use of I / O streams
- estimates of the complexity of algorithms
- memory model in C ++
- efficient use of linear containers (vector, deque, list, string)
- move semantics
- introduction to multithreaded programming
In addition, the course demonstrates how, using the knowledge of only the "White", "Yellow" and "Red" belts, to develop your own profiler.
Just like in previous courses, there is a final project at the end. It would be strange, in the course from Yandex, not to ask you to create your own search engine! This is what you have to do in the final task.
4. Fundamentals of C ++ Development: Brown Belt
The main goal of this course is to teach the idioms of the C ++ language, that is, to show how to create elegant, efficient and reliable blocks of code using the various features of the language. Combined with the knowledge gained in the Red Belt, this will allow you to create more than fast and easily maintainable programs.
In addition, it will cover topics that did not fit into the scope of previous courses: namespaces and the effective use of associative containers.
5. Fundamentals of C ++ Development: Black Belt
First, the Black Belt will cover topics without which your understanding of C ++ will be incomplete - these are virtual method tables, virtual destructors, undefined behavior, templates with an arbitrary number of arguments, and forwarding links. Secondly, we will give you the opportunity to work with libraries and tools, without which it is difficult to imagine modern C ++ development - sanitizers and protobuf. Finally, the "Black Belt" will contain a large project, which this time will last not one week as usual, but as many as three. After completing our specialization, students must:
- be able to independently solve practical problems in the C ++ language;
- apply natural C ++ idioms and constructions (STL, RAII, const-correctness, type-safety);
- be able to independently find answers to your questions and learn the language deeper;
- be able to write efficient C ++ code without compromising the readibility and maintainability of the code.
The final draft of Black Belt is designed to test whether the audience has achieved these goals.