Posted
by
Soulskill
on Saturday August 15, 2009 @11:21AM
from the still-working-on-a-beard dept.

marcog123 writes "The International Olympiad in Informatics was held earlier this week in Bulgaria. The IOI is a programming competition for high school learners up to 20 years of age that has a focus on problem solving and algorithms. It was won by 14-year-old Henadzi Karatkevich of Belarus (PDF, list of gold medalists), beating the world's top high school programmers, including 18- and 19-year-olds, to become the youngest winner in the IOI's 21-year history. Competition is really tough, with some countries taking months off school to concentrate only on IOI training. Henadzi first entered the IOI in 2006 when he was only 11 years old and won silver (missing gold by only six points). He won gold in 2007 and 2008. He has the opportunity to enter for the next three years; that is, unless he follows the path of Terence Tao, who won IMO gold at 12 and then went to university the following year. If he continues his current streak, he will easily surpass the current record of six IOI medals by South Africa's Bruce Merry."

This just shows more about the fact that those who are great programmers are so not because of school, but because they have interest on it on their own. My own school was kind of a joke - everyone just played flash games during hours and did the least amount needed, while it was quite standard stuff too. I started programming at 8 years old, pretty much after I had learned to read (quick basic stuff obviously, but still). However atleast I had a nice teacher that understood my side aswell and let me do my own stuff like 3D game programming during the hours as long as I did the final test. Truth is most of people are quite non-intelligent about that stuff on schools, unless they do programming as a hobby.

And I can bet I was better at programming at 14 too then they were at 18 (as self conscious as that sounds). Fact is, if you're really interested on things and do it as hobby and just for fun, you will be even better than most adults are . You may lack some experience, but thats 50/50 good and bad. It's what enables you to do new things.

That being said, as this is international programming and problem analysis competition the others we're probably quite good aswell, so lots of kudos for Henadzi for winning it. You will have a good future.

The crux is that you really can't teach programming. A good programmer has an intuitive feel for how to solve a problem. You can't get that from lectures and books. I started programming early as well, and I did stuff in my first year of high school that many first year college CS students would struggle with. Don't get me wrong, in retrospect, it was pretty terrible code, but when push came to shove, it worked, and I got to walk into traps and discover concepts 5-6 years earlier than your average school-brewed programmer.

Getting back to the point, teachers can at best help you teach yourself programming. But even then, only so far.

In that sense, programming is a lot like art (even though I don't consider programming art, it's a craft at best.) You really can't learn how to be a painter from books either. They can set you in the right direction and open your mind to new possibilities, but in the end, practice is the only way to get anywhere.

Wrong. That's how I end up seeing lots a crap code. *Designing software* is daydreaming with rules. Programming is a different activity. Programming is engineering. Engineering is not fundamentally about imagination, it is ENTIRELY about rules. You don't daydream a bridge, you engineer one. You might daydream some design features, but then you implement them with engineering. Books and lectures teach competent people how to be competent engineers. That is true for bridges and it is true for software. Books alone do not teach people how to be good designers, it's a talent which can be grown but can not be fully imparted. I think people who confuse the two do a TREMENDOUS disservice to the world.

Mere words cannot describe how wrong you are. How are you going to write good code without having a mental image of your data structures? How do you understand someone elses code in the first place?

You seem to think imagination is something artsy people use to decide the color of the carpet. I say it's a fundamental component of learning, understanding and creating everything you associate with science.

You seem to think imagination is something artsy people use to decide the color of the carpet

I agree. I once worked on a project with a group of scientist. There was one guy there that everyone (even other scientists from prestigious universities) talked about with awe. He could keep a thousand details in his head. He developed his software quickly, it worked, and was mathematically correct. However, it was difficult to use or re-use his code. It just didn't have the organization or modularity needed. It takes artistic talent (for want of a better term) as well as mathematical ability to develop good software.

