Thursday, April 10, 2014

Codility knows its Natrium 2014 Challenge winner!

This month's first Golden Award goes to Yanpei Liu from Shanghai who delivered the perfect solution in just 4 minutes

Yanpei Liu was closely followed by Tomasz Garbus (9 minutes) and Elene Machaidze (12 minutes).

Congratulations!

Haven't had a shot at our Natrium Challenge yet? 

Try: https://codility.com/cert/start/natrium2014/

Thursday, April 3, 2014

Why the binary search is one of my favorite algorithms.

First of all, I'd like to mention that I have never been a great fan of very complex algorithms that I can use only on a theoretical basis. On the other hand, I don't like algorithms that are so trivial that it takes only a short time to figure them out.

My idea of a perfect task or algorithm is one whose adaptation can improve a slow solution, but whose use is not obvious. Moreover, such an algorithm may be useful in everyday life, not just in the world of computer science or in solving theoretical problems. One such algorithm is the binary search.

First of all, the binary search algorithm is very intuitive. Many people use binary searches from childhood without being aware of it. For example, when you search for words in a dictionary, you don't review all the words; you just check one word in the middle and thus narrow down the set of remaining words to check.

The binary search is not restricted to searching for an element in a sorted sequence; if it were, the algorithm would be considered trivial and uninteresting. An interesting application of the algorithm is binary search on the result. For example, imagine that we want to find the minimum size needed for a square office that must freely accommodate all the employees of a company. We can perform a binary search for that size rather than sequentially checking all the possible sizes. We usually estimate the minimum and maximum sizes over which we do a binary search. Next, we just check some middle value and the interval can be halved again, and so on. That's a lot of saved time.

There are plenty of algorithmic tasks that require a binary search to achieve a model solution. They appear during recruitment interviews, in exams and in programming competitions. Certainly, they will also appear in future challenges.

  • Have you ever used a binary search in your life? 
  • If so, what application of a binary search has proved to be the most powerful and time-saving for you?

I have made the binary search the centerpiece of our new programming lesson No 12.
Check it out for more examples, explanations and exercises, and let me know if it was useful to you!

Monday, March 10, 2014

We have another "serial winner"


After 16 minutes Robin Lee was the first one to submit a perfect solution to our Neon 2014 programming challenge. Brilliant!



Robin has been participating in Codility challenges since 2011 and already came in first for the Nitrogenium 2013 challenge. This makes Robin the second person to win two challenges since 2013. The other one is Chenyang Wu. Take them on during the next upcoming challenge, in a month? 

Closely behind Robin were RESODO (17 mins), Kevin Wang (21 mins) and Dmytro Ignatenko (21 mins).

Congratulations to you all and happy coding everyone!

Thursday, March 6, 2014

Your input for our 'home for programmers'


We are happy that many of you, our programmer community, took the time to fill in our survey to help us improve our current services and shape upcoming offerings for you. 


Here are some findings and action steps resulting from your feedback:

A) How can we improve our monthly programming challenges?



To comment on the most popular responses:

Increase the frequency of challenges (32.7%)
It’s great that many of you would like to be challenged more often. Whilst we will try to ramp up our production in general, what we envisage introducing shortly is two monthly challenges: a hard one and one that is a bit easier than the current ones. The latter was also one of the main ‘other ideas’ suggested to us.

Change the time when challenges go live (24.6%)
Whilst responses did vary, there is a clear cluster indicating that weekends, especially Saturdays, would be most convenient. Hence, we are changing the starting time for our next challenge to Saturday, 5pm UTC.

Create a hall of fame (17.1%)
Sure! Whilst we have published just the top 3 from each challenge to date on our blog and social media accounts (Twitter, Facebook), the new ‘programmers’ home’ that we’re shortly going to launch will feature a hall of fame. So, get your favorite pictures ready! :) And, while you’re at it, why not take our current challenge?


B) How can we improve our guided programming course?



The series of hands-on coding lessons, aimed at everyone with basic programming knowledge and an interest in discovering the world of programming, was last year’s star innovation. Since its inception in May 2013, almost 500,000 visitors from all corners of the globe have visited the site and about 1,500 training tasks are now being assessed every day.

This is great encouragement and motivation for Jacek and Marcin, the fathers of this series.

They were happy to receive your feedback and will focus their efforts mainly on: 
  • Providing solutions to training tasks (34.9%) 
  • Providing hints on solving training tasks (29%) 
  • Adding links to more resources that help to solve the training tasks (16.6%) 

In addition, we think that there are plenty of resources in the community. Hence, we plan to add facilities allowing you to publish, brag about and share such insights with others.


C) What additional features/services would you use, if Codility provided them?




It was great to see lots of hunger and ideas. Lots to do? Absolutely. But hey, we are motivated and will do our best to ship a few of these ideas soon. And hey, if you feel motivated too and want to join in, why don’t you check out our job openings! :)

