A prestigiada instituição americana Association for Computing Machinery (ACM) promove anualmente a realização do ACM International Collegiate Programming Contest (ACM-ICPC), um concurso mundial de programação disputado por equipas de alunos universitários. A génese deste evento remonta a 1970, com um concurso local no estado do Texas. Desde então, o número de alunos, o número de universidades e o número de países participantes tem crescido significativamente. Na edição de 2015/2016 estiveram envolvidos 40 266 alunos, de 2 736 universidades de 102 países espalhados pelos seis continentes.
Desenrola-se basicamente em 3 etapas:
Locais: São os concursos que selecionam as equipas que representam cada universidade nos concursos regionais. No nosso caso a MIUP tem servido esse propósito, mas não é obrigatório que uma universidade use a MIUP para selecionar as suas equipas.
Regionais: São concursos que agregam países/estados de uma mesma região geográfica do mundo e qualificam equipas para a final mundial. O número de equipas que se qualificam para a final depende da regional em questão (e em geral da sua prestação em finais passadas). A nossa regional é o SWERC. O SWERC'2016 será realizado na Faculdade de Ciências da Universidade do Porto, a 19 e 20 de novembro. As regionais de 2016 qualificam para a final de 2017.
Final Mundial: A final mundial é disputada pelas melhores equipas (qualificadas via regionais). Em 2016, 128 equipas foram apuradas para a final, que se realizou na Tailândia.
A organização em Portugal de um evento análogo ao SWERC tem como principal objetivo informar, cativar, motivar e preparar equipas de instituições universitárias portuguesas para uma participação meritória a nível internacional.
Estes concursos proporcionam aos alunos uma oportunidade de demonstrarem, e melhorarem, os seus conhecimentos de Informática e as suas capacidades de resolução de problemas. Além do convívio que uma competição como esta proporciona, o concurso constitui também uma excelente oportunidade para estabelecer novos contactos.
Mas a MIUP "vale por si só". Um desempenho positivo na MIUP é algo que podem e devem referenciar, por exemplo, no vosso curriculum.
Os concursos estilo ACM-ICPC são disputados por equipas de 3 elementos com direito a usar um único computador durante a prova. As linguagens permitidas são C, C++ e Java. Uma prova típica dura 5h para 8 a 10 problemas.
O objetivo é resolver o maior número de problemas no menor tempo possível. Destreza na resolução de problemas, bons conhecimentos de algoritmos, rapidez de programação e bom espírito de equipa são fatores importantes.
Os problemas são descrições de tarefas que podem ser automatizadas. Geralmente cobrem um vasto leque de áreas de aplicação, centrando-se a sua descrição nos requisitos de utilizador. Não será de esperar que a resolução de um problema se reduza à escrita de um algoritmo de ordenação, mas é razoável que envolva uma fase de ordenação, por exemplo, para apresentação dos resultados ordenados. Muitos problemas procuram simular o tipo de problemas que poderão ocorrer em situações reais numa empresa. Os problemas variam em grau de dificuldade, desde os simples aos que podem constituir um autêntico desafio.
Assume-se que os alunos têm conhecimentos de inglês, de matemática básica e de informática, com especial ênfase em algoritmos e estruturas de dados. Os problemas não requerem conhecimentos prévios muito avançados de uma área específica de aplicação. A descrição do problema será auto-suficiente, incluindo qualquer conhecimento específico de uma dada área que seja necessário à compreensão do problema.
Nisto, como noutras coisas da vida, não há nada como praticar. É claro que também devem tentar ter uma boa base teórica, mas o ideal é verem enunciados de problemas que tenham saído em concursos da ACM, tentando resolvê-los. Podem aproveitar a avaliação automática que alguns sites disponibilizam (vejam a secção Ligações úteis).
A organização da MIUP envolve duas comissões, uma comissão local de organização e outra de carácter científico.
A comissão científica tem como função elaborar o conjunto de problemas para o concurso e acompanhar o processo de avaliação durante a prova. Esta comissão é composta por docentes representantes de um alargado número de instituições universitárias. A avaliação dos problemas submetidos pelas equipas no decorrer da prova será feita pelo Mooshak, um avaliador automático desenvolvido no DCC-FCUP. Caberá ao júri da prova, composto por membros da comissão científica, confirmar os resultados do avaliador automático, responder a dúvidas apresentadas pelas equipas e decidir sobre eventuais problemas que surjam no decorrer da prova.
Podem consultar os membros de cada comissão na página respetiva.