• No se han encontrado resultados

1. Descripción del curso

N/A
N/A
Protected

Academic year: 2021

Share "1. Descripción del curso"

Copied!
6
0
0

Texto completo

(1)

Profesor: Dr. rer. nat. Francisco Siles Canales Correo-e: [email protected] Sitio web: http://pris.eie.ucr.ac.cr

Horas de Consulta: K,V: 15:30 - 16:30 Ocina: 601 IE

Teléfono: 2511-2603

Laboratorio:PRIS-LAB(305 - 308 IE) Teléfono: 2511-2642 Créditos: 3 Tipo: Teórico-práctico Grupo: 1 Horario: K, V: 13:00 - 15:30 Aula: 111 IE

Requsito: IE-0117 Programación bajo plataformas abiertas Sitio web: http://cursos.eie.ucr.ac.cr

Asistente: José Pablo Ávila López Correo-e: [email protected]

1. Descripción del curso

El curso de estructuras abstractas de datos y algoritmos para ingeniería tiene la nalidad de ahondar en con-ceptos de programación más avanzados, lo que permite a los estudiantes enfrentarse sistemáticamente al desarrollo de programas de aplicación, mediante la selección de las estructuras de datos y algoritmos más apropiados en cada deter-minada situación.

Al nalizar el curso, los estudiantes conocerán los fundamentos teóricos y prácticos del uso de estructuras de datos y algoritmos estándares, además estarán en capacidad de proponer nuevas estructuras de datos y algoritmos para la resolución de problemas especícos.

Diversos paradigmas de programación serán estudiados durante el curso: imperativo, orientación a objetos, genérico, funcional, entre otros. Esto con el n de demostrar su utilización en distintos nichos de aplicación, y cómo implementar estructuras de datos y algoritmos bajo estos paradigmas.

2. Objetivos

2.1. Objetivo general

Al nalizar el curso el estudiante estará en capacidad de programar en C++ y utilizar herramientas como la Standard C++ Library (SCL) y Boost. Tendrá también la capacidad de evaluar las características de las estructuras de datos y algoritmos y de manera fundamentada seleccionar e implementar los más apropiados en pos de una solución integral a problemas ingenieriles.

2.2. Objetivos especícos

(2)

Aprender a utilizar herramientas de desarrollo de software: repositorios (git, svn, cvs, ...), documentación automática (doxygen), compilación automatizada (make, cmake), entre otras.

Desarrollar la habilidad de programación en el lenguaje C++.

Desarrollar la habilidad en el paradigma de programación orientada a objetos. Desarrollar la habilidad en el paradigma de programación genérico.

Aprender a utilizar las librerías SCL y Boost.

Conocer las características de las principales estructuras de datos: Array, Vector, List, Sequence, Hash, Stack, Queue, Deque, Map, Multimap, Set, Multiset, Binary Tree, Binary Search Tree, Binary Heap, Graph, ...

Aprender conceptos de contenedores como iteradores y otras estructuras de datos.

Conocer las características de los algoritmos de ordenamiento y búsqueda: Search and Sort. Desarrollar la capacidad de análisis de eciencia de algoritmos.

Desarrollar la capacidad de análisis de correctitud de algoritmos.

3. Metodología

El curso contará con una serie de exposiciones teóricas de los conceptos y sus prácticas de laboratorio correspondien-tes, además de tareas de investigación lo cual permitirá el estudio de temas anes al curso.

El enfoque del curso será orientado a la resolución de problemas en contraposición a la resolución de ejercicios, para lo cual los y las estudiantes deberán plantear propuestas de proyectos a desarrollar que resuelvan problemas reales utlizando las técnicas aprendidas durante el curso.

Al estudiante se le solicitará proyectos de investigación, diseño e implementación, con la respectiva presentación oral y escrita (informe técnico) de sus resultados.

A cada estudiante se le asignará una computadora durante el semestre y será responsable de su utilización adecuada.

4. Contenidos

1. Módulo 1: Programación en C++

a) Entorno de programación. Compilador de C++: g++.

b) Herramientas de automatización de compilación (make y cmake). c) Herramientas de documentación (doxygen).

d) Herramientas de control de versiones (git, svn, cvs).

e) Introducción al lenguaje de programación C++: características, tipos de datos y estructuras de control. f ) Denición de clases y nuevos tipos de datos.

g) Punteros y manejo de memoria dinámica. h) Programación orientada a objetos.

(3)

j) Herencia y polimorsmo.

k) Programación genérica: C++ Templates. 2. Módulo 2: Estructuras de Datos y Algoritmos

a) Tipos de datos abstractos.