Thanks a lot for your contributions and comments on this survey! We are aware that it’s only a snapshot, and we want to make sure we are aware of your ideas, wishes and preferences on a continuous basis. Therefore, our new home for programmers – expect a launch in early April at the latest – will also contain a corner for you to feed in ideas to be publicly displayed. Also, you can see existing ideas and boost them by voting for them. For an even more personal approach, talk to Jacek (jacek@codility.com) and Mateusz (matkk@codility.com) directly!

Happy coding!

Monday, February 10, 2014

The Fluorum 2014 programming challenge found its master...

And the Fluorum 2014 programming prize package travels to: Keivan Alizadeh Vahid in Tehran. 




Keivan took 32 minutes to submit a golden solution to what was a slightly trickier challenge this time. Congratulations!

Keivan was closely followed by Marat Yuldashev (44 mins) and the winner of our last challenge, Visit Pataranutaporn (45 mins). 

Serving such a hungry, international and quickly growing programmer community is very motivating for our task setters. Expect another tricky challenge in a month!

Congratulations again and happy coding everyone!

(Haven't had a shot at the Fluorum challenge yet? Try:https://codility.com/cert/start/fluorum2014/)


Monday, January 13, 2014

And the first Codility Golden Award of 2014 goes to ...

... Visit Pataranutaporn (aka Nautilus Processor)!

Visit successfully solved Oxygenium 2014 in only 14 minutes! Kudos, Visit!

Visit was followed by the winner of the last Codility challenge, Robin Lee (21 mins) and Andrii Maksai (23 mins). 

Congratulations, and keep nurturing your passion for coding!

Thursday, January 9, 2014

The winners of the Codility programming challenges in 2013

Codility's free offerings to programmers have become increasingly popular in 2013.
  • Over 200,000 have visited the simple training site we launched in May 2013.
  • We have assessed more than 180,000 training task solutions you submitted. 
  • Over 40,000 tried to get a Codility coding Award. See who won the challenges in 2013 below.   
The results of 2013 encourage us to quickly expand our services to programmers. Expect an announcement soon.

For now, let us give the floor to the winners of the Codility challenges in 2013.

Programming challenge Winner 2nd 3rd
Omega Artur Robin Lee Lego Haryanto
Hydrogenium Jason Ye Mark Richardson John Maxwell
Helium Lego Haryanto Gustav Matula Sumudu Fernando
Lithium Tomasz Kulczyński Mario Ynocente Castro Giorgi Guliashvili
Beryllium Chenyang Wu Denis Yudin Xiongjun Liang
Boron Gabriel Rea Velasco Chenyang Wu Sven Over
Carbo Chenyang Wu Marat Yuldashev Robin Lee
Nitrogenium Robin Lee Marcin Kościelnicki Marat Yuldashev

Congratulations and keep up the great programming!

Monday, December 16, 2013

And the Nitrogenium Codility Golden Award goes to ...

... Robin Lee (http://people.bath.ac.uk/rl411/)!

Robin submitted his golden solution after only 12 minutes. Rocking!

Robin was closely followed by Marcin Kościelnicki (14 mins) and Marat Yuldashev (21 mins).

Congratulations guys!

Keep up the great coding and feel free to visit our free training page to prepare for the next challenge in January!

Monday, October 14, 2013

Marek and Michał: A summer of coding.

This summer, Codility had the joy of working with Marek Rusinowski and Michał Kowalczyk. Both not only made it through our vigorous recruitment process distancing dozens of other applicants but also made substantial contributions to our work and company culture. Before letting them go - to start university (!) - our CEO Greg Jakacki sat down with them to talk about their internship and lessons learned. 




GJ: Why were you looking for an internship?

MK: To gain experience. I had not had many opportunities to work for a real company under real conditions, or to see processes such as software deployment in action.

MR: You can do lots of software development yourself, but if you are on your own, you are limited by your own methods and habits. I wanted to see how things are done in teams.

MK: I had opportunities to work in software development teams in programming and hacking competitions like Capture The Flag and Deadline24, but these teams were just three people. Here it is different: the team is larger and it is not enough to write the software once, as it needs to stay maintainable.

GJ: What was the most interesting aspect of your internship at Codility?

MK: Hacking! :-) Generally, things related to security: audits and scanning for security holes in the safe execution sandbox. Also bug hunts, like when we discovered that under rare conditions the Java VM unpredictably hangs for 2 seconds. Is this something at our end, or have we perhaps traced down a bug in the Java VM? For me, this is super-interesting and I am really curious about the outcome.

MR: It is hard to pinpoint just one thing that was most interesting. There were many. Either I was annoyed that something seemingly simple was not working perfectly, and I was motivated to make it shine, or I was making something new. I was really frequently surprised how much you can achieve within a limited time and with limited resources.

GJ: Of your own contributions, which do you value most?

MR: For me, this was the data visualization project. I created charts for several statistics extracted from the main database. It was a quick project, I employed several cool components Highcharts, jQuery, Ajax and a back-end serving data in JSON, it turned out pretty well, users were happy, and once I had finished it I did not have any urge to improve it further. With other projects I had a feeling that, despite their having launched, I could have added a few more features or even rewritten parts from scratch.

MK: I like my contribution to the safe execution sandbox: this was my largest project, I am happy with what I did and we improved security and modularity a lot.

MR: Thinking about my contributions, I realized that it was very important to me that I was working on real project for real people. My code was not ending up in a dusty drawer, but was immediately deployed and used by employees and clients. It gives you this great feeling that your work is really useful.

GJ: How do you find a great internship?

MK: Well, ask us in six years; we have just enrolled at university…! :-) Seriously, the opinion of people who work at the internship provider is very important. I always ask around before I commit to anything. With internships I’ve heard a few horror stories from my colleagues, so for me it is a must to check the employer diligently. One of my pals ended up in an internship in a large software corporation, but it turned out to be so bad that he terminated it early. He encountered a hopeless atmosphere at work, with everybody feeling anxious all the time, people rushing each other… he has no good memories of that place. Always check the references of the prospective employer!

