Módulos

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

¿Qué se verá?

  • Introducción a la Programación Competitiva
  • Estructura del curso
  • Tipos de problemas y competiciones

  • Novedades de este año y herramientas que utilizaremos
  • ¿Qué es un juez? ¿Cómo funciona?
  • Primeros concursos
  • Complejidad en tiempo
  • Arrays, Vectors
  • Strings
  • Listas, Pilas, Colas
  • Conjuntos

  • Mapas
  • Colas de prioridad
  • Árboles

Módulo II: Algoritmia básica

¿Qué se verá?

  • Algoritmos de Ordenamiento
  • Algoritmos de Búsqueda
  • Algoritmos Voraces
  • Ventana deslizante
  • Otras estrategias

Concursos

El concurso de este módulo se realizará en conjunto con el Módulo III.

Recursos

VisuAlgo
Competitive Programming 3/4
Introducción a los algoritmos

Módulo III: Iniciación a Grafos

¿Qué se verá?

  • Representación
  • Recorridos por anchura
  • Recorridos en profundidad
  • Caminos de coste mínimo

Módulo IV: Fuerza bruta y Programación Dinámica

¿Qué se verá?

  • Introducción
  • Estructura
  • Memorización
  • Tipos de Programación Dinámica
  • Ejemplos
    • Fibonacci
    • Contar caminos
    • Mochila

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

7

Introducción
Laboratorio III: 111

14

Módulo I
ED I
Laboratorio III: 111

21

Concurso
ED I
Laboratorio III: 111

28

Módulo I
ED II
Laboratorio III: 111

MARZO

7

Módulo II
Algoritmia
Laboratorio III: 111

14

Módulo III
Grafos
Laboratorio III: 111

21

Concurso
Algoritmia + Grafos
Laboratorio III: 111

28

Módulo IV
Fuerza bruta y DP
Laboratorio III: 111

ABRIL

11

Concurso Final
Laboratorio III: 111

Herramientas necesarias

Es recomendable tener instalado un entorno de desarrollo para el lenguaje de programación que se desee utilizar. Por su sencillez y rápido aprendizaje, el curso se va a realizar utilizando principalmente Python. Sin embargo, como el lenguaje más utilizado en programación competitiva debido a su velocidad es C++, y los mejores equipos históricos de la universidad mucha gente usa Java, se va a proporcionar ayuda para estos otros lenguajes.

Para las sesiones y los concursos, podréis utilizar los entornos de desarrollo que tenéis en el entorno virtual de los laboratorios. Para practicar en casa, aunque se puede utilizar el entorno virtual desde la herramienta de MyApps de la Universidad Rey Juan Carlos, se recomienda tener preparado el entorno en vuestros dispositvos.

¿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 Python, Java y C++.

  • El curso aborda la mayoría de algoritmos en pseudocódigo y se facilitan los códigos en diversos lenguajes como Python, Java y C++. Sin embargo, para la realización de problemas en las sesiones, se realizará la solución en Python y se proprocionarán las soluciones en el resto de lenguajes.

  • ¡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 será la 111 del edificio de Laboratorios III.

  • 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 Kattis. También puede ayudarte toda la información de la web personal de uno de los entrenadores.

    Si no solo sabes en programar en Python y quieres probar otras plataformas que permiten enviar soluciones en C++ o Java, puedes probar con Acepta el Reto.

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