b) Eciencia y correctitud de algoritmos.

c) Array, Vector, List, Sequence: Static Array, Dynamic Array, Vector (Dynamic Array), Vector (Circular Array), Single-linked List, Double-linked List.

d) Stack, Queue, Deque, Priority Queue. e) Searching, Sorting algorithms.

f ) Librerías: Standard C++ Library y Boost. g) Rooted Tree, Binary Tree, Heaps

h) Multiway Search Tree: (a,b)-Tree

5. Evaluación

Proyecto en equipo 1: Estructura de datos y algoritmo en C++ 30 %

Propuesta 5 %

Informe técnico 10 %

Presentación nal 15 %

Proyecto en equipo 2: Solución a problema abierto en C++ 40 %

Propuesta 10 % Informe técnico 10 % Presentación nal 20 % Laboratorios 20 % Exámenes cortos 10 % Total 100 %

(4)

6. Cronograma

Semana Fecha Actividad o Entregable

0 7 mar - 11 mar Carta estudiante, administrativos, examen de diagnóstico 1 14 mar - 18 mar temas 1.a - 1.d

2 21 mar - 25 mar Feriado: Semana Santa 3 28 mar - 1 abr temas 1.e

4 4 abr - 8 abr Propuesta 1 5 11 abr - 15 abr temas 1.f, 1.g 6 18 abr - 22 abr temas 1.h, 1.i 7 25 abr - 29 abr temas 1.j, 1.k 8 2 may - 6 may Proyecto 1

9 9 may - 13 may temas 2.a y 2.b, Charlas laboratorios de investigación EIE 10 16 may - 20 may Propuesta 2

11 23 may - 27 may tema 2.c 12 30 may - 3 jun tema 2.d 13 6 jun - 10 jun tema 2.e 14 13 jun - 17 jun tema 2.f 15 20 jun - 24 jun tema 2.g y 2.h 16 27 jun - 1 jul Proyecto 2

7. Disposiciones generales

