135 equipas de 47 países diferentes vão competir pelo título mundial de programação universitária. (Foto: DR)

A semana da Final Mundial do International Collegiate Programming Contest (ICPC) está a colocar a Universidade do Porto e a cidade Invicta no epicentro da programação e da inovação tecnológica a nível mundial. A Alfândega do Porto tem sido o palco de eventos como palestras com algumas das maiores multinacionais da área, uma hackaton, torneios de programação para estudantes do secundário, ou tech showcases. Mas o momento por que todos aguardam está marcado para as 11h00 desta quinta-feira, dia 4 de abril, hora a que as 135 equipas de jovens programadores de 47 países diferentes começam a competir pela conquista da edição deste ano do maior, mais antigo e mais prestigiado concurso universitário de programação do mundo.

Nesta fase derradeira do ICPC 2019 estará então apenas o grupo restrito daqueles que, nas fases anteriores do concurso, provaram ser os melhores entre os melhores no campo da programação. Cada equipa – correspondente a uma universidade – é composta pelos três membros que se qualificaram na fase anterior. É o caso do Alberto Pacheco, do Gonçalo Paredes e do Ricardo Pereira, os três estudantes da Faculdade de Ciências (FCUP) que vão representar a U.Porto. Uma participação que é, por si só, histórica. Afinal, é a primeira vez que uma equipa portuguesa chega à grande decisão do evento, em 43 edições.

Mas o que sabem os “atletas” antes de entrar em campo? Sabem, desde logo, que os problemas que o ICPC preparou vão ser colocados em inglês, que é, de resto, a língua que deve ser usada no contacto entre organização e participantes. Porém, as equipas podem também definir um intérprete para traduzir questões colocadas pelos participantes aos responsáveis da organização. Curiosamente, os participantes podem também usar tradutores electrónicos, desde que, como é óbvio, não comportem operações matemáticas.

Mas o inglês provavelmente não será uma das línguas mais utilizadas nesta final. Essas serão, certamente, Java, C, C++, Kotlin e Python, isto é, linguagens de programação, de cujo domínio depende o sucesso nesta prova. E por falar em dispositivos electrónicos, uma das regras básicas deste concurso especifica que, naturalmente, os concorrentes não vão poder levar os seus computadores, as suas calculadoras ou outros dispositivos electrónicos para a prova, porém, cada equipa terá à sua disposição um computador e uma calculadora, no local. O que cada membro pode levar é apenas um dicionário de linguagem natural sem anotações.

Uma maratona de programação

Durante as cinco horas de competição, os estudantes terão que resolver mais de uma dezena de desafios de programação. (Foto: Bob Smith(ICPC)

Uma vez iniciada a final, seguem-se cinco horas de intensa competição, para resolver, um por um, mais de uma dezena de desafios – nas últimas edições da Final Mundial, a prova tem consistido sempre em dez ou mais problemas. De cada vez que uma equipa submete uma proposta de resolução a um problema para avaliação do júri, diz-se que completa uma run (em português, “corrida”). Cada run pode ser considerada “aceite” ou “rejeitada” e a equipa será notificada em conformidade. Runs rejeitadas pelo júri poderão ser sinalizadas de três formas diferentes: “run-time error”, “time-limit exceeded”, “wrong answer”.

Ao longo da competição, os concorrentes só estão autorizados a dialogar com membros da sua equipa e podem ser desqualificados por ações que ponham em causa o desenrolar da prova, como, por exemplo, modificações não autorizadas no material disponibilizado aos concorrentes, comportamentos que causem perturbações ou simplesmente tirar cabos do sítio. Qualquer participante que identifique erros ou ambiguidades na formulação do problema pode exigir uma clarificação ao júri. De qualquer forma, antes da prova, o júri já terá resolvido todos os problemas em Java e C++. Mas como podem sempre surgir dificuldades imprevistas, e ainda que o concurso dure cinco horas, o júri tem autoridade para prolongá-lo, caso se revele necessário.

O júri é dirigido por Jo Perry, professora da Universidade de North Carolina State, nos EUA, e dele fazem também parte membros de instituições como a Universidade de Canterbury, na Nova Zelândia, Universidade de Baylor e do Westminster College, nos EUA, o KTH de Estocolmo, na Suécia, a Universidade Técnica Checa em Praga, ou o South African Radio Astronomy Observatory (SARAO), da África do Sul. Entre os 17 jurados, há também profissionais de empresas como a Google, a Apple ou a Cisco.

É esta a elite que vai ajudar a descobrir o novo campeão mundial. As equipas concorrentes desta Final vão ser classificadas de acordo com o maior número de problemas resolvidos. As equipas que se classificarem nos primeiros 12 lugares que tenham resolvido o mesmo número de problemas serão avaliadas de acordo com o total de tempo gasto e, caso seja necessário, pela rapidez com que tiverem submetido a última run aceite pelo júri. O tempo total contabilizado é a soma do tempo que a resolução de cada problema levou. O tempo gasto a resolver um problema é o tempo que vai desde o início do concurso até à submissão da primeira run aceite, mais 20 minutos de penalização por cada run rejeitada para esse problema.

Glória aos vencedores

As equipas que se classificarem entre as quatro melhores da Final Mundial serão agraciadas com medalhas de ouro. Entre estas, a melhor do top four será coroada como Campeã Mundial e receberá um troféu e uma placa comemorativa. As medalhas de prata estão reservadas para as equipas que terminarem do quinto ao oitavo posto e as medalhas de bronze para as equipas que terminarem do nono ao décimo segundo lugar. Todas estas equipas receberão também placas. Mas não só. Medalhas de bronze adicionais serão atribuídas a equipas que resolvam o mesmo número de problemas que a equipa classificada em 12.º lugar e com um total de tempo despendido nunca superior em 60 minutos ao daquela. A essas equipas será também atribuída a décima segunda posição.

A organização do ICPC vai também premiar as melhores equipas de cada região do mundo: os campeões das regiões de África & Médio Oriente, Leste Asiático, Ásia-Pacífico, Oeste Asiático, Europa, América Latina, Eurásia Norte e América do Norte receberão também placas.

A Final Mundial do ICPC vai decorrer entre as 11h00 e as 17h00 desta quinta-feira, no Centro de Congressos da Alfândega do Porto e pode ser acompanhada, em direto, aqui.