Вы находитесь на странице: 1из 4

FACULTAD REGIONAL RESISTENCIA - DEPARTAMENTO DE INGENIERA EN SISTEMAS DE INFORMACIN

Carrera: Ingeniera en Sistemas de Informacin Plan: 2008


rea: ELECTIVAS
Asignatura: PROGRAMACIN COMPETITIVA
Rgimen de Cursado: Cuatrimestral Horas/Semana: 8 Horas/Semana Anuales: 4
Nivel de Implementacin: Tercero Horas/Ao: 128
Correlativas:
Para cursar:
Tener Regularizadas: Paradigmas de Programacin
Tener Aprobadas: Algoritmos y Estructuras de Datos
Para rendir:
Tener Aprobadas: Paradigmas de Programacin

1. Objetivos Generales de la asignatura


Esta asignatura tiene por objetivo lograr en los alumnos un entendimiento concreto de las
estructuras de datos y las tcnicas algortmicas comnmente utilizadas para solucionar
problemas de las reas de conocimiento abordadas en las competencias de programacin.

2. Objetivos especficos:
Revisar conceptos de abstraccin de datos y P.O.O. e introducir su implementacin en
JAVA.
Presentar las estructuras de datos avanzadas (listas, pilas, colas, colas con dos extremos,
mapas, conjuntos), y utilizarlas desde una librera concreta: Collections de JAVA.
Presentar las nociones bsicas de complejidad de algoritmos y evaluar la misma en forma
prctica.
Reutilizar intensivamente- software desarrollado por otros programadores en la solucin a
problemas conocidos.
Conocer y utilizar recursos especficamente desarrollados para aumentar la productividad
de los programadores competitivos.
Introducir tcnicas de programacin especficas como backtracking y programacin
dinmica.
Presentar las estructuras de datos y algoritmos bsicos utilizados para el manejo de
grafos.
Introducir algoritmos avanzados sobre grafos: rboles de cobertura mnimos, caminos mas
cortos, flujo en redes.
Revisar conceptos de matemticas (combinatoria, teora de nmeros, probabilidad, etc.)
FACULTAD REGIONAL RESISTENCIA - DEPARTAMENTO DE INGENIERA EN SISTEMAS DE INFORMACIN

3. Programa Analtico:

CONTENIDOS

UNIDAD 1: Introduccin a la Programacin Competitiva (6 hs. Ctedra)


Conocer las relaciones intrnsecas entre el cmputo matemtico y los lenguajes de programacin.
Consolidar el conocimiento puntual sobre JAVA y su uso en los distintos jueces en lnea.

Competencias y programacin JAVA.


Competencias de programacin. Los sistemas de Jueces en Lnea en la web. Mensajes y
significados.
Entorno de programacin JAVA. Tipos de datos. Clases. E/S por teclado y por archivo. Toma
de tiempos.

UNIDAD 2: La librera Collections. (12 hs. Ctedra)


Entender la importancia de las libreras de los lenguajes de programacin por sobre la base de un
lenguaje dado. Comprender los distintos tipos de datos aportados por la librera Collections a
JAVA.

Contenedores secuenciales y asociativos. Iteradores. Algoritmos. Presentacin TP1.

UNIDAD 3: Introduccin al Anlisis de algoritmos y nociones de complejidad. (12 hs.


Ctedra)
Identificar la complejidad de un algoritmo dada su complejidad. Entender el concepto de
complejidad y las tecnicas para reducir la misma.

Conceptos de anlisis de algoritmos. La notacin O. Correccin y eficiencia. Complejidad


mejor, peor y promedio. Comprobacin del anlisis de un algoritmo. Presentacin TP2.

UNIDAD 4: Tcnica de programacin: Backtracking (12 hs. ctedra)


Conocer la relevancia de la recursividad en los procesos de programacion competitiva.

Definicin, casos de uso. Bsqueda con poda.

UNIDAD 5: Grafos:
Aprender sobre los diferentes usos de un grafo en problemas competitivos. Diferenciarlos de las
listas y demas estructuras de datos complejas.

Estructuras de datos y algoritmos para su implementacin. (9 hs. ctedra)


Tipos de grafos. Estructuras para su implementacin. Recorridos de grafos: en anchura, en
profundidad.

UNIDAD 6: Grafos: Algoritmos avanzados. (15 hs. ctedra)


Conocer los principales escenarios donde aplicar grafos y los algoritmos mas comunes para los
mismos. Entender las diferencias entre cada escenario en particular.

Conectividad, ciclos eulerianos y hamiltonianos, rboles de cobertura mnimos (Prim y


Kruskal), caminos ms cortos (Dijkstra y Floyd).

UNIDAD 7: Tcnica de programacin: Programacin Dinmica. (12 hs. Ctedra)


Interpretar situaciones problematicas donde aplicar DP. Verificar escenarios y optimizarlos.
FACULTAD REGIONAL RESISTENCIA - DEPARTAMENTO DE INGENIERA EN SISTEMAS DE INFORMACIN

Subestructuras ptimas, subproblemas superpuestos, principio de optimalidad.

- Evaluaciones Parciales (12 hs. ctedra)


2 evaluaciones terico-prcticas y 1 en forma de simulacin de
competencia.

- Coloquios TP Final (6 hs. ctedra)


Coloquios grupales de defensa del TP Final.

3. Bibliografa
Bsica:
o Halim, Steven Halim, Flix. Competitive Programming 3. 2013 www.lulu.com
o Mark Weiss. Data Structures and Problem solving with C++. Addisson Wesley. ISBN
0321205006. 2nd. Edition. 2003
o Informacin disponible en www.spoj.com. Fecha ltimo acceso: 01/10/2015
o Informacin disponible en www.urionlinejudge.com.br. Fecha ltimo acceso: 01/10/2015

Complementaria:
o Comern, Lesiserson-Rivest, Strein. Introduction to Algorithm. MIT Press.
ISBN 0262039237. Edicin 2001.
o Informacin disponible en uva.onlinejudge.org. Fecha ltimo acceso: 01/10/2015

4. Fundamentacin de la asignatura
Durante los ltimos aos han tomado creciente importancia las competencias de programacin.
Suelen tener modalidades y niveles muy diferentes pero todas apuntan a desarrollar y fortalecer
actitudes y procedimientos deseables en los estudiantes de ISI. A modo de ejemplo:
- Anlisis, comprensin y bsqueda de soluciones a problemas.
- Seleccin y diseo de estructuras de datos y algoritmos adecuados con restricciones de contexto.
- Predisposicin para trabajar en equipo.
- Habilidad para clasificar problemas segn reas de conocimiento y poder resolverlos en un
tiempo mnimo.
- Facilidad para el reuso de libreras de software ya implementadas.
- Conocimiento y uso adecuado de las herramientas de debugging que brindan los compiladores, y
generacin de casos de prueba representativos para el testeo del programa desarrollado.
Los resultados de competencias como la ACM/ICPC, son tomados como una medida de la calidad
en el desarrollo de software de los participantes una vez egresados.

Asignaturas o conocimientos con que se vincula la materia:


La coordinacin para esta asignatura electiva es vertical con las asignaturas del rea
Programacin: Algoritmos y Estructuras de Datos, Sintaxis y Semntica de Lenguajes y
Paradigmas de Programacin que aportan conceptos, mtodos y habilidades.
A nivel transversal se vincula con materias de otras reas (Anlisis Matemtico I, lgebra y
Geometra Analtica, Anlisis Matemtico II, Clculo Numrico ), ya que se abordan para su
solucin problemas estudiados en dichas asignaturas.
FACULTAD REGIONAL RESISTENCIA - DEPARTAMENTO DE INGENIERA EN SISTEMAS DE INFORMACIN

5. Metodologa
Estrategias de enseanza:
Se desarrolla 1 clase semanal (intercaladas: una de teora, una de prctica) de acuerdo a los
temas del programa y al avance de los trabajos propuestos.
Durante las clases:
- Se realizan presentaciones explicativas de los distintos puntos del temario.
- Se trabaja en la solucin a problemas reales de competencias de programacin que afiancen los
conceptos y estrategias explicadas.
- Se hace uso de los sitios web de jueces en lnea.
- Se orienta para la realizacin de los trabajos prcticos.
- Se realizan talleres en laboratorio.
- Se realizan instancias de evaluacin: parciales y coloquios.
- Se realizan seminarios que aportan a la formacin integral en el uso de la librera Collections.
- La modalidad de trabajo es de amplia interaccin entre docentes y alumnos, con planteo de
inquietudes que llevan al tratamiento de temas de inters. Se pondr nfasis en el afianzamiento
de procedimientos y actitudes fundamentales para la programacin competitiva.

Modalidad de agrupamientos:
En las clases y actividades de seguimiento se trabajar en pequeos grupos, conformados de
acuerdo a los fines de cada actividad.
Los trabajos prcticos son realizados por grupos de tres alumnos, en forma colaborativa,
combinando actividades de comprensin de problemas, clasificacin, bsqueda y anlisis de
soluciones, codificacin de algoritmos, debugging y testeo de los programas.

Consultas:
El profesor y el auxiliar tienen un espacio de consulta semanal de una hora prefijada, en el Grupo
de Programacin Competitiva; adems de la atencin de consultas va e-mail y foro de la ctedra
en el Campus Virtual.
Organizacin de espacios dentro y fuera del mbito universitario (aulas, talleres, laboratorios,
visitas, empresas, otros):
Se realizan actividades en el Grupo de Programacin donde se resuelven problemas de
competencias anteriores de ACM, en lenguaje JAVA, C y C++, haciendo uso de la librera
Collections y STL respectivamente.

Organizacin de espacios dentro y fuera del mbito universitario:


El profesor realiza tambin una actividad de investigacin/extensin, a travs de la coordinacin
anual de un Grupo de Programacin, como actividad extracurricular, conformado por alumnos
interesados en profundizar sobre cuestiones de Algoritmos Estructuras de Datos Programas
Lenguajes de Programacin, participar en anlisis y discusiones grupales de soluciones
alternativas y publicar resultados como medio de compartir con la comunidad interesada en estas
temticas.

Вам также может понравиться