1. La plataforma EIE Virtual (http://cursos.eie.ucr.ac.cr/) será el medio de comunicación ocial del curso. Todos los estudiantes deben inscribirse en este curso durante la primera semana de clase. A menos que se indique lo contrario, las asignaciones deben entregarse en formato digital utilizando este medio, antes de la fecha y hora establecidas (DEADLINE). Bajo ningún motivo se aceptará asignaciones entregadas vía correo electrónico al profesor o al asistente.

2. El DEADLINE se establece a las 23:59 del domingo de la semana correspondiente a la actividad determinada. 3. La documentación, presentaciones multimedia y demás material del curso a entregar para su evaluación, deberá ser

funcional en cualquier sistema operativo, para lo cual debe ser preparado en LATEXy debe ser subido al repositorio

correspondiente.

4. Los estudiantes realizarán presentaciones orales durante el curso. La presentación oral es una actividad formal del curso, por lo cual amerita toda la seriedad del caso.

5. La evaluación de la presentación incluye la uidez, el dominio, el lenguaje apropiado, la preparación y uso de material multimedia, además del correcto uso del tiempo. El formato a utilizar para la presentación es el de Ignite, otro formato resultará en la disminución de la nota. Pasado el lapso correspondiente, se procederá a nalizar inmediatamente con la presentación. Posteriomente a la presentación se dará un tiempo para preguntas y para una demostración de la funcionalidad del proyecto.

6. La propuesta de proyecto debe ser adecuada a los contenidos del curso y al nivel del mismo, además debe plantear la realización del proyecto en el tiempo apropiado asignado.

7. La funcionalidad implica que el software realice correcta, eciente y satisfactoriamente aquello para lo cual fue diseñado e implementado, según lo planteado en la propuesta correspondiente.

(5)

8. Los informes técnicos incluyen tanto la documentación del código fuente (doxygen) como la documentación del software (tutorial) y su uso general (README). El uso de lenguaje técnico correcto, además del uso de referencias adecuadas, el uso de material multimedia y la adecuada presentación y navegación intuitiva de la misma, serán evaluados.

9. Cada proyecto desarrollado deberá contar con una página de documentación en HTML. El documento HTML debe describir completamente el proyecto implementado. Debe contener portada, introducción, nota histórica, desarrollo teórico (explicación de la teoría involucrada y explicación del funcionamiento del trabajo realizado), instrucciones de instalación y uso, referencias y código fuente. Se evaluará la creatividad del sitio (uso de recursos multimedia) y navegación intuitiva para el usuario (debe existir el mismo índice en todas las secciones). El código fuente debe estar debidamente comentado y ordenado. El documento HTML debe ser realizado utilizando lenguaje HTML (de acuerdo con W3C) en su totalidad, el material desarrollado deberá ser colocado en el servidor que se indicará en el momento oportuno.

10. Las entregas consisten en los archivos fuente en LATEXcon su correspondiente makele, imágenes, fuentes compilables

en C++, en un repositorio git.

11. Cualquier reclamo deberá realizarse en un lapso de 3 días hábiles luego de la fecha de entrega ocial de la evaluación. No se aceptará reclamos de evaluaciones resueltas con lápiz. Todos los reclamos deben ser presentados ante el profesor.

12. Los exámenes cortos serán avisados con antelación de al menos una semana. Los temas a evaluar serán todos aquellos vistos hasta el momento mismo del aviso de la prueba.

13. Los foros consisten en participaciones en línea en el sitio del cuso sobre los temas allí tratados, participaciones con preguntas pertinentes en las presentaciones de los demás compañeros, preguntas realizadas durante la clase por el profesor o asistente. Además es posible presentar algún tema de interés para los compañeros y relacionado con el curso como puntos para los foros.

14. Las ausencias a presentaciones y otras evaluaciones deberán ser justicadas debidamente en un lapso de 5 días hábiles luego de que el estudiante se reintegre a sus estudios.

15. Cualquier tipo de copia o plagio, ya sea del trabajo de otro estudiante del curso o de un tercero (página web, libro, trabajo de un semestre anterior, etc.) será denunciada a la Dirección de la Escuela de acuerdo con lo estipulado en el capítulo IV del Reglamento de Orden y Disciplina de los Estudiantes de la Universidad de Costa Rica.

16. No está permitido tomar fotografías, audio o video de las clases sin autorización previa por parte del profesor.

8. Bibliografía

1. Goodrich, M.T., Foundations, Algorithm Design. John Wiley and sons, Inc. 2002.

2. Cormen, T. et al. Introduction to Algorithms. Second Edition. The MIT Press, Cambridge, Massachusetts. 2001. 3. Joyanes, Luis. Estructura de datos en C++. McGraw Hill. 2007. Primera edición.

4. C con clase. http://c.conclase.net/curso/index.php, http://personales.ya.com/salvamarga/mensajes/cursocpp2.zip 5. Brian Kernighan, Dennis Ritchie El Lenguaje de Programación C. Prentice Hall.

6. Ford, William H. Data Structures with C++ Using STL. Upper Saddle River, New Jersey. Prentice Hall; segunda edición 2001.

(6)

8. Yedidyah Langsam, Moshe J. Augenstein Estructuras de datos con C y C++ Prentice Hall, segunda edición 9. Schildt, H. C/C++ Programmer's Reference. Segunda edición. New York: McGraw-Hill Osborne Media, 2000. 10. Stroustrup, Bjarne. The C++ Programming Language. Tercera edición. Reading, Massachusetts: Addison-Wesley

Publishing Company, 2000.

11. Eckel, Bruce. Thinking in C++ Volumen 1: Introduction to Standard C++. Segunda Edición. Prentice Hall. 2000. 12. Eckel, Bruce y, Allison, Chuck. Thinking in C++ Volumen 2: Practical Programming. Prentice Hall. 2004. 13. Josuttis, Nicolai. The C++ Standard Library. Addison-Wesley. 1999.

14. Kernighan, Brian y Ritchie, Dennis. The C programming language. Segunda Edición. Prentice Hall, 1988. 15. Ford, William y Topp, William. Data structures with C++ using STL. Segunda Edición. Prentice Hall, 2002.

Referencias

Documento similar

[r]

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

En este ensayo de 24 semanas, las exacerbaciones del asma (definidas por el aumento temporal de la dosis administrada de corticosteroide oral durante un mínimo de 3 días) se

En un estudio clínico en niños y adolescentes de 10-24 años de edad con diabetes mellitus tipo 2, 39 pacientes fueron aleatorizados a dapagliflozina 10 mg y 33 a placebo,

• Descripción de los riesgos importantes de enfermedad pulmonar intersticial/neumonitis asociados al uso de trastuzumab deruxtecán. • Descripción de los principales signos

U-Ranking cuenta con la colaboración del Ministe- rio de Universidades, al permitirnos el acceso al Sistema Integrado de Información Universitaria (SIIU). El SIIU es

El valor agregado 6 del indicador por universidad se pre- senta en una escala de 0 (mínimo valor obtenido por una universidad del sistema en ese indicador) a 100 (correspondiente

El segundo paso es elegir la comunidad autónoma o comunidades que se contemplan como lugares en los que cursar los estudios. Para ello, el usuario debe marcar las elegidas