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, universidades e 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.
O concurso desenrola-se basicamente em três etapas:
Locais | Concursos para selecionarem as equipas que posteriormente irão representar 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 | Concursos que agregam países ou 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 dependem da regional e da sua prestação em finais anteriores, a nossa regional é o SWERC.
Final Mundial | A final mundial é disputada pelas melhores equipas qualificadas pelas regionais. Em 2017, 150 equipas foram apuradas para a final, que se realizou na Rússia, Moscovo.
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, bem como, 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.
A MIUP "vale por si só", um desempenho positivo é algo que podem e devem referenciar no vosso curriculum, por exemplo.
Os concursos estilo ACM-ICPC são disputados por equipas de três elementos com um único computador durante a prova e as linguagens permitidas são C, C++ e Java. Uma prova típica dura cinco horas para oito a dez 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 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 (ver 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.