Información Básica
-
Créditos: 4
-
Horas de Clase: 4 / semana
-
Horas de trabajo independiente: 5 / semana
-
Horas de Laboratorio al semestre:
-
Prerequisitos: Introducción a la Programación (300CIP001)
-
Tipo de curso: Núcleo de Formación Fundamental.
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:
-
Describir y tratar los diferentes tipos de problemas que existen en ciencias de la computación.
-
Reconocer el Cálculo Lambda y diseñar y ejecutar Máquinas de Turing simples.
-
Identificar los diferentes tipos de problemas en ciencias de la computación (e.g. tratables, intratables, indecidibles).
-
Calcular la complejidad de algoritmos iterativos.
-
Reconocer diversas técnicas y estrategias para solucionar problemas mediante algoritmos.
-
-
Identificar las principales características de los lenguajes de programación de alto nivel.
-
Describir la estructura de un lenguaje de programación.
-
Explicar la secuencia de compilación de un programa.
-
Identificar, explicar y corregir bugs en programas.
-
Experimentar con manejadores de excepciones e interfaces gráficas de usuario.
-
Construir programas con apuntadores y referencias.
-
Reconocer las características de las variables en un lenguaje de programación.
-
-
Diseñar e implementar soluciones a problemas computacionales mediante el uso de Tipos Abstractos de Datos (TADs).
-
Diseñar la solución a problemas construyendo TADs acordes con el problema.
-
Utilizar e implementar los TADs básicos (listas, colas, pilas, árboles, grafos).
-
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.
Matriculación
-
2012-2: 16
-
2013-1: 15
Recursos
Bibliografía
-
Gerardo M. Sarria M. Fundamentos y Estructuras de Programación. Notas de Clase. Borrador en línea aquí
-
Harvey Deitel and Paul Deitel. Como programar en C/C++. 2da edición. Prentice Hall Hispanoamericana. 1994.Signatura Universidad Javeriana: 005.133D325c e1
-
Jorge Villalobos. Diseño y manejo de estructuras de datos en C. McGraw-Hill Interamericana. 1996.Signatura Universidad Javeriana: 005.73V714d e1
-
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
-
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