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

    In February, we launched a free online C ++ programming course for advanced developers. There were basically two goals - to make sure that there were more good programmers in the world, and at the same time to recruit oneself in the team. The idea took off: 185 people from 57 cities and 8 countries wanted to participate in the first set. 30 of them fell into the cadets, but only 1 left with the words “uninteresting”. The rest, following the results of the course, reported that it was generally cool and they spent time with benefit.



    Having run the whole undertaking and the educational process on the initial beta set, we decided to repeat the course again. Recruitment is already in full swing, you can apply until Monday, June 26. What, how and who teaches - we tell inside.

    What are they teaching?


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

    We called it “advanced,” but actually it was worth calling it “in-depth.” In general, the course is for those who already care about the speed of 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 fairly low level of code and its connection with hardware, and if you even count milliseconds sometimes, the course will probably be useful to you.

    Training program in detail
    Lesson # 1.
    World constants.

    About the cost of operations CPU / RAM / HDD, about the device parts C ++ runtime, about the resulting optimization.

    Lesson # 2.
    Everyone knows the basics.

    Arrays, vectors, bugs. And how to benchmark properly.

    Lesson # 3.
    Lists of all varieties.

    When and why they are needed in practice. Puzzle for an interview. Plus sorting and searching, if we have time.

    Lesson # 4.
    Hashes and all that.

    The tables themselves, functions, collisions and the most Bloom filters. And a bit more KV-structures, if we have time.

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

    Lesson # 6.
    Trees and heaps.

    And laying the "complex" structure in a dumb array.

    Lesson # 7.
    Overview of esoteric data structures.

    From dumb circular buffer to hellish HyperLogLog.

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

    How is everything going?


    In total, in the first year there are 8 lectures, 7 practical classes and homework. According to the first experience, the study will be very intense, but the effect is corresponding.

    Who leads?


    Andrey Aksyonov, aka Shodan , a leading developer of the 3D engine team UNIGINE , and the author of the Sphinx search engine, which runs Habr, for example, came up with a class .

    Feedback from participants in the first set


    The magic of optimization, which Shodan showed in the first task, looked impressive. I found out in which places you can overtake std and that this is done with little blood. The first time I heard about the hash table device. I learned how to benchmark my code so that the compiler does not optimize everything. Do not look at information in books / articles, but check it yourself, because time goes on, a lot changes and what used to work slowly can now be implemented quite quickly.

    Anton Tarasov, Novosibirsk

    There are a lot of new things, moreover, in those areas that I considered long clarified and closed to experiments.
    - About the features of using STL. Once again he rummaged in his internal structure, with a more critical approach. With the question, “What's bad about him?”
    - A lot of new chips about optimizing programs. I heard some of them - 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 haven’t even heard of such a thing. Not so that it turned the universe upside down, but it was told that it was clear, and it will certainly come in handy.

    Sergey Koptev, Moscow (LLC PF Logos)

    What did you learn new? That STL really can be done an order of magnitude, and it's easier than it sounds. That for distinct optimization it is necessary to know much more than I know now.

    Renat Dusaev, Tomsk

    What did you learn? In fact, a lot. I realized how cool and actually "multilevel" C ++ is. Thematic gizmos (for example, a blurred key of trees with an example). Links selected on Skype already. For example, about non-branched code bithacks.

    Alexander Baranov, Krasnoyarsk

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

    Appreciated the inplacement new approach to initializing objects and malloc for memory allocation. I always used new before, but apparently, there was simply no need to optimize something to such an extent.

    Igor, Tomsk

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

    Pavel Nakaznenko, Krasnoyarsk

    I want to learn what to do?


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

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

    And even more - we will do it for you. Upon receipt of the assignment, your code will undergo an auto-check for compilation, and we will send you a report so that you are sure that the program has gathered on our side. If all is well, the code will be checked manually by Shodan. If not, you have an unlimited number of attempts!

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


    Also popular now: