La Competición Internacional Universitaria ACM de Programación (en inglés ACM International Collegiate Programming Contest, abreviado ACM-ICPC o simplemente ICPC) es una competición anual de programación y algorítmica entre universidades de todo el mundo patrocinada por JetBrains. En la competición prima el trabajo en equipo, el análisis de problemas y el desarrollo rápido de software. ICPC es un evento auspiciado por la Association for Computing Machinery (ACM).

El ICPC es una competición por equipos. Las reglas actuales estipulan que cada equipo ha de tener como máximo 3 miembros. Los miembros han de ser estudiantes universitarios, que hayan estudiado menos de 5 años en la universidad antes del concurso. Los estudiantes que hayan competido en dos finales mundiales (World Finals) o cinco competiciones regionales no pueden participar otra vez.

Durante la competición, los equipos tienen alrededor de 5 horas para resolver entre 9 y 12 problemas (lo normal es 10 para las competiciones regionales y 12 para la final). Se deben programar las soluciones con C, C++, Java o Python23​ (aunque no está garantizado que todos los problemas sean solucionables usando Python). Los programas enviados por los equipos se compilan y ejecutan con unos ciertos datos de entrada, si el programa falla al calcular la solución, el equipo es notificado del error y pueden enviar nuevamente el programa o probar con otros problemas.

El ganador es el equipo que resuelve más problemas. Si hay equipos empatadas con el mismo número de problemas resueltos, el orden de clasificación se calcula a partir de los que han tardado menos en resolver los problemas.

La competición tiene distintas fases clasificatorias. Algunas universidades tienen competiciones locales para elegir a los componentes de los equipos. Cada universidad puede mandar un máximo de equipos de 3 personas a la fase regional que puede variar en dependencia de la región. Las competiciones locales son opcionales y las organiza cada universidad como estime conveniente. Algunas universidades optan por seleccionar a los alumnos con notas más altas o a los que muestran más interés.

Los equipos de cada universidad participan en la fase regional, con otros equipos de universidades próximas geográficamente. Hay más de 30 regiones en todo el mundo. Algunas regiones agrupan distintos países (por ejemplo la SWERC incluye a España, Portugal, Francia y otros países Europeos), otras son un sólo país (la región de Brasil) y otras son sólo parte un país (Estados Unidos está dividido en varias regiones). Los mejor clasificados en cada competición regional participarán en la final mundial. Cada región envía a la final un cierto número de equipos, no pudiendo haber más de un equipo de una misma universidad.

La final mundial se celebra cada año en un lugar distinto y congrega a los equipos ganadores de todas las competiciones regionales.