You can't really separate 'programming' from 'software engineering'. Developing software is a holistic process - it requires problem-solving ability, strong synthesis and analysis skills, excellent judgement, and a healthy dose of imagination. At every point, you have to decide between dozens of different trade-offs - between scalability and performance, robustness and readability, maintainability and development time.
Good programmers are the ones who can balance these attributes to craft the right solu

There was one guy there that everyone (even other scientists from prestigious universities) talked about with awe. He could keep a thousand details in his head. He developed his software quickly, it worked, and was mathematically correct. However, it was difficult to use or re-use his code. It just didn't have the organization or modularity needed. It takes artistic talent (for want of a better term) as well as mathematical ability to develop good software.

I don't think he ever said that imagination was not necessary - his point was that it was necessary, just not sufficient. He specifically stated that you needed to be competent/talented or the books won't help at all. But if you are imaginative, it is necessary to be able to get your code polished to whatever point is useful - e.g. to work in all situations that will arise, to be easily maintainable by other people if other people will need to maintain it, etc. I think for these sorts of things you need exp

I think I'll have to settle for mere words in my rebuttal: not to split hairs, but it sounds like you're describing "intelligence", not "imagination"...at least, that's how I'd define it. By the definition you seem to be implying, imagination is necessary for not just science (as you note), but for creating everything: science, history, literature.... I suppose you could say that I was agreeing with you when I said that the books required "competent" learners.:)

In early days it is vitally important for people to 'build' something from their abstract ideas. These things may be toys but there's nothing wrong with that. This gives them experience in the problems of construction and the techniques and satisfaction of solving them.

The very quick minds of the talented need support from the greybeards. They will keep reinventing the wheel, often badly, but that's the nature of adventurous youth. The extra experience and knowledge of the mature bods should be a reso

Stop programming with libraries...
Try writing some code with direct interfaces to the hardware.
The true programmer understands the how and why of their computers, the libraries that you use prevents you from knowing this, and make you no better than a script kiddy.

I very much understand what engineering is. And I recognize that formal engineering isn't necessary to program. But I think the analogy holds. Or do you think people building rope bridges in the Amazon are practicing formal engineering? It's very much possible to build a bridge without engineering skills...and it's possible for it to be solid, and functional. Similarly, it's possible to program without any knowledge of engineering, and to produce software which works, and does the job. So, no, program

Perhaps I am missing something, but did you have a point beyond, "You're wrong"? Because it seems to me that you're thinking I'm going to adopt a different point of view because "javabandit said so"....

I was going to qualify this, but you know, you nailed it. In programming, beyond your basic loops and syntax, is a completely unique problem, and you are probably the only person in the universe who is ever going to encounter it. What you have to do is start figuring out how to solve problems.

Now, a teacher can help get you trained for solving problems, by giving practice problems and walking students through the frustration of solving them, but ultimately, a programmer has to be able to diagnose and crea

Pardon me, but anytime you want to express an coding idea from one person to another, anytime you make an API that must then be understood by another, you are in the realms of art, because it is precisely the beauty of a system that (should!) drive you to use it.

Pardon me, but anytime you want to express an coding idea from one person to another, anytime you make an API that must then be understood by another, you are in the realms of art

It's an interesting thought, but it sounds more like you're describing "elegance" or "inspiration." A lot of jobs in the information age require a suceptibility to inspriation and original thinking, thought we can take it too far sometimes. When you get a sandwich at Subway, it's made by someone who's technically called a "sandwich artist" after all. I'm sensitive to people's need for creative recognition, but I'm not sure I'd go so far as to call the guy m

