In Yandex C ++, one of the main languages, our search is written on it. Its development is so important to us that more than a year ago, on the initiative of Yandex, the Russian
working group on the standardization of “pluses” was created. Through it
, all developers of the Russian-speaking space have the opportunity to influence the development of the language.

Recently, Fiztech, Yandex and ShAD have launched another course on the Coursera platform - “
Basics of C ++ Development: White Belt ”. He is dedicated to getting to know C ++. I will tell you who this course is for, how we prepared it, what happened in the end, and what our future plans are.
')
How it all began, was thrown away and started again.
The online specialization of the five C ++ courses we conceived last summer. At first they composed the program on the sly, then more actively, and in October they started shooting a video.
We managed to remove almost half of the first course, but then I looked at
Kate Gregory 's
report on typical C ++ teaching mistakes and realized that we made the most of them. November 30, I wrote to the general chat:
Guys! I have a bad news. I realized that our first course is ***** :(
Here it should be noted that from the very beginning we decided to do courses that, firstly, would tell about modern C ++ and, secondly, would be directed to practice. It makes no sense to retell a textbook or reference book - you need to give people a skill so that a person can start writing code after the very first lessons.
And yet the academic habit and propensity for meticulousness turned out to be too strong. In the original version of the program, the topics followed one after another, subject to strict logic. All dependencies between them were observed, the possibilities of C ++ were considered in depth and in detail. Unfortunately, as a result, standard containers and algorithms were first mentioned not earlier than the second year, because they are template constructions - and until the middle of the second year, we thought, the listeners would not yet know the patterns.
Probably everyone understands what the problem is. To use std :: vector, it is not necessary to know how the templates are arranged and even what it is.
The moment of awareness was deafening: we knew from the very beginning that the course should be practical and give a skill, not a certificate - and still made a mistake. We fell victim to our own expertise and began to delve into the internal structure of C ++, instead of telling how easy it is to solve practical problems.
It became clear that the program should be rewritten, and most of the captured video should be discarded and removed again. This added to the team of teachers a lot of work and the habit of thinking all the time about the practicality of the course.
What happened
While the first course turned out. It is assumed that at the beginning of the course, the listener can see the C ++ language for the first time in life (but at the same time it is worthwhile to imagine what programming is in general, and not be afraid of the words “variable”, “cycle”, “list”), and in the end there will be able to write a small key-value repository with the ability to add records there and request all values ​​by some well-known key.
In order for a person to be comfortable with this task, you need to tell him about the basic language constructs, functions, several standard containers and algorithms, structures and classes, input and output streams, exceptions. The story is not too deep, but so that all this can be used. And of course, you need to give more tasks so that after watching the video you can immediately “touch” the material with your own hands.
Reviews of beta testers and listeners are encouraging. We hope that we have a good introductory course, also in Russian, which should greatly facilitate the perception of the material by many people.
The remaining advantages are described above: focus on practice, many tasks, use of modern features of the language. The authors of the course are senior developers of Yandex, who know C ++ at a deep level and are ready to share their rich experience in the use of language in combat projects. Therefore, both lectures and assignments teach the most efficient, safe, and simple C ++ programming.
The plans - more hardcore courses, from yellow to black belt. We are trying to prepare them in such a way that even people with knowledge of C ++ can listen with interest and, perhaps, learn something new. In the meantime, advise our first course to new friends, they will like it.
What exactly are telling
The course lasts five weeks. Each week, from the first to the fourth listener will have to watch 10-20 short videos and solve several problems. The course fragment for each week contains both tasks and tests necessary for obtaining a certificate, as well as additional optional tasks - for those who want to practice more. Last week is entirely devoted to the solution of the final problem.
Access to mandatory tasks costs about 1600 rubles, but students can apply for financial assistance to Coursera and get access for free. All videos and optional tasks are free by default.
The course program looks like this:
Week 1Overview of C ++ Features
Hello, world
Type Overview
Simple Type Operations
Container operations
Language constructs
Compile, run, debug
Install Eclipse
Creating a project in Eclipse
Debugging in Eclipse
Operations
Assignment
Arithmetic
brain teaser
Conditional statements and cycles
Week 2Functions
Syntax
Passing parameters by value
links as a way to change the passed object
const links as a way to save on copying
const protects against accidental change of the variable
Containers
std :: vector
Std :: map
Std :: set
Looking to the future: dictionary traversal with structured bindings
Week 3Algorithms and lambda
min, max, sort
count, count_if, lambda
modern analogue of std :: transform - for (auto & x: container)
Visibility and initialization of variables
OOP
Introduction to Structures and Classes
Week 4OOP: examples
Work with text files and streams
Operator Overloading
Embedding custom types in containers
Exceptions
Week 5 - course projectAntoshkka , who participates in the work of the standardization group, helped us with the course: “The C ++ language is beautiful, fast, is used by most large IT companies, and specialists in this language are valued all over the world. Unfortunately, many courses and textbooks on C ++ are actually textbooks on "C", and with such knowledge you will have a hard time. Therefore, we have prepared a course on proper C ++, with classes and without memory leaks. If you know any other programming language and want to discover the world of proper C ++, then our course is for you. ”