Para Iniciantes

Afinal de contas, o que é essa tal de Maratona de Programação?

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.

Times da UFMG na Final Nacional de 2011 (Goiânia) Ambiente da Competição - Final Brasileira de 2011

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).

OK. E por que eu deveria participar disso?

Existem vários motivos para participar da Maratona, e de outras competições de programação similares:

Porque é divertido.

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.

Porque você aprende coisas úteis.

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.

Porque é um diferencial importante para o mercado de trabalho.

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.

Mas eu ganho alguma coisa participando da Maratona?

Tudo o que está descrito acima ainda não te convenceu? Bem, existem algumas outras vantagens colaterais da Maratona, então:

Viagens

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).

Prêmios
Algumas competições oferecem prêmios diversos. O mais comum são pequenos brindes, como camisetas, canecas, rádios, etc. Mas há também prêmios mais substanciais. Nos últimos anos, alunos do DCC já ganharam coisas como iPods, celulares, video-games e televisões.
Balões!
Balões! Primeira Maratona Mineira de Programação
Sim, balões. Em todas as fases da competição exceto a seletiva interna do DCC, um time recebe um balão para cada problema resolvido corretamente. Ok, isso não é uma vantagem lá muito grande. Mas tecnicamente você ganha esses balões também...

Certo. O que eu preciso saber para começar?

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.

Hmm, treinar? Eu preciso mesmo treinar?

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.

Mas, se eu começar agora, eu não vou apanhar horrores para quem já está treinando há mais tempo?

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.

Como eu faço para participar?

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.

Notícias

Seletiva Interna para a Maratona de Programação

Inscrições Abertas

Leia mais »

Seletiva Interna para a Maratona Mineira 2013

11 times da UFMG e 21 times externos participaram; confira os resultados.

Leia mais »

Primeira Maratona Mineira de Programação

Times da UFMG conquistam primeiro, segundo e nono lugares na competição

Leia mais »

Próximas Competições

Maratona Mineira de Programação
25 de Maio
Itajubá, MG