📜 ⬆️ ⬇️

UNIGINE C ++ School: a free online course for advanced

In February, we launched a free online C ++ programming course designed for advanced developers. The goals were basically two - to make the world have more good programmers, and at the same time to recruit new members to the team. The idea took off: 185 people from 57 cities and 8 countries wanted to participate in the first set. 30 of them got into the cadets, but with the words "uninteresting" only 1 left. The rest of the course reported that it was generally cool and they had a good time.



After running around the whole undertaking and the educational process at the initial beta set, we decided to repeat the course again. The set is already full, you can apply until Monday, June 26th. What, how and who teaches - tell inside.
')

What is taught?


UNIGINE C ++ School is a course for those who already know how and practice C ++, likes to squeeze performance, but not yet Stepanov, not Alexandrescu, or EA. And his first STL has not yet written.

We called it “advanced,” but in fact it was worth calling it “in-depth.” In general, the course is for those who already care about the speed of the programs and the details of the internal structure of important black boxes. If you want to see how to speed up programs at times, if you are interested in a sufficiently low level of code and its connection to hardware, and if you even sometimes consider milliseconds, the course will probably be useful for you.

Curriculum in detail
Session # 1.
World constants.
About the cost of CPU / RAM / HDD operations, about the device of parts of C ++ runtime, resulting optimization.

Session # 2.
All the "famous" basics.
Arrays, vectors, bugs. And how to benchmark.

Lesson # 3.
Lists of all varieties.
When and why they are needed in practice. Puzzle for the interview. Plus sorting and searching, if we have time.

Lesson # 4.
Hashes and all that.
The tables, functions, collisions, and the Bloom filters themselves. And even a bit of KV-structures, if we have time.

Lesson # 5.
Composite structures.
Add any desired word from the letters B, C, X just studied.

Lesson # 6.
Trees and heaps.
And laying the "complex" structure in a blunt array.

Lesson # 7.
Overview of esoteric data structures.
From blunt circular buffer to hellish HyperLogLog.

Lesson # 8.
Bonus: a review of the device 3D graphics.
From vectors and matrices (with analysis) to modern rendering techniques (without detailed analysis).

How is everything going?


There are 8 lectures, 7 practical lessons and homework in the first course. According to the first experience the study is very intensive, but the effect is appropriate.

Who leads?


Invented the course and conducts classes Andrei Aksyonov, he is Shodan , the leading developer of the team of the 3D-engine UNIGINE , as well as the author of the search engine Sphinx, which runs Habr, for example.

Feedback from participants of the first set


The optimization magic that Shodan showed in the first task looked impressive. I found out in which places you can outrun std and that this is done with a little blood. The first time I heard about the device hash-tables. I learned how to benchmark my code so that the compiler does not optimize everything. Not to look at information in books / articles, but to check it yourself, because time is passing, a lot of things are changing and what used to work slowly can now be realized fairly quickly.

Anton Tarasov, Novosibirsk

A lot of new things, moreover, in those areas that he considered long ago to be clarified and closed for experiments.
- On the features of the use of STL. Once again I rummaged in its internal structure, with a more critical approach. With the question "What is bad in it?".
- A lot of new chips about program optimization. Some of them heard - but “by” did not apply. Like all these endless bookmarks in the browser from the series “there will be time - I'll figure it out.”
- Some things were completely new to me. Trie-tree, for example. I have not even heard of such a thing. Not so that it turned the universe upside down, but told it was clear, and certainly useful.

Sergey Koptev, Moscow (LLC PF "Logos")

What has learned new? What STL really can be done in order, and it's easier than it seems. What for intelligible optimization you need to know a lot more than I know now.

Renat Dusaev, Tomsk

What did you learn? In fact, a lot. Understand how cool and in fact "different levels" of C ++. Themed gizmos (for example, the blurred key of trees by example). Links selected already in Skype. For example, about bithaki in the spirit of nonbranching code.

Alexander Baranov, Krasnoyarsk

I never tried to measure the actual speed of the STL containers, and I thought that it was already normal. In the course of the course, I was forced to do this, and with my own hands I got the results I needed on my own gland. Some views on the STL have changed.

Evaluated inplacement new approach to initializing objects and malloc for allocating memory. Previously, I always used new, but, apparently, there was simply no need to optimize something to that extent.

Igor, Tomsk

I learned about Bloom filter, exotic and composite data structures. Small tricks, such as compact stacking of complex structures in a linear array. He put his head in order and systematized knowledge. There were a couple of moments when I thought that you know how it works, and then an insight happened. Build your own bike was not so obvious.

Pavel Nakaznenko, Krasnoyarsk

I want to learn what to do?


The course is free, but it assumes that you have basic skills. So we will enroll in the cadets on the basis of input testing. You can apply and pass the entrance test on the school website until Monday, June 26.

Important update:
Many of us asked to do tasks under Linux, and we did. Now the entrance test for admission can be compiled under Windows MSVC 2013 and under Linux gcc 5.4.0.

And even more - we will do it for you. When accepting a task, your code will pass an auto-check on compilability, and we will send you a report, so that you are sure that the program has gathered on our side. If everything is good, the code will be checked manually by Shodan. If not, you have unlimited attempts!

And for a snack, a teaser for the new season.

Source: https://habr.com/ru/post/331330/


All Articles