A Maratona de Programação é uma competição promovida anualmente pela Sociedade Brasileira de Computação. Times de 3 alunos de uma instituição de ensino superior têm 5 horas para resolver vários (entre 6 e 12, em geral) problemas computacionais.
Os problemas envolvem, em geral, versões simplificadas de problemas do mundo real. Cada problema é descrito com uma historinha, que você deve interpretar, modelar como um problema computacional, resolver e implementar um programa com a solução.
Um exemplo de problema simples é o problema Braceletes Mágicos, da seletiva interna da UFMG de 2011. Um exemplo de problema um pouco mais complexo é o Computação em Nuvem, da Primeira Maratona Mineira de Programação (2012).
Existem vários motivos para participar da Maratona, e de outras competições de programação similares:
Se você é aluno de um dos cursos do DCC, é razoável supor que você goste de ciência da computação. A Maratona é uma maneira bastante divertida de desenvolver e testar seus conhecimentos na área.
Ao treinar para a Maratona, você vai desenvolver uma série de habilidades que são extremente úteis não apenas para o seu curso de graduação, mas também para a sua vida profissional.
Participando da competição, você vai ganhar um bom conhecimento sobre algoritmos, que vai te ajudar bastante ao longo do curso e da sua futura vida profissional. AEDS 3, que em geral é o pesadelo de todos os alunos do DCC, acaba se tornando uma das disciplinas mais fáceis do curso para quem treina para competições. Mas conhecimento avançado de algoritmos te ajuda em muito mais coisa do que só AEDS 3. Tudo em computação envolve, de uma forma ou de outra, algoritmos.
Tão importante quanto isso (talvez até mais importante) é o fato de que essas competições desenvolvem a habilidade de modelar e resolver problemas computacionais complexos, partindo do zero. Essa é uma habilidade que é será muito importante pelo resto da sua vida, e que talvez não seja tão enfatizada durante o curso de graduação. Em geral, ao fazer provas e trabalhos práticos de disciplinas do curso, ou é extremamente óbvio qual técnica deve ser usada para resolver um problema, ou então é fácil inferir pelo contexto: se o que você estudou desde a última prova foram algoritmos em grafos, então os problemas da próxima prova muito provavelmente são resolvidos com algum desses algoritmos. Na vida real, porém, as coisas não funcionam assim. Não importa se você vá para a indústria ou siga carreira acadêmica, você vai ter problemas, sem nenhum contexto, que você vai precisar modelar como problemas computacionais e resolver.
Resumindo: na vida real, ninguém vai te pedir explicitamente para resolver, digamos, o problema da mochila. Mas você vai encontrar problemas que podem ser modelados como o problema da mochila. Reconhecer isso para modelar e resolver problemas de forma eficiente é uma habilidade importante, que a maratona vai te ajudar a desenvolver.
Sabe a tal habilidade de modelar problemas complexos que citamos acima? Bem, ela é algo bastante útil, mas também é bastante rara. E várias empresas trabalham em problemas reais extremamente complexos, para os quais ainda não se conhece solução. Para essas empresas, pessoas com essa habilidade valem ouro.
Diversas empresas, de todos os tamanhos, têm cada vez mais procurado ex-maratonistas. Há *muitos* maratonistas trabalhando em empresas como Google, Facebook, IBM e outras, em problemas que afetam centenas de milhões de pessoas todos os dias. Se você tem algum interesse em trabalhar nesse tipo de problemas, a maratona pode ser o diferencial que você precisa.
Mas e se você quer seguir carreira acadêmica? Bem, bons pesquisadores também trabalham em problemas complexos sem solução simples conhecida. De novo, as habilidades que a maratona desenvolvem são extremamente úteis. Vários dos professores do DCC são ex-maratonistas, por exemplo.
Resumindo: a maratona pode ser a diferença entre passar o resto da vida escrevendo programas para controlar estoque de padaria e passar o resto da vida trabalhando em alguns dos maiores problemas da humanidade. Que você prefere?
Não que haja nada de errado em escrever programas de controle de estoque de padaria. Mas, honestamente, não é lá muito interessante.
Tudo o que está descrito acima ainda não te convenceu? Bem, existem algumas outras vantagens colaterais da Maratona, então:
A maratona é uma competição em várias fases. A maior parte delas (em geral, todas, exceto a seletiva interna) ocorrem fora de Belo Horizonte. Em 2011, por exemplo, times da UFMG participaram da final mundial em Orlando (EUA), da primeira fase em Lavras (MG) e da final nacional em Goiânia (GO). O departamento paga todas as despesas relacionadas à essas viagens.
Outras cidades que visitamos nos últimos anos incluem Varginha (MG), Juiz de Fora (MG), Campinas (SP), Rio de Janeiro (RJ), Vila Velha (ES) e Joinville (SC).
Balões! Primeira Maratona Mineira de Programação |
Temos um grupo de treinamento para competições de programação que realiza treinos semanais. Qualquer pessoa é muito bem-vinda nesses treinos, onde há várias pessoas que podem te ajudar a começar a resolver problemas.
Além disso, temos uma lista de discussão sobre a maratona, que é usada para discutir problemas. Inscreva-se nela, e mande um alô! Qualquer dificuldade ou dúvida que você tenha sobre algum problema ou algum assunto relacionado deve ser postada nessa lista.
Tecnicamente, você não é obrigado a treinar. Os times que participam da maratona representando o DCC são escolhidos através de uma competição interna, que é aberta para todos os alunos elegíveis do departamento (veja as regras de eligibilidade).
Na prática, se você quiser ir bem, treinar é essencial. É bem difícil chegar à final brasileira sem treinar nada, e é basicamente impossível chegar à final mundial nessas condições.
Em teoria, era para isso acontecer. Mas, na prática, isso nem sempre acontece. Em 2011, um time de alunos do primeiro período, que começou a treinar a pouco mais de um mês antes da seletiva interna, chegou até a final brasileira. Mas, apesar de terem começado a treinar tarde, eles treinaram muito. Então, todo mundo tem chance :)
De todo jeito, se o seu objetivo é chegar à final mundial, você vai precisar treinar bastante, e não existe nenhum momento tão bom para começar quanto agora.
Inscreva-se na nossa lista de discussão, e mande um email contando qual é a sua história (qual o seu curso? está em qual período? já participou de competições de programação antes?), e alguém vai te ajudar com os passos iniciais para o treinamento.
Os treinos presenciais atualmente ocorrem todas as sextas-feiras às 14h, na sala 2011 do ICEx. O treino é livre para todos os alunos, e basta você aparecer por lá. De toda forma, é bom mandar um email para a lista de discussão antes, para que preparemos um treino especial para você —– por exemplo, se você nunca participou de competições antes, os problemas que você deve tentar resolver num treino são bem diferentes do que os problemas que alguém que está treinando há 2 anos deve tentar resolver.
Ainda tem alguma dúvida? Entre em contato conosco.
11 times da UFMG e 21 times externos participaram; confira os resultados.
Leia mais »Times da UFMG conquistam primeiro, segundo e nono lugares na competição
Leia mais »