Fundamentos y Estructuras de Programación (300CIP002)

Información Básica

Descripción del Curso

En este curso se estudiarán los fundamentos de los lenguajes de programación de alto nivel y se hará énfasis en tipos abstractos de datos. La asignatura brinda las bases para la solución de problemas que pueden abordarse usando como herramientas un computador, lenguajes de alto nivel y estructuras de datos clásicas (listas, pilas, colas, árboles y grafos). Por ser el segundo curso en la línea de programación, el componente práctico será intensivo a nivel de desarrollo de algoritmos y su análisis.

Objetivos

Al finalizar el curso los participantes podrán:

  1. Describir y tratar los diferentes tipos de problemas que existen en ciencias de la computación.
    1. Reconocer el Cálculo Lambda y diseñar y ejecutar Máquinas de Turing simples.
    2. Identificar los diferentes tipos de problemas en ciencias de la computación (e.g. tratables, intratables, indecidibles).
    3. Calcular la complejidad de algoritmos iterativos.
    4. Reconocer diversas técnicas y estrategias para solucionar problemas mediante algoritmos.
  2. Identificar las principales características de los lenguajes de programación de alto nivel.
    1. Describir la estructura de un lenguaje de programación.
    2. Explicar la secuencia de compilación de un programa.
    3. Identificar, explicar y corregir bugs en programas.
    4. Experimentar con manejadores de excepciones e interfaces gráficas de usuario.
    5. Construir programas con apuntadores y referencias.
    6. Reconocer las características de las variables en un lenguaje de programación.
  3. Diseñar e implementar soluciones a problemas computacionales mediante el uso de Tipos Abstractos de Datos (TADs).
    1. Diseñar la solución a problemas construyendo TADs acordes con el problema.
    2. Utilizar e implementar los TADs básicos (listas, colas, pilas, árboles, grafos).
    3. Implementar algoritmos recursivos y reconocerlos como aspecto fundamental en computación.

Contenido

Capítulo 1: Noción de Problema

Sesión Horas de Clase Tópicos Bibliografía
1 2 Presentación del Curso e Introducción.
Problemas, Historia, Cálculo-Lambda, Máquina de Turing.
Problemas Tratables e Intratables.
Complejidad
[1]
2-5 8 Cálculo de Complejidades [1]
6 2 Estrategias de solución de problemas.
Estrategias de Implementación.
[1]

Total de Horas: 12.

Capítulo 2: Noción de Lenguaje

Sesión Horas de Clase Tópicos Bibliografía
7-9 6 Lenguajes de Alto Nivel.
Compiladores y Máquinas Virtuales.
Depuración.
Tratamiento de Excepciones.
Interfaces Gráficas de Usuario (Eventos).
[1],[5]
10-12 6 Lenguaje C.
Referencias y Apuntadores.
Declaraciones y Tipos.
[1],[2]

Total de Horas: 12.

Capítulo 3: Noción de Tipo Abstracto de Datos

Sesión Horas de Clase Tópicos Bibliografía
13-14 4 TAD's [1,3]
15-16 4 TAD Lista.
Utilización del TAD Lista.
[1],[3]
17-18 4 Implementación del TAD Lista (Estructuras enlazadas, Vectores, Cursores) [1],[3]
19-20 4 TAD Pila y TAD Cola [1],[3]
21-24 8 TAD Arbin (Arboles Binarios) [1],[3]
25-26 4 TAD Arbol N-ario [1],[3]
27-30 8 TAD Grafo (Grafos dirigidos) [1],[3] 

Total de Horas: 36.

Integración Curricular

Resultados de Programa (ABET)

(A) La habilidad para aplicar conocimientos de matemáticas, ciencias e ingeniería.

(B) La habilidad para analizar un problema e identificar los requerimientos necesarios para su definición y solución.

(C) La habilidad para diseñar, implementar y evaluar procesos y sistemas computacionales.

(D) La habilidad para funcionar en equipos de trabajo.

(E) El entendimiento de la responsabilidad profesional y ética.

(F) La habilidad para comunicarse efectivamente.

(G) La habilidad para analizar los impactos de la computación y la ingeniería en las personas, organizaciones y la sociedad.

(H) El reconocimiento de la necesidad de, y la habilidad para, continuar con el desarrollo profesional.

(I) La habilidad para usar las técnicas, destrezas y herramientas modernas para la práctica de la computación.

(J) La habilidad para aplicar los fundamentos y principios de las matemáticas y de la computación en el modelamiento y diseño de sistemas computacionales de manera que se demuestre comprensión de las ventajas y desventajas en las decisiones de diseño.

(K) La habilidad para aplicar los principios de diseño y desarrollo de software en la construcción de sistemas de diferente complejidad.

Relevancia del curso con los resultados de programa