"What is art" is a such a controversial and little understood area of philosophy (admittedly I don't consider myself adequate to the task really understanding all the issues.)

Coming from the design world (product, exhibit, and interface design,) which are definitely crafts but not art, I'd take exception with you both (TCPF and Iluvcapra) to varying extents.
Contrary to how many see it, art is not centrally about "communication." I think most artists would agree that their art is for themselves and that i

Contrary to how many see it, art is not centrally about "communication."

I'm not sure you've completely explicated this, because...

As soon as it becomes about communicating a message, producing multiple copies, making money, etc.

This is a non sequitir, it does not follow that the act of communication is tantamount to commerce. They are completely different things, there's a relationship but you're implying that any artist who is trying to communicate a message is simply prostituting himself for economic gain, or that the only true art is art that is a pure expression of the self. This is pretty contentious, particularly for folks who remix other people's works, and for peo

Problem is that guys like you think you're special. Bit of talent, (continuing) education, and putting in the efforts turn out competent programmers, and those are the ones in demand in mass, not some "special" people.

Programming can be learned by book.... It just requires a computer to practice on as well. Hands on experience along side a good book can teach anyone. The fact is, most people CAN start to think in simple, logical and sequential steps already, and once you write out your idea, you can translate it into code. from there, you optimize.Likewise, you can take code in the book and tinker with it. Reuse concepts until you understand it... In the end, you will be able to read code, Mimic the code, and event

Sadly, I believe that article is quite out of date. Pointers and recursion are so passé to most IT

I think today's programmers are said to be horribly out of it when they don't know how to apply the Distributed Observer Pattern to RESTful business logic as a ROA with declarative state transformation rules.

I'm such a useless old fart to today's programming requirements that I'll content myself with some lowly kernel hacking, SAT solver tuning and code optimization.

$ ed parentpost4741Sadly, I believe that article is quite out of date. Pointers and recursion are so passé to most ITs/most/current/s/$/./1Sadly, I believe that article is quite out of date. Pointers and recursion are so passé to current ITwq478$

How does this support this fact? Do you have a quote from the winner where he states that he only learned this just becouse he was intrested and it was his hobby?

Becouse I can bet my ass that it's the complete oposite. Just becouse you learned all programming by yourself and your school sucked doesn't mean this guys programming education did. First of all, when you're young programmer you're probably a lot more intrested in WHAT you can make the programs do rather than HOW to do it efficiently/quickly. B

He is 14 years old. There's no school in world that teaches advanced programming and problem solving at that age. Hell, even the math at that age is quite standard and easy. It's obvious he learned it by motivation, not from schools.

I think you're underestimating how seriously some countries take these events - while I'm sure he got started in it because he was interested in programming, preparation for these events typically involves collecting the best talents from national events and putting them through rigorous training (in the interview pdf linked above, he mentions the training camps they use to select the people they send to the event).

This goes quite a bit beyond "schools", to be sure. But if you think competitors in these ev

A web developer or a functional programmer wouldn't stand a chance here as normal programming only in rare cases involves advanced algoritms like maximum bipartite matchings, maximul flow or other graph related algorithms.

Functional programmers will stand a better chance in these competitions. It is arguably easier to implement graph algorithms in functional programming languages than in imperative programming languages. There are proportionally more functional programmers who have a firm grasp of algorithm design and implementation than programmers who have not used functional programming languages.

That is so mistaken it is hard to know where to begin addressing it. Personal interest will provide motivation to learn. That's it. Period. End of story. Don't confuse desire with ability - they aren't the same thing at all. After that it is about learning. One of the things you learn is problem solving approaches. This is fundamentally no different than if the subject was, for example, calculus. You learn logic (in the formal and colloquial senses of the word). You learn how other people have already solve

"It was won by 14-year-old Henadzi Karatkevich [...] to become the youngest winner in the IOI's 21-year history. [...] Henadzi first entered the IOI in 2006 when he was only 11 years old and won silver (missing gold by only six points). He won gold in 2007 and 2008."

Many of the high school science Olympiads are rather generous with medals. I don't know about IOI, but the International Chemistry Olympiad gives out golds to about 10% of the competitors, silvers to the next 20%, and bronzes to the next 30%, leaving only 40% without a medal.

If you look at the history of IOI winners (especially multiple winners, found at the Wikipedia [wikipedia.org] entry, most of them originate from former Soviet republics and Soviet-aligned countries (i.e. Eastern Europe). I currently fail to provide an adequate explanation for this phenomenon: yes, there are plenty of talented programmers in Russia, but as far as I can tell, software industry per se is virtually non-existent there (at least compared to the US).

If you look at the history of IOI winners (especially multiple winners, found at the Wikipedia [wikipedia.org] entry, most of them originate from former Soviet republics and Soviet-aligned countries (i.e. Eastern Europe). I currently fail to provide an adequate explanation for this phenomenon: yes, there are plenty of talented programmers in Russia, but as far as I can tell, software industry per se is virtually non-existent there (at least compared to the US).

My hypothesis is that before the Soviet fell, there really wasn't a lot of personal computer technology available to Vladimir Sixpack. And that was only some 20 years ago, so the current generation of former Soviet adolescents are among the first to have grown up with computers.

Actually (as a citizen of Czech Republic, former Eastern block state), I think there were several factors:

1. Communist regime actively encouraged smart people to work in mathematics, technology and natural science fields. When I was in 6th grade, I went to several hobby groups (organized by the local communist youth organization) - one dealing with natural sciences and second dealing with electronics. While such clubs exist today too, the participation is not so much enforced on the parents.

2. Today, you can buy almost anything in the shop. Back then, you couldn't. It was natural for people to know how to repair various things, and experimentation with electronics (and later computers) was very common among young people.

3. Life in communist regime was _extremely_ boring. Doing any technical hobby was a way to escape this boring reality.

Having a technical hobby is much easier now, because you have specialized shops that will sell you anything you need (which weren't the case at all back then), but much less people actually do it (there is also so much of other stuff to do to enjoy life).

By the way, I know Martin Mares (one of the frequent winners) personally from the high school - boy, he was and is smart! He could program in assembler like someone would write a letter, and talk to me about differential equations in the meantime. Still, I don't think IOI is so difficult as IOM, so the comparison with Terence Tao doesn't really hold water that well.

Communist regime actively encouraged smart people to work in mathematics, technology and natural science fields.

It is mostly that. Technical education, especially in hard sciences, was always superior in the USSR (can't say about the rest of the Bloc, but I'd imagine it was about the same). It is not quite on the same level now, but it's still strong. There are many specialized "advanced schools" which teach some pretty complicated math in final school years (in the one I studied in, we did path integrals, for example - that was in late 90s).

It also helps that those schools are free, too - so long as you qualify. End

It also helps that those schools are free, too - so long as you qualify. End result is that the brighter kids, regardless of background, are segregated from the rest, and receive education matching their abilities - and, as I mentioned earlier, there's a strong emphasis on math, physics, and other hard sciences. This definitely helps shape the mind for programming.

Absolutely. That's a common thread with geniuses who achieve a lot in life - not only are they born with the intellectual horsepower but they al

Well, lacking access to hardware and barely getting some doesn't look like a viable explanation, now does it? Otherwise, the OLPC project would have generated a tremendous influx of Peruvian and Congolese software engineers, had it succeeded:P. Where is no or little software industry and no advanced CS research departments, there is nobody to teach the kids.

P.S. Actually, USSR (as opposed to modern Russia) had some pretty decent computer industry for a long while. Until they began copying American technol

Well it could be because, as far as I can tell, this meaningless high school contest is held in Bulgaria, which is within in the eastern block. It doesn't take much to get there from Eastern Europe and I think you'd find that kids from the region make up most of the competition.

TFA seems to also indicate that the kid who wins generally takes time off of school to do nothing but prepare for this thing. Generally speaking, only backwater countries who want anyone to remember they actually exist allow this so

The international olympiads are held in maths, Informatics and the sciences, and are actually quite prestigious events - most large countries send full teams, and it's held in many countries.

Similarly, most countries do put a significant amount of effort into the selection and training of the teams (here's the US training organisation's site, for example [uwp.edu]). While the exact amount of effort varies, it's still a fair time contribution, even in the US. Luckily, the prestige of the event tends to offset any minor issues it causes in other areas of the student's study.

I'd think it was bullshit even if it was one by the US every year, I thought it was bullshit before I even read the kids name. The fact that it was held in Wisconsin when I was actually in Wisconsin in a university computer science degree program and I've never heard of it before is a fair indication that it's probably not considered all that important. The fact that they held it at UW parkside is another. The UW system has about 15 schools, and parkside is just about the smallest and least prestigious of t

The fact that it was held in Wisconsin when I was actually in Wisconsin in a university computer science degree program and I've never heard of it before is a fair indication that it's probably not considered all that important.

Because it is not a sports event. I was on an international chemistry olympiad team that won 4 gold medals, and only 1 newspaper bothered to puta short notice about this. High school olympiads don't get much media attention.

It's an informatics spelling bee. The kid may be brilliant, he may be nothing. He may go on to invent something absolutely amazing, he may end up flipping burgers for the rest of his life. None of these contests are ever solid indicators of future success.

No, they are not 'spelling bees'. Have you even looked at any of the problems? I am estimating that 90% of employed programmers would not be able to solve some of them.

Therefor a country which really wants to prove that it's not a completely inconsequential backwater or for whom having a winner of something like this would mean something to the general citizenry is likely to approve it are likely to bother.

Your vision is that participation in the international olympiads requires government dispensation from school? No, it on

No prejudice. The OP pointed out a statistical anomaly which isn't backed up by external evidence(there aren't a disproportionately high number of Eastern Europeans in any other area of IT that I know of). I fully believe that these kids are probably fairly smart and were definitely the best at whatever the competition actually tested(whether that's informatics or not). I also know that a lot of times, these sorts of international prizes go to the country which is willing to dedicate the most resources to w

This comment is half heresy because I was born and raised in the USA by Romanian parents. What I understand is during the Communist era of the Soviet Union and Soviet Bloc countries, education was greatly elevated. The thinking behind this was that the Communist countries would use the brainpower of their people to propel themselves above the degenerate West. (Its ironic that at least here in the US the opposite philosophy was followed, we make our people too dumb to notice there is a fundamental problem with our education system and then import talent from other countries when needed.)

Teachers in these countries were expected to be subject matter experts at all levels of instruction, and not just yahoos with lesson plans and an inability to see multiple solutions to a problem (I am speaking from my personal experience with the American public education system here. The fundamental difference comes down to teaching how to find methods to approach and solve different problems vs teaching a method to solve a single problem and requiring little or no understanding of the underlying concepts at play. At least so I am told. It does explain some things.

The descendants of people in this system (I hear at least in Romania the schools are not what they used to be) are reaping the benefits, and over here in the USA kids are worried about being safe in school, getting shot, or being ostracized by their peers for somehow being smart or trying hard (and being punished by the system for the same).

The thinking behind this was that the Communist countries would use the brainpower of their people to propel themselves above the degenerate West. (Its ironic that at least here in the US the opposite philosophy was followed, we make our people too dumb to notice there is a fundamental problem with our education system and then import talent from other countries when needed.)

Yep, that's the genius of our system. We see what you were saying, so we exploit the elevated brainpower of those poor foreigners b

Education used to be to very high standards, especially in "hard" sciences. As a side-note, we never had the misconceptions that girls are not good at maths and as a result I recall that in highschool the top 5 students in maths were all girls; us boys had a chance to compete in physics and chemistry though.

The system had one flaw however, in that it emphasized theory instead of practical implementation.

What's also worth mentioning however, is that the quality of education in some of these post-communist countries has now plummeted - I was in the Ukraine a year or so ago and the stories of the quality of 'university' education there are shocking (in one computer science paper the entire 'assessment' for the paper was to translate parts of a computer science textbook from english to ukrainian so the professor could publish it under his name and get recognition for that.... which meant that the students bec

I've been to the ACM programming contests a couple of times. While we (two physics students and myself a math student, we easily eliminated the CS students in the local university qualifying round) were doing somewhat ok, we suffered from lack of preparation (which basically consisted of bringing along a copy of Sedgewick's "Algorithms in C"). The other teams (most notably the St. Petersburg and other eastern european teams) had coaches, months of preparation behind them and brough

Thats true, a lot of great programmers come from eastern Europe. For example MPlayer is a Hungary based project. And I remember an article that said that many writers of viruses come from Bulgaria.
I think the reason for this may be the fact, that in many communist countries computer scientists tried to reverse engineer western technology, and therefor had a very low-level knowledge of things most people in the west hadn't.
I think it makes a great difference if you started programming in Pascal or in Assem

You're very wrong. Software industry is alive and well in Russia and ex-Soviet Bloc countries. It's not very visible because:

1) Most of software companies work on outsourced projects. You might be using software developed in Russia and don't know about it (examples: recent versions of Microsoft Flight Simulator, Heroes V, etc.)

2) A significant part of software companies produce software for domestic consumption.

India probably has one of the most active software industries out there, but how many major Indian software products do you use on a daily basis? (Indian CEOs and branch offices don't count) If you're a global company, you tend to make the USA your HQ. It just makes sense given the dominance of the USA stock exchanges.

yes, there are plenty of talented programmers in Russia, but as far as I can tell, software industry per se is virtually non-existent there (at least compared to the US).

Remember that 95% of all code never leaves the organization it was written in. You may not know any commercial software products from Russia, but there's definitely a lot of in-house programming going on.

I haven't specifically looked at the USACO problems, but the IOI isn't about programming so much as algorithm design. People who do well in it are likely to be capable of getting a PhD in computer science.

You know, that has to be the worst website design I've seen in a while. It's actually a lot like the websites I used to make when I was a kid and into programming them by hand, I mean does nobody there look at this thing and go "My god, that's ugly!"?. I suppose it is fine functionally, but frames haven't been a good idea from a design perspective since the 90's, and the font choice and color choice are horrible.

I mean, come on people, is it really that hard to have someone with an eye for good design loo

Because it has never happened before? You do realize that an 18 year old is 30% older than a 14 year old, and that entire 30% is in the higher developement - the stuff like programming.

Would you not be surprised that an engineer fresh out of school is a better engineer than all the other engineers at the firm that hired him? Of course you would. Raw talent usually means you're better than the worst to start with, experience counts for a lot and it takes both to be the best. Being young and having a lot

Because it has never happened before? You do realize that an 18 year old is 30% older than a 14 year old, and that entire 30% is in the higher developement - the stuff like programming.

A 14 year old is 20% younger than an 18 year old, not 30%. The proportional difference is not a fair means comparison. There are many 14 year olds who are more developed than most 18 year olds, and they would be the ones to get entered into contests like this one.

I believe the winner competes under the handle of Tourist on TopCoder. He's ranked 14th currently (among competitors of all ages). There is exactly one North American ranked higher than him (ICPC legend and generally amazing Derek Kisman).

And who do I expect to win IOI? An 18 or 19 year old. This is a very prestigious competition, and many of the competitors have been training hard for years. 14 to 18 is a significant age gap and many of his competitors are amazing prodigies in their own right. I find

It would be far more interesting if a 14-year-old won an international contest whose participants included college students studying CS at an advanced level:)

He *has* done this before. He was the top individual in this year's IPSC [ipsc.ksp.sk], which is open to everyone. He's also had an excellent record recently in TopCoder [topcoder.com], which is also open to everyone: he's currently ranked 14th [topcoder.com] and is by far the youngest in the top 50. Unfortunately all of the major open international contests are restricted to those 18 and older.

Don't know how this is news. Anyone who concentrates on something hard enough will get it eventually, age doesn't matter. It seems silly to people in America maybe because kids now are too interested in jacking their brains into Xbox Live and their iPhones.
I used to be heavy into that stuff as well... but then I got a social life and found out early on that life is way too short to waste your life completely on it. Do it for fun or for your job, but if you eat, live and breathe it, it will destroy you.

18- and 19- year olds are still competing? If they were smart enough enter, wouldn't they already be in college/university instead of grade school? Anyone that didn't medal shouldn't be invited back the next year. Now THAT'S incentive to perform.