суббота, 15 августа 2015 г.

Floréal (20 April - 19 May) overdue summary

Hoping to return to a regular posting, I decided to alter the format once again in order to make the writing process more interesting for myself. But I still want to share with you several portions of my impressions which refer to the period from the end of April till the end of June, and for that purpose I will follow the old format in that post and in the next one.

5. Functional Programming course in Computer Science Center

After giving up the course in Statistics, due to a heavy workload, badly going with the other subjects, and requirements which occured to be too high for me (I'm quite sure that I shouldn't take the course if I have such an opportunity and if I can't understand the first definition on the first lecture), I reserved two opportunities to pass a course: Functional Programming and Machine Learning. Of course, I wanted to pass them both (and eventually reached this goal), but at some point of time it wasn't clear for me if I could pass at least one. As for Functional Programming, I didn't experience many problems with the main part (i.e. programming in Haskell) thanks to the double coverage of almost all topics (the second one was at the university) but lost too many points for the first three homeworks, which were completely theoretical and were devoted to the lambda calculus. Each time I got only 1/10. By the way, I still understand this theory far from well and still don't see where it could really help me with Haskell (in most of the cases I didn't feel that I need to know anything more and didn't face many obstacles). However, this loss of 27 points at the very beginning threatened me with not passing the course (to pass the course each of us needed to gain at least 65 points out of 131). The situation with Machine Learning was even worse, so I was very happy to surpass the 65-point barrier after the last but one homework in Functional Programming.

To sum up that part, I should say that coding in a functional language was a funny experience. It is not clear for me if it helped me to improve my programming abilities (as we were told at the university, the impact of this experience on the conceptual level may be great), but at least now I can mention in passing that I once implemented Dijkstra algorithm in Haskell ;)

4. Spassky Chess Cup - the final stage

In the previous summary I told you about the qualification for this annual blitz chess competition. Eight days after that, the final 9-round Swiss tournament took place in the Twelve Collegia. The day before, together with one student of the same year I agreed to help our coach, university team captain and the main competition arbiter (I am talking about the same person) to transport the equipment from Peterhof to the venue. Coming more than an hour before the official start of the event, we even thought that we were too early, because we were sure that the only thing we would have to do after bringing the equipment is setting out chessmen on less than twenty boards. But it was not to be so. The organizers left us the whole preparation stage, starting from carrying tables and chairs (almost forty items of each kind) along the corridor to the place where all that furniture was intended to be situated. Ok, on that day I learned that it's worth doing a warm-up not only before jogging or even going to the concert but also before chess competitions.

Carrying heavy things for more than half an hour doesn't help the thinking process much. Neither do the words of organizers who told us on the opening ceremony about their (!) hospitality. The only thing which was able to boost me up was the draw (by this polysemantic word I mean not the result of the game but the process during which competitors are subdivided into pairs), and it coped with its "task". After the random pairing with no respect to the alphabetical order or FIDE rating, with no subdivision into seeded and unseeded participants, I found my name next to my recent opponent's name. Playing against the former world U-18 chess champion two times in a row (I haven't played chess during those 8 days between the qualification and the final stage, and qualification round ended for me with the game agains the same participant) - what can cheer up better? And such funny randomness (I had equal chances to play against anyone of the other 28 persons but...) made me smile. Once again I played as white. This time I chose the deviation 1. b2-b3 (instead of usual 1. e2-e4 which lead to the French defence, troublesome opening for me at that moment, in our game a week before) hoping to take the Woman Grandmaster in front of me by surprise. Predictably, that was a vain attempt even though I had been playing this line from time to time since autumn and was completely sure that it is unknown for my opponent. Such invitation to an unfamiliar area often helps in blitz even against strong players but this time it didn't. However, during this game I almost forgot about my emotions regarding organizers and thus nothing distracted me from chess. In the next seven rounds I ran out of time twice in better positions, and won the other five games. In the last round I was lucky to win nearly equal position still full of life (in which I was likely to lose due to the shortage of time) thanks to the incorrect move of my opponent (any move violating the rules leads to an immediate loss in blitz).

Six points in nine games brought me to the 4th place, and the only criterion which separated me from the third place was the Buchholz score. Anyway I didn't feel disappointed because being fourth among the strongest chess players of our large university is far from bad result.

3. Last school study group lessons

In contrast to the previous school year (and especially, to the autumn term of that year), this year our pupils didn't make us, their tutors, happy for their attendance. None of them visited the last lesson before the New Year, and in spring such low (or, rather, zero) attendance became something like a tradition. Nevertheless, my colleague and I did't say good-bye to all hopes of any positive changes of this dreary situation. And finally, I was rewarded for the expectation: three Tuesdays our study group gathered one of our pupils and me :) Unfortunately, my colleague responsible for Thursday lessons wasn't that lucky.