Resultados de Programa
A B C D E F G H I J K
Relevancia 5 5 2 3 3

Escala: (1) baja relevancia - (5) alta relevancia.

Integración de objetivos, contenido y metodología del curso

Resultados del Programa Indicadores de Desempeño Objetivos/Contenido del Curso Actividades de aprendizaje Instrumentos de medición
(A) Aplicación de Conocimientos (A1) Identificar los fundamentos científicos y los principios de ingeniería que rigen un proceso o sistema. (Conocimiento) (A2) Resolver problemas relacionados con la disciplina y otras áreas por medio de la utilización de conocimientos, modelos y formalismos de las ciencias de la computación, las matemáticas y la ingeniería. (Aplicación) Todos Exposiciones del profesor, solución de ejercicios, tareas y lecturas Exámenes, proyecto y tareas
(C) Diseño (C1) Utilizar estándares de codificación en la implementación de componentes de software. (Aplicación). (C2) Identificar componentes, interacciones, relaciones e interfaces entre componentes. (Análisis). (C3) Diseñar procesos y componentes de software haciendo uso de la notación, técnicas y herramientas adecuadas. (Síntesis). Cap 3 Exposiciones del profesor, solución de ejercicios y lecturas Exámenes, proyecto
(F) Comunicación efectiva (F1) Producir textos de manera efectiva teniendo en cuenta la estructura, coherencia, flujo, ortografía y correcto uso del lenguaje. (Aplicación). (F2) Comunicarse de manera efectiva de acuerdo al público objetivo haciendo uso correcto del lenguaje, estilo, tiempo y expresión corporal. (Aplicación). (F3) Utilizar recursos gráficos para comunicar y expresar una idea. (Aplicación). (F4) Defender ideas con precisión y claridad. (Evaluación). Todos Lecturas, ensayos Tareas (Escritura y presentación oral), Exposición (Presentación oral, medios de apoyo), Proyecto (sustentación) y Exámenes (uso adecuado de la notación)
(H) Desarrollo profesional. (H1) Reconocer la importancia del conocimiento tanto en amplitud como en profundidad. (Compresión). (H2) Aplicar nuevo conocimiento para resolver un problema o desarrollar una solución. (Aplicación). Todos Exposiciones del profesor, solución de ejercicios, tareas y lecturas Exposición, exámenes, proyecto y tareas
(I) Uso de herramientas y técnicas (I2) Utilizar herramientas de diseño, modelamiento y simulación. (Aplicación). Todos Exposiciones del profesor, solución de ejercicios y tareas Examen, tareas y proyecto

Recomendaciones del Director del Programa

Reglas del curso

Calificación y Balance de Evaluación del Curso

Instrumento Porcentaje A B C D E F G H I J K
Parcial I 20% 80% 10% 10%
Parcial II 20% 30% 50% 10% 10%
Parcial III 20% 30% 50% 5% 10%
Tarea I 2% 50% 5% 15% 30%
Tarea II 2% 30% 5% 15% 50%
Tarea III 2% 15% 45% 5% 15% 20%
Tarea IV 2% 15% 45% 5% 15% 20%
Tarea V 2% 15% 45% 5% 15% 20%
Exposición 5% 35% 65%
Proyecto 25% 15% 40% 20% 25%

Uso de material en exámenes

No está permitido el uso de computadores personales, teléfonos celulares ó cualquier otro dispositivo electrónico.

Asistencia

Obligatoria

Matriculación

  1. 2012-2: 16
  2. 2013-1: 15

Recursos

Bibliografía

  1. Gerardo M. Sarria M. Fundamentos y Estructuras de Programación. Notas de Clase. Borrador en línea aquí
  2. Harvey Deitel and Paul Deitel. Como programar en C/C++. 2da edición. Prentice Hall Hispanoamericana. 1994.
    Signatura Universidad Javeriana: 005.133D325c e1
  3. Jorge Villalobos. Diseño y manejo de estructuras de datos en C. McGraw-Hill Interamericana. 1996.
    Signatura Universidad Javeriana: 005.73V714d e1
  4. Bradley N. Miller and David L. Ranum. Problem Solving with Algorithms and Data Structures using Python. Franklin, Beedle & Associates Incorporated. 2006.
    Signatura Universidad Javeriana: 005.133M647p e1
  5. Terrence W. Pratt and Marvin V. Zelkowitz. Programming Languages. Design and Implementation. Fourth Edition. Prentice-Hall. 2001.
    Signatura Universidad Javeriana: 005.13P912p 2001 e1

Instalaciones

Salón de clase con computador y proyector.

Material de este semestre

 
materias/fundamentos_y_estructuras_de_programacion.txt · Última modificación: 2015/10/23 08:20 por alexvalencia
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki