Módulos
Módulo I: Introducción a Programación Competitiva
¿Qué se verá?
- Introducción a la Programación Competitiva
- Estructura del curso
- ¿Cómo consigo los créditos RAC?
- Tipos de problemas y competiciones
- Novedades de este año y herramientas que utilizaremos
- ¿Qué es un juez? ¿Cómo funciona?
- Primeros concursos
Diapositivas
Concursos
Ejercicios
Recursos
Competitive Programming 3/4
Introducción a los algoritmos
Guide to Competitive Programming: Learning and Improving Algorithms Through Contests
Módulo II: Estructuras de Datos
¿Qué se verá?
- Complejidad en tiempo
- Arrays, Vectors
- Strings
- Listas, Pilas, Colas
- Conjuntos
- Mapas
- Colas de prioridad
- Representación de Grafos
- Recorridos BFS y DFS
Módulo III: Algoritmia básica
¿Qué se verá?
- Algoritmos de Ordenamiento
- Algoritmos de Búsqueda
- Algoritmos Voraces
- Ventana deslizante
- Otras estrategias
Diapositivas
Concursos
Ejercicios
Módulo IV: Grafos
¿Qué se verá?
- Representación
- Recorridos por anchura
- Recorridos en profundidad
- Caminos de coste mínimo
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
6
Módulo IIntroducción
Laboratorio III: 111
13
Módulo IIED I
Laboratorio III: 111
20
ConcursoED I
Laboratorio III: 111
27
Módulo IIED II
Laboratorio III: 109
MARZO
6
ConcursoED II
Laboratorio III: 109
13
Módulo IIIAlgoritmia
Laboratorio III: 109
20
ConcursoClasificatorio Ada Byron
Laboratorio III: 109
27
Módulo IVGrafos
Laboratorio III: 111
ABRIL
10
Concurso FinalLaboratorio III: 109
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.
Inscripción
La inscripción está disponible para alumnos de la Universidad Rey Juan Carlos, es gratuita y se debe realizar desde el formulario que puedes llegar desde el siguiente botón.
¿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
-
¿Qué es la programación competitiva?
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.
-
¿Necesito previamente conocer un lenguaje de programación?
Es recomendable pero no necesario, el curso se aborda desde cero explicando los conceptos en los lenguajes de Python, Java y C++.
-
¿En que lenguaje se da el curso?
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.
-
¿Puedo asistir al curso si no tengo conocimientos?
¡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.
-
¿Cuándo y dónde se desarrolla el curso?
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 ¿? del edificio de Laboratorios III.
-
¿Qué material necesito para seguir las clases?
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.
-
¿Se otorgan créditos RAC por asistir?
En caso de superar el curso obtendrás 0.9 créditos RAC.
-
¿Quedarán grabadas las clases?
No se grabará el curso.
-
¿Qué material o plataformas recomendáis para practicar?
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?