Módulos

Módulo I: Introducción y Estructuras de Datos

¿Qué se verá?

  • Introducción a la Programación Competitiva
  • ¿Para qué me sirve este curso de programación competitiva?
  • Novedades de este año
  • Estructura del curso de programación competitiva
  • ¿Cómo consigo los créditos RAC?
  • Tipos de competiciones
  • Tipos de problemas
  • Herramientas que utilizaremos
  • Complejidad en tiempo
  • Estructuras de datos
  • Arrays
  • Strings
  • Vectors
  • Listas, pilas, colas
  • Sets
  • Maps
  • Concurso introductorio

Grabaciones

Este año no se grabará el curso.

Bibliografia

Competitive Programming 3/4
Introducción a los algoritmos
Guide to Competitive Programming: Learning and Improving Algorithms Through Contests

Para aprender más

GeekforGeeks

Módulo II: Algoritmos de ordenamiento

¿Qué se verá?

  • Algoritmos de Ordenamiento
  • Bubble Sort / Selection Sort
  • Quicksort
  • Mergesort
  • Otro tipo de algoritmos de ordenamiento y búsquedas
  • Algoritmos Voraces
  • Búsqueda Binaria
  • Búsqueda Ternaria
  • Concurso sobre Algoritmos de Ordenamiento

Módulo III: Iniciación a problemas de Grafos

¿Qué se verá?

  • Representación
  • Recorridos (BFS, DFS)
  • Caminos y ciclos eulerianos y hamiltonianos
  • Ordenamiento Topológico
  • Puntos de articulación
  • Concurso iniciación a Grafos.
  • Concurso iniciación a Grafos.
  • Heaps
  • Floyd Warshall
  • Dijkstra
  • Union-Find
  • Prim
  • Kruskal
  • Concurso iniciación a Grafos.
  • Concurso grafos avanzados.

Módulo IV: Programación Dinámica

¿Qué se verá?

  • Introducción
  • Estructura
  • Memoización
  • Tipos de Programación Dinámica
  • Ejemplos
  • Fibonacci
  • Contar caminos
  • Knapsack
  • Memoización
  • Concurso final.

Calendario

Horario de 17:00 a 19:00, puedes observar el Aula y contenido de cada día pulsando encima de cada una de las fechas.

FEBRERO

3

Introducción
Aulario II: 001

10

Módulo I
Aulario II: 001

24

Concurso Módulo I
Laboratorios III: 109 y 111

MARZO

3

Módulo II
Aulario II: 001

10

Concurso Módulo II
Laboratorios III: 109 y 111

17

Módulo III
Aulario II: 001

24

Concurso Módulo III
Laboratorios III: 108 y 111

31

Módulo III
Aulario II: 001

ABRIL

14

Concurso Módulo III
Laboratorios III: 109 y 111

21

Módulo IV
Aulario II: 001

28

Concurso final
Laboratorios III: 109 y 111

Herramientas necesarias

Es recomendable tener instalado un entorno de desarrollo para el lenguaje de programación que se desee utilizar. El lenguaje más utilizado en programación competitiva debido a su velocidad es C++, no obstante de los mejores equipos históricos de la universidad mucha gente usa Java.

Para los concursos, podréis utilizar los entornos de desarrollo que tenéis en el entorno virtual, pero para practicar en casa no.

¿Dónde encontrarnos?

Tenemos dos grupos de Telegram para todos los asistentes. Uno pertenece al grupo de programación competitiva y otro a la asociación de Dijkstraidos. En ambos podeis consultar las dudas que tengáis y ayudaros mutuamente, junto con los profesores. En el grupo de la asociación además podrás disfrutar de una comunidad y organizar diferentes actividades ¿A qué esperas para unirte? ¡Creemos comunidad!

Preguntas frecuentes

  • Son competencias donde se mide las habilidades de programación y algoritmia de los participantes para resolver un conjunto de problemas lógicos y matemáticos.

    Muchas empresas realizan este tipo de competiciones en sus entrevistas de trabajo (Amazon, Google, Facebook, etc). Los participantes en programacióm competitiva tienen alguna ventaja al conocerlo de antes.

  • Es recomendable pero no necesario, el curso se aborda desde cero explicando los conceptos en los lenguajes de C++, Java y Python.

  • El curso aborda la mayoría de algoritmos en pseudocódigo y se facilitan los códigos en diversos lenguajes como Java, C++ o Python. No está centrado en un solo lenguaje.

  • ¡Claro que sí! En este curso abordaremos los diferentes conceptos y módulos desde un nivel introductorio, sin dejar de lado a aquellos asistentes más aventajados. Lo único necesario son ganas de aprender y de compartir el conocimiento con los demás.

  • El curso se impartirá los viernes de 17:00 a 19:00 presencial (previa inscripción).

    El aula en el que se desarrolle dependerá del número de asistentes inscritos y la disponibilidad de la Universidad. Lo iremos actualizando en el calendario que puedes encontrar más arriba.

  • Revisa el apartado de Materiales necesarios para traer preparado todo lo imprescindible para clase. Si tienes alguna problema, no dudes en preguntarnos por los grupos de Telegram.

  • Sí, el curso tiene una duración de 24 horas repartidas en clases de 2 horas a la semana. Esto equivale a 1.2 créditos RAC reconocidos por la Universidad para aquellos asistentes que acudan y participen activamente en las sesiones.

  • No se grabará el curso.

  • Si quieres ir adentrándote en el mundillo y practicando con algunos problemas, puedes empezar con Acepta el Reto o con OnlineJudge. También puede ayudarte toda la información de la web personal de uno de los entrenadores.

    Si tu nivel es más avanzado, ¿te atreverás con los retos de Codeforces?