The end of the school year was near, all the important contests were left behind, so I decided to introduce several uncommon for algorithmic study groups topics. Uncommon, but not absolutely unrelated to our main subject. Firstly, I made up my mind to share basic knowledge of parallel programming, to show how OpenMP library in C++ works and then to propose to apply newly acquired knowledge to familiar algorithms in order to speed up implementations of them. I found such deviation from the standard curriculum to be a useful exercise for the development of algorithmic mind-set and an interesting way to digress from solving customary problems which may seem boring sometimes. On the next lesson we switched to the approximation algorithms for NP-complete problems, on the third one to different optimization heuristics (for instance, hill-climbing, simulated annealing, etc.). I also planned to show the beauty of purely functional programming resorting to some easy to undestand but marvelous concepts like infinite lists. But... suddenly, just before the end of the third lesson among those ones, I am talking about, I found out that it was the last lesson, because nobody was planning to attend the following ones.

Well, I have taught schoolchildren algorithms for as many as 3 years, and that was a great experience! I believe I managed to create a friendly climate and to make a process of learning not only productive but also entertaining. But now I'm pretty tired, and, which is the more important, I became attached too much to those ones who visited us quite frequently during those years. Now most of our pupils graduated from school and I don't feel like it will be easy for me to start teaching a new group. At the point when I realized that, I became amazed to remember my school teachers most of whom managed to work with several generations of pupils. But I simply can't do the same thing, that's one of the reasons why at least for the next school year I have to give up teaching algorithms. And maybe not only for the next year, but only time will tell. Hope there will be a lot of volunteers among this year graduates to hand the lamp by means of sharing the knowledge they gained from us in the study groups with those ones who will visit these groups in the next years. And I also hope that these future teachers will be more successful in leading their pupils to great achievements than I was.

2. New personal rating peak on Codeforces

Even though any rating is unlikely to represent the actual strength of a person or of a team (just an example, I'm sure that Belgium national football team is not second strongest in the world but they were on the second place in FIFA rankings recently), it is still the only way to compare your level with skills of the others as well as to feel your own progress. And as for my rating on Codeforces, I couldn't surpass my best result for more than three years! I couldn't believe that I haven't made any progress during those years but my rating remained below the value which I reached once, in winter of 2012.

Finally the moment has come ;) In Round 300 I managed to solve 4 problems out of 8 and to make (!) 16 successful challenges. I should have solved one more task if I chose better strategy. But I failed to find the best moment to switch from hunting after new small bonuses for challenges to much more valuable source of points. Problem F required quite a lot of coding but the idea was completely evident to me. Anyway, solving half of the tasks and succeeding with the astonishing number of challenges was enough to gain a lot of rating points and to break a personal record at last.

I hope it won't take me so long to improve this new achievement as it was with the previous one.

1. Interactive Chess Viewer   

This semester I worked upon the huge project for the first time. And first of all, I shoud say, I was lucky to be able...

  • to work together with my friend;
  • to work towards the implementation of my own idea. Maybe, I can even say, my dream;
  • to get two credits for the same project (one in the Computer Science Center, the other one at the university).

All of the above guaranteed that the project will be the primary goal for me during the semester and that I will devote most part of the time I spend at home to it. For the first time since long ago I felt the real purposefulness because I worked upon something not (not only, to be precise) because I had to do it, but because I wanted to see the result and to be able to use it. For the first time since long ago (I think, since the summer of 2012) I learned only those things which really mattered for me at the moment (in the contrast to the educational system which suggests us to learn everything not worrying whether the knowledge we acquire is vital for us or not) and that was great, that boosted my motivation a lot. That was like a deep breath of fresh air.

Well, I still haven't said a word about the project idea. You know, I'm a chess player. As many chess players do, I read special books in order to improve. These days it's often difficult to find enough time for reading at home, that's why most of us read in transport. But reading chess book without a board in front of you (to be more exact, without the possibility to move pieces) is sometimes more like a self-torture than a way to impove. And switching to a chess program on a tablet after each move is not a good usage of your time and your patience, too. The only solution, which I see, is to move the pieces on the diagrams drawn on the book pages. Yes, to inject some life into a static PDF file, so that each page will contain several interactive chessboards.

We didn't manage to finish the project during the semester because even if the idea may seem relatively easy, there is tons of work behind it. But we made a great progress and we had what to show the profs and the other students on the projects presentation in the end of the semester (and we even won the audience voting for the projects among those of our category). I'm almost sure that visualization works better than words, that's why I offer you to watch a screencast about our app.

Even though it works properly as you may have seen, there are still some uncompleted details which separate us from the product every chess player will be happy to use. And I hope, in the future we will find the time to complete the app, and thousands of people will enjoy reading chess books in it.

And if you laughed at the word "thousands", just look at this. My idea originated from this clumsy app with more than (!) one hundred thousand of downloads. Currently there is no good alternative to it, so everyone, who needs chess book reader, uses Chess Book Study. But I have no doubts in what will happen if someone implements an application which will be more comfortable to use. I think, we are halfway to the moment when we'll be able to know that for sure

1 комментарий:

  1. Looking at your last comment and then at this post, I feel that I reached my goal with these comments, and you can go further without my assistance. Seems amazing.

    >in order to
    I'd put 'to', but your version is possible for a slightly different meaning.
    >at some point of time
    I see, you took this from Russian :). In English it's 'once'.

    >(any move violating the rules leads to an immediate loss in blitz)
    I caught myself expecting for 'as you might already know' before this, and I didn't find it. My congratulations!

    >And first of all, I should say, I was lucky to be able...

    It already goes first of all, and it's great, and you say it. Keep going :)