A Maratona de Programação é um evento promovido pela Sociedade Brasileira de Computação desde 1996. Ela teve origem nas competições regionais que classificam para as etapas globais do Collegiate Programming Contest (ICPC) e faz parte da super-regional latino-americana.
O evento é voltado para estudantes de graduação e início de pós-graduação em Computação e áreas afins, como Ciência da Computação, Engenharia de Computação, Sistemas de Informação, Matemática, entre outros. A competição estimula nos participantes a criatividade, o trabalho em equipe, a busca por soluções inovadoras em software e a habilidade de resolver problemas sob pressão. Anualmente, nota-se que instituições de ensino e grandes empresas do setor valorizam os alunos que participam deste evento.
Muitas universidades brasileiras organizam competições internas para selecionar seus melhores times para a Maratona de Programação. Os vencedores da Final Nacional, que é parte da regional latino-americana, avançam para as Finais Latino-Americanas, conhecidas como "Programadores de América". Esses times, por sua vez, têm a chance de representar a América Latina nas finais mundiais do ICPC. Este concurso envolve mais de 400.000 ex-participantes e, nos últimos anos, reúne competidores de mais de 100 países, 3.500 universidades e 75.000 participantes, incluindo treinadores e voluntários. Na América Latina, já houve mais de 100.000 participações, com cerca de um terço dos participantes vindo do Brasil.
Cada equipe é composta por três estudantes que, durante cinco horas, tentam resolver o máximo possível de dez ou mais problemas propostos. Eles dispõem de apenas um computador e materiais impressos (como livros, listagens e manuais) para superar o desafio contra o tempo. Os membros da equipe devem colaborar para identificar os problemas mais fáceis, projetar testes e desenvolver soluções que sejam aceitas pelos juízes. Alguns problemas exigem apenas compreensão, outros demandam conhecimentos técnicos avançados, e alguns são extremamente desafiadores.
O julgamento é rigoroso. Os problemas vêm com exemplos de casos de teste, mas os times não têm acesso às instâncias usadas pelos juízes. Para cada submissão incorreta (onde a solução não passa em uma das instâncias dos juízes), há uma penalidade de tempo. A equipe que resolver o maior número de problemas, com o menor tempo total considerando as penalidades, é declarada vencedora.