GJ: How would you organize an excellent internship? What advice would you give to software companies that want to create an outstanding internship program?

MR: Don't make interns fetch you burgers! :-)

MK: Treat interns as almost equal with employees, but at the same time teach them a lot. For an intern, the main value is in the education. Show them how things should be done in a professional way. My colleagues who complained about their internships frequently described situations in which interns had much lower positions than employees and were entrusted only with menial, boring assignments. To make a great internship you need to show interns that one can do exciting things on the job. Do this and they are likely to come back as loyal employees.

MR: Trust is important. An intern needs to feel that he or she is trusted.

MK: Yeah; not that you get an isolated project just to prove that you can program.

MR: Absolutely. An intern needs to see that his or her work is useful, not just an exercise: that one can have an impact, even as just an intern.

GJ: What did you learn at Codility?

MK: Linux. Before the internship I worked mainly on Windows. In the first week of my internship I ordered a great book, The Linux Programming Interface, and it really helped me to understand possible pitfalls in the safe execution sandbox. Also Python and C. I had to do some real coding and improved my skills greatly. For instance, Paweł made me realize the dangers of “def f(d={})” in Python. And Git. I had not used Git before I did some SVN. Now I both know the tool and also begin to understand the strategies: how to deal with multiple repositories, branches, multiple committers, code reviews, merge requests, and why and when development branches are useful.

MR: Python. I started my internship with just 1.5 weeks of Python practice…

GJ: you are kidding me…

MR: No, seriously. I had done very little Python before. Also DevOp, which databases work best under what conditions, what tools to use to set up the whole stack efficiently etc. I learned some technologies like Angular.js, Node.js, Django, MongoDB (although I did not have much luck with the latter; I had to drop it in favor of PostgreSQL). I also learned a lot about how to debug JavaScript code in a browser, especially when I was trying to achieve the serverless integration of in-browser JavaScript with Google Docs.

MK: I learned a great deal about testing; in particular, how Selenium works. I had no idea that there were ready-made tools like this.

MR: Before this internship I could hardly imagine how software is tested. When you test your submission at an Olympiad in Informatics, you write generators and verifiers, but that’s easy; that’s just “in–out”. But how do you test a whole interactive system? I really had only vague ideas before.

GJ: It’s great to hear that! You’ve got me so interested that I think I’ll apply for this internship next summer [attention: sales pitch!… :-) ].

MK: Highly recommended!

MR: Brace yourself for a good deal of coding!



Michał Kowalczyk is a bronze medalist of the Polish Olympiad in Informatics, a participant in multiple programming and hacking competitions (e.g. Capture The Flag contests) and co-organizer of Wakacyjne Warsztaty Wielodyscyplinarne – a summer camp for gifted high school students. During his internship at Codility Michał worked on projects related to security and execution sandboxing.

Marek Rusinowski is a finalist of the Polish Olympiad in Informatics and organizer of workshops for high school students at the II High Schoolin Mielec. During his internship at Codility Marek worked on intranet services, data visualization and back-office automation.

Interested in joining Codility or doing an internship with us? Contact us on jobs@codility.com

Monday, October 7, 2013

Codility's Boron 2013 programming challenge found its 'rockstar'

Codility's Boron 2013 challenge found its 'rockstar', this time in Bolivia: Gabriel Rea Velasco (http://about.me/gareve). 

It took Gabriel 11 minutes (!) to submit his perfect solution. Programming rockstar indeed! Felicitaciones, Gabriel, and welcome to our growing hall of fame!




Gabriel was closely followed by:

  • Chenyang Wu (14 mins)
  • Sven Over (40 mins)

Congratulations to all contenders and happy coding to all of you until the next Codility challenge goes live, in about a month!