COMP1311

Escrito por
Valora este artículo
(0 votos)
VIRTUNIVERSIDAD GLOBAL
FACULTAD DE: Ciencias Técnicas y Tecnológicas
CUATRIMESTRE: Segundo 
   
CÓDIGO DENOMINACIÓN DE LA ASIGNATURA: Programación I  "CURSO" O"MÓDULO"
HORAS TEÓRICAS HORAS PRÁCTICAS TOTAL HORAS
 CUATRIMESTRE
TOTAL HORAS SEMANALES UNIDADES DE
 CRÉDITO
(HT) (HP) HT HP HT HP (UC)
 COMP1311  54 -
54
-
3,38
-
3
               
BREVE DESCRIPCIÓN DEL CURSO:
La asignatura Programación I de la carrera Bachelor Profesional en Computación, es la primera de tres (3) materias que van dedicadas a la enseñanza de algoritmos y programación que proporcionan las bases necesarias para resolver problemas con ayuda de la computadora. Dicho curso pretende  proveer al futuro profesional en computación, conocimientos que le permitan desarrollarse en cualquier área con conceptos de programación para la manipulación de la información, puesto a que el Licenciado en computación debe capacitarse en conocimientos avanzados de algoritmos y programación de computadoras, para cumplir con los requisitos exigidos por el mercado laboral.
La asignatura Programación I se encuentra ubicada en el segundo cuatrimestre del pensum de estudio de la mencionada carrera, consta de tres (3) unidades de crédito, es de carácter teórico-práctico y se estructura de tal forma que los estudiantes desarrollen las competencias para entender y promover los cambios tecnológicos que han ocurrido en los últimos años en la ciencia de la informática.
Así mismo, el Bachelor Profesional en Computación utiliza la computadora como su herramienta principal de trabajo, por ello es imprescindible formar profesionales que se distingan por su sólida formación básica y avanzados conocimientos en el manejo de computadoras, de tal manera que puedan aprovechar al máximo sus capacidades de procesamiento para la resolución de problemas en áreas tan diversas como sistemas de control, investigación de operaciones, ciencias de la computación, medicina, matemáticas, arquitectura, geografía, entre otros. 
 
OBJETIVO(S) GENERAL(ES):
• Suministrar al estudiante los principios y herramientas básicas necesarias para adquirir habilidades y destrezas que le permitan el análisis, diseño y construcción de programas codificados en un lenguaje de programación de alto nivel que permita resolver problemas haciendo uso del computador. 
 
OBJETIVOS ESPECIFICOS:
• Dominar los términos básicos utilizados en la programación.
• Distinguir los elementos que conforman la lógica de programación.
• Comprender la importancia de la programación de sistemas y describir sus principales componentes en un nivel funcional.
• Conocer los Paradigmas de Lenguajes de Programación.
• Diseñar algoritmos utilizando las técnicas del pseudocódigo y el diagrama de flujo.
• Analizar las estructuras de datos estática (arreglos) para el desarrollo y elaboración de algoritmos.
• Comprender y gestionar las estructuras dinámicas en la memoria.
• Construir las instrucciones  de los métodos de ordenamiento y búsqueda de datos.
• Manejar los diferentes algoritmos de ordenamiento en diversas estructuras de datos.
• Manejar estructuras de datos tipo objeto.
• Desarrollar habilidades en el análisis, diseño y construcción de programas codificados en un lenguaje de programación de alto nivel, que permitan resolver problemas presentados en orden de complejidad creciente. 
 
DESCRIPCIÓN DE LOS CONTENIDOS (LISTADO DE TEMAS Y SUB-TEMAS)
TEMA 1: Conceptos generales. 
1.1  Conocimientos iniciales.  
        1.1.1  Concepto de informática y ordenador.
        1.1.2  Hardware y software.
        1.1.3  Sistema Operativo.
        1.1.4  La necesidad de un sistema.
        1.1.5  Concepto de información.
1.2  Modelos de computación.
1.3  Partes funcionales de un computador actual.   
        1.3.1  Descripción modular del ordenador actual.
                   1.3.1.1  Descripción funcional.
                   1.3.1.2  Unidad Central de Procesamiento (CPU).
        1.3.2  El juego de las instrucciones del CPU.
        1.3.3  Descripción operacional. 
 
TEMA 2: Estructuras de computadores. 
2.1  Introducción.
2.2  La arquitectura Von Neumann.   
        2.2.1  Origen.
        2.2.2  Organización.
        2.2.3  Desarrollo del concepto de programa almacenado.
        2.2.4  Descripción del concepto de programa almacenado.
        2.2.5  Cuello de botella de von Neumann (von Neumann bottleneck).
        2.2.6  Primeras computadoras basadas en arquitectura von Neumann.
        2.2.7  Primeras computadoras de programa almacenado.
2.3  El ciclo de instrucción.
2.4  Arquitectura del hardware.   
        2.4.1  Dispositivos de Entrada.    
        2.4.2  Dispositivos de Salida.
2.5  Dispositivos de almacenamiento.
        2.5.1  Dispositivos de Comunicación.    
        2.5.2  Dispositivos de Cómputo.
                   2.5.2.1  Unidad Central de Procesamiento (CPU).
                   2.5.2.2  La Memoria.
                   2.5.2.3  Memoria RAM.
                                 2.5.2.3.1  Memoria ROM.
                                 2.5.2.3.2  Memoria Caché.
                   2.5.2.4  El bus de Datos o cables de datos.
2.6  La programación de computadores.
        2.6.1  La programación en lenguaje ensamblador.
        2.6.2  La programación en lenguaje de alto nivel. 
 
TEMA 3: Lógica de programación. 

3.1  Definición de programación estructurada vs. programación orientada a objetos.
3.2  Introducción a un lenguaje de programación de alto nivel:
        3.2.1  Características generales.
        3.2.2  Elementos sintácticos.
3.3  Tipos básicos de datos, representación y operaciones:
        3.3.1  Enteros.
        3.3.2  Reales.
        3.3.3  Caracter.
        3.3.4  Lógicos.
3.4  Expresiones:
        3.4.1  Aritméticas.
        3.4.2  Relacionales.
        3.4.3  Lógicas.
        3.4.4  Mixtas.
3.5  Operadores:
        3.5.1  Aritméticos.
        3.5.2  Lógicos.
        3.5.3  Relacionales.
        3.5.4  De incremento.
        3.5.5  De asignación.
        3.5.6  Jerarquía de operadores.
3.6  Estructuras secuenciales:
        3.6.1  Representación algorítmica.
        3.6.2  Codificación.
3.7  Estructuras de decisión:
        3.7.1  Representación algorítmica.
        3.7.2  Codificación.
3.8  Estructuras de repetición:
        3.7.1  Representación algorítmica.
        3.7.2  Codificación.
3.9  Ejercicios resueltos.
3.10  Ejercicios propuestos. 

 
TEMA 4: Estructuras jerarquicas y apuntadores. 
4.1  Tipo de dato apuntador:
        4.1.1  Definición de Apuntador.
        4.1.2  Punteros con tipo y fundición.
        4.1.3  Operaciones con apuntadores.
        4.1.4  Manejo de memoria dinámica con apuntadores.
4.2  Aplicación con apuntadores.
4.3  Haciendo más seguros a los punteros.
4.4  Puntero nulo.
4.5  Puntero autorelativo.
4.6  Puntero base.
4.7  Indirección múltiple.
4.8  Árboles.
        4.8.1  Árboles N-arios.
        4.8.2  Árboles binarios.
        4.8.3  Algoritmos de recorrido de árboles.
4.9  Árboles de sintaxis.
        4.9.1  Árboles binarios de búsqueda.
        4.9.2  Árboles binarios balanceados.
        4.9.3  Árboles B.
4.10  Ejercicios resueltos.
4.11  Ejercicios propuestos. 
 
TEMA 5: Paradigmas y lenguajes de programación. 
5.1  Conceptos básicos.
        5.1.1  Definición de lenguaje de programación.
        5.1.2  Sintaxis.
                   5.1.2.1  Criterios generales.
                   5.1.2.2  Elementos sintácticos.
                   5.1.2.3  Modelos de traducción.
        5.1.3  Semántica.
5.2  Palabras reservadas.
5.3  Niveles de programación.
        5.3.1  Lenguajes de bajo nivel.
                   5.3.1.1  Introducción.
                   5.3.1.2  Definición.
                   5.3.1.3  Complejidad vs Dificultad.
                   5.3.1.4  Interacción Máquina.
                   5.3.1.5  Primera generación.
                   5.3.1.6  Primera generación.
        5.3.2  Lenguajes de alto nivel.
                   5.3.2.1  Introducción.
                   5.3.2.2  Definición.
                   5.3.2.3  Ventajas e inconvenientes.
                   5.3.2.4  Principales lenguajes de nivel alto.
                   5.3.2.5  Principales lenguajes de nivel medio.
        5.3.3  Compiladores e intérpretes.
                   5.3.3.1  Compiladores.
                   5.3.3.2  Intérpretes.
        5.3.4  Errores de un programa.
                   5.3.4.1  Orígenes del término.
                   5.3.4.2  Defectos de diseño de programas.
                   5.3.4.3  Errores de programación comunes.
                   5.3.4.4  Defectos de instalación o programación.
                   5.3.4.5  Códigos de errores de lenguajes de programación.
5.4  Desarrollo histórico de los lenguajes de programación.
        5.4.1  Paradigmas de programación.
                   5.4.1.1  Definición.
                   5.4.1.2  Tipos de paradigmas de programación más comunes.
                                  5.4.1.2.1  Imperativo o por procedimientos.
                                  5.4.1.2.2  Funcional.
                                  5.4.1.2.3  Lógico.
                                  5.4.1.2.4  Declarativo.
                                  5.4.1.2.5  Orientado a objetos.
                                  5.4.1.2.6  Programación dinámica.
                                  5.4.1.2.7  Programación multiparadigma.
5.5  Traductores.
        5.5.1  Introducción.
        5.5.2  El proceso de traducción. 
 
TEMA 6: Representación de la información en el computador. 
6.1  Introducción.
6.2  Aritmética finita.
6.3  Sistemas de numeración utilizados en computadoras. Sistemas base N.
        6.3.1  Sistema binario (sistema base 2).
        6.3.2  Sistema octal (sistema base 8).
        6.3.3  Sistema hexadecimal (sistema base 16).
        6.3.4  Cambios más comunes entre los sistemas anteriores.
                   6.3.4.1  Conversiones entre binario y decimal.
                   6.3.4.2  Conversiones entre binario y octal/hexadecimal.
                   6.3.4.3  Rango de representación de los números binarios.
6.4  Representación binaria de números enteros.
        6.4.1  Representación en signo-magnitud.
        6.4.2  Representación en complemento a uno.
        6.4.3  Representación en complemento a dos.
        6.4.4  Representación en exceso.  
6.5  Representación binaria de números reales.
        6.5.1  Introducción.
        6.5.2  El estándar IEEE 754 de coma flotante.
        6.5.3  Precisión y rango de representación.
6.6  Representación binaria de datos no numéricos.
        6.6.1  Representación de caracteres.
        6.6.2  Representación de cadena de caracteres.
        6.6.3  Representación de instrucciones.
6.7  Expresión de números negativos en código binario.
        6.7.1  Complemento a 2.
        6.7.2  Representación de números en coma flotante.
                   6.7.2  Principios de la notación en coma flotante.        
6.8  Algunas operaciones aritméticas en código binario.
        6.8.1  Operaciones unarias: Rotación y desplazamiento.
        6.8.1  Operaciones binarias.
6.9  Ejercicios resueltos.
6.10  Ejercicios propuestos. 
 
TEMA 7: Algoritmos y programas. 
7.1  Introducción.
7.2  Concepto de algoritmo.
        7.2.1  La tesis de Church-Turing.
        7.2.2  Definición formal.        
7.3  Medios de expresión de un algoritmo.
        7.3.1  Diagrama de flujo.
        7.3.2  Pseudocódigo.
        7.3.3  Sistemas formales.
        7.3.4  Implementación.
        7.3.5  Variables.
        7.3.6  Estructuras secuenciales.
7.4  Algoritmos como funciones.
7.5  Resolución de problemas.
        7.5.1  Análisis del problema.
        7.5.2  Elementos para construir un algoritmo.
        7.5.3  Formas de representar un algoritmo.
        7.5.4  Diseño del algoritmo. Traza de un algoritmo (corrida en frio).    
7.6  Partes de un algoritmo.
7.7  Características de los algoritmos.       
7.8  Análisis de algoritmos.
7.9  Ejemplo de algoritmo.
        7.9.1  Descripción de alto nivel.
        7.9.2  Descripción formal.
        7.9.3  Implementación.
7.10  Tipos de algoritmos según su función.
          7.10.1  Algoritmo de ordenamiento.
          7.10.2  Algoritmo de búsqueda.
7.11  Técnicas de diseño de algoritmos.
          7.11.1  Algoritmos voraces (greedy).
          7.11.2  Algoritmos paralelos.
          7.11.3  Algoritmos probabilísticos.
          7.11.4  Algoritmos determinísticos.
          7.11.5  Algoritmos no determinísticos.
          7.11.6  Divide y vencerás.
          7.11.7  Metaheurísticas.
          7.11.8  Programación dinámica.
          7.11.9  Ramificación y acotación.
          7.11.10  Vuelta atrás (backtracking).
7.12  Concepto de programa.
7.13  Ejecución y almacenamiento de los programas.
          7.13.1  Programas empotrados en hardware.
          7.13.2  Programas cargados manualmente.
          7.13.3  Programas generados automáticamente.
          7.13.4  Ejecución simultánea.
7.14  Categorías funcionales.
7.15  Variables y tipos de datos primitivos.  
        7.15.1  Datos numéricos.
        7.15.2  Datos lógicos.
        7.15.3  Datos tipo caracter.
        7.15.4  Datos tipo cadena.
7.16  Constantes variables.
7.17  Expresiones.
        7.17.1  Expresiones aritméticas.
        7.17.2  Reglas de prioridad.
        7.17.3  Expresiones lógicas (booleanas).
7.18  Funciones internas.
7.19  La Operación de Asignación.
7.20  Entrada y salida de la información.
 
TEMA 8: Programación y técnicas de programación. 

8.1  Introducción.  
8.2  Programación.
        8.2.1  Definición.
8.3  Historia.
8.4  Léxico y programación.
8.5  Programas y algoritmos.
8.6  Compilación.
8.7  Programación e ingeniería del software.
8.8  Referencias históricas.
8.9  Objetivos de la programación.  
        8.9.1  Correctitud.
        8.9.2  Claridad.
        8.9.3  Eficiencia.
        8.9.4  Portabilidad.
8.10  Ciclo de vida del software.
          8.10.1  Definición de objetivos.
          8.10.2  Análisis de los requisitos y su viabilidad.
          8.10.3  Diseño general.
          8.10.4  Diseño en detalle.
          8.10.5  Programación (programación e implementación).
          8.10.6  Prueba de unidad.
          8.10.7  Integración.
          8.10.8  Prueba beta.
          8.10.9  Documentación.
          8.10.10  Mantenimiento.
8.11  Técnicas de programación informática.
          8.11.1  Introducción.
          8.11.2  Introducción a la programación estructurada.
          8.11.3  Programación modular.
                       8.11.3.1  Medida de los módulos.
                       8.11.3.2  Implementación de los módulos.
          8.11.4  Programación estructurada.
                       8.11.4.1  Recursos abstractos.  
                       8.11.4.2  Diseño descendente (top-down).  
                       8.11.4.3  Teorema de la programación estructurada:   
                                        8.11.4.3.1  Estructuras básicas.
                       8.11.4.4  Estructura secuencial.  
                       8.11.4.5  Estructuras selectivas.
                                        8.11.4.5.1  Alternativa simple (si-entonces/if-then).
                                        8.11.4.5.2  Alternativa doble (si-entonces-sino/if-then-else).
                                        8.11.4.5.3  Alternativa múltiple (según-sea, casode/case).
                       8.11.4.6  Estructuras repetitivas.
                                        8.11.4.6.1  Estructura mientras (“while”).
                                        8.11.4.6.2  Estructura repetir (“repeat”).
                                        8.11.4.6.3  Estructura desde/para (“for”).
                                        8.11.4.6.4  Salidas internas de los Bucles.
          8.11.5  Estructuras de decisión anidadas.
          8.11.6  Estructuras repetitivas anidadas.
          8.11.7  Instrucción ir-a (“goto”).
          8.11.8  Métodos de Programación Estructurada.
                        8.11.8.1  Método Jackson.
                        8.11.8.2  Método Bertiní.
                        8.11.8.3  Método Warnier. 

 
TEMA 9: Elementos básicos de la programación estructurada o modular. Subprogramas. 

9.1  Introducción.
9.2  Concepto de programa estructurado.  
9.3  Estructura y representación de programas estructurados.    
        9.3.1  Modularidad y uso de bibliotecas.
        9.3.2  Compilador e intérprete.
9.4  Diseño estructurado.
        9.4.1  Concepto de módulo.       
9.5  Uso de datos en la programación.
        9.5.1  Atributos de los datos.   
9.6  Tipos de datos.
        9.6.1  Concepto de tipo de datos.
        9.6.2  Identificador y palabra reservada.
        9.6.3  Constantes y variables.                   
9.7  Tipos de datos simples.
        9.7.1  Tipo entero.
        9.7.2  Tipo de número en coma flotante.
        9.7.3  Tipo caracter.
        9.7.4  Tipo booleano.   
        9.7.5  Tipo puntero.
        9.7.6  Tipo enumerado.  
        9.7.7  Conversión de tipos.  
9.8  Las clases de datos.              
9.9  Expresiones, enunciados y sentencias de control de flujo.              
        9.9.1  Expresiones y enunciados o sentencias atómicas.              
        9.9.2  Sentencias de control de flujo de la información.               
9.10  Sentencias estructuradas, módulos y subprogramas.
9.11  Concepto de subprogramas. Ámbito y paso de variables en subprogramas.              
          9.11.1  Concepto de subprograma.   
          9.11.2  Características básicas.
          9.11.3  Ámbito de las variables de los subprogramas.      
          9.11.4  El modelo de ejecución de programas compilados. Relación con el concepto de
                     encapsulamiento.
          9.11.5  Tipo de variables según su almacenamiento en el programa en ejecución.
          9.11.6  Encapsulamiento.         
          9.11.7  Recursividad.       
9.12  Principios de diseño.
          9.12.1  Descomposición.
          9.12.2  Jerarquía de módulos.
          9.12.3  Independencia.     
9.13  Evaluación del diseño.
          9.13.1  Acoplamiento.  
          9.13.2  Cohesión.  
9.14  Aplicación de la programación en sistemas de información.

 
TEMA 10: Tipos de datos compuestos o estructurados (estructuras de datos estática). Funciones 
10.1  Introducción.
10.2  Concepto de tipo de dato constructor.
10.3  Tipos de datos compuestos homogéneos.
          10.3.1  Vectores (arreglos o arrays).
          10.3.2  Matrices multidimensionales.
          10.3.3  Cadenas de caracteres.
                       10.3.3.1  Tratamiento de cadenas de caracteres String.
10.4  Tipos de datos compuestos heterogéneos.
          10.4.1  Registros.
10.5  El puntero como herramienta de construcción de estructuras de datos.
10.6  Cadenas de caracteres.
10.7  Funciones.  
10.8  Paso de parámetros a funciones.  
10.9  Llamadas por valor.    
10.10  Ejemplos. 
 
TEMA 11: Estructuras de datos dinámicas. 
11.1  Introducción.
11.2  Definición de estructuras dinámicas de datos .
11.3  La gestión dinámica de la memoria.
11.4  Estructura de datos dinámica básica.
          11.2.1  Lineales.
                       11.2.1.1  Pilas.
                                       11.2.1.1.1  Definición.
                                       11.2.1.1.2  Operaciones.
                                       11.2.1.1.3  Implementación.
                                       11.2.1.1.4  Estructuras de datos relacionadas.
                       11.2.1.2  Colas.
                                       11.2.1.2.1  Definición.
                                       11.2.1.2.2  Operaciones.
                                       11.2.1.2.3  Implementación.
                                       11.2.1.2.4  Tipos de colas.
                       11.2.1.3  Listas enlazadas.
                                       11.2.1.3.1  Tipos de listas enlazadas.
                                                        11.2.1.3.1.1  Listas enlazadas lineales.
                                                                            11.2.1.3.1.1.1  Listas simples enlazadas.
                                                                            11.2.1.3.1.1.2  Listas doblemente enlazadas.
                                                        11.2.1.3.1.2  Listas enlazadas circulares.
                                                                            11.2.1.3.1.2.1  Listas enlazadas simples
                                                                                                   circulares.
                                                                            11.2.1.3.1.2.2  Listas enlazadas doblemente
                                                                                                   circulares.
                                                        11.2.1.3.1.3  Nodos centinelas.
                                       11.2.1.3.4  Aplicaciones de las listas enlazadas.
                                       11.2.1.3.5  Ventajas.
                                       11.2.1.3.6  Listas enlazadas usando vectores de nodos.
                                       11.2.1.3.7  Lenguajes soportados.
                                       11.2.1.3.8  Almacenamiento interno y externo.
                                       11.2.1.3.9  Agilización de la búsqueda.
                                       11.2.1.3.10  Estructuras de datos relacionadas.
                                       11.2.1.3.11  Implementaciones.
          11.2.2  No lineales.
                       11.2.2.1  Árboles.
                                       11.2.2.1.1  Definición.
                                       11.2.2.1.2  Operaciones.
                                       11.2.2.1.3  Implementación.
                       11.2.2.2  Grafos.
                                       11.2.2.2.1  Definición.
                                       11.2.2.2.2  Operaciones.
                                       11.2.2.2.3  Implementación. 
 
TEMA 12: Métodos de ordenamiento. 
12.1 Introducción a métodos de ordenamiento.
12.2  Algoritmos de ordenamiento.
          12.2.1  Definición.
          12.2.2  Clasificación.
          12.2.3  Estabilidad.
          12.2.4  Lista de algoritmos de ordenamiento:
                       12.2.4.1  Ordenamiento por intercambio o método de la burbuja.
                                        12.2.4.1.1  Descripción.
                                        12.2.4.1.2  Análisis.
                       12.2.4.2  Ordenamiento de burbuja bidireccional.
                                        12.2.4.2.1  Descripción.
                       12.2.4.3  Ordenamiento por selección.
                                        12.2.4.3.1  Descripción.
                                        12.2.4.3.1  Rendimiento del algoritmo.
                       12.2.4.4  Ordenamiento por inserción Shell.
                                        12.2.4.4.1  Descripción.
                                        12.2.4.4.1  Rendimiento del algoritmo.
                       12.2.4.5  Ordenamiento por casilleros (Bucket sort).
                                        12.2.4.5.1  Descripción.
                                        12.2.4.5.2  Pseudocódigo.
                                        12.2.4.5.3  Algoritmo del cartero.
                       12.2.4.6  Ordenamiento por cuentas (Counting sort).
                                        12.2.4.6.1  Descripción.
                                        12.2.4.6.2  Ejemplo.
                                        12.2.4.6.3  Características.
                                        12.2.4.6.4  Pseudocódigo.
                       12.2.4.7  Ordenamiento por mezcla (Merge sort).
                                        12.2.4.7.1  Descripción.
                                        12.2.4.7.2  Optimizando merge sort.
                                        12.2.4.7.3  Comparación con otros algoritmos de ordenamiento.
                       12.2.4.8  Ordenamiento con árbol binario (Binary tree sort).
                                        12.2.4.8.1  Descripción.
                                        12.2.4.8.1  Descripción.
                                        12.2.4.8.2  Complejidad.
                                        12.2.4.8.3  Características.
                       12.2.4.9  Ordenamiento Radix (Radix sort).
                                        12.2.4.9.1  Descripción.
                       12.2.4.10  Ordenamiento por montículos.
                                        12.2.4.10.1  Descripción.
                       12.2.4.11  Ordenamiento rápido.
                                        12.2.4.11.1  Descripción
12.3  Algoritmos de búsqueda.
          12.3.1  Búsqueda secuencial.
          12.3.2  Búsqueda binaria. 
 
TEMA 13: Almacenamiento externo y Estructuras Iterativas. 
13.1  Introducción a almacenamiento externo.
13.2  Introducción a los sistemas de ficheros.
          13.2.1  Ficheros en sistemas Unix/Linux.
          13.2.2  Ficheros en sistemas Windows.
13.3  Operaciones sobre ficheros.
13.4  Niveles lógico y físico de los ficheros.
          13.4.1  Nivel físico.
          13.4.2  Nivel lógico.
13.5  Clasificación de los ficheros.
13.6  Ficheros con operaciones de acceso secuencial.
          13.6.1  Ficheros de tipo texto sin formato.
          13.6.2  Ficheros de tipo texto con formato.
          13.6.3  Funciones de acceso.
          13.6.4  Ficheros binarios.
13.7  Ficheros con operaciones de acceso directo.
          13.7.1  Operación de actualización de datos en ficheros con acceso directo.
13.8  Algunos modelos reales de ficheros con estos accesos.  
          13.8.1  Ficheros con índice (indexados).
          13.8.2  Ficheros indexados con una función de dispersión.
          13.8.3  Acceso aleatorio usando una función de dispersión.  
13.9  Introduccción a las estructuras Iterativas.
13.10  Estructuras de control.
            13.10.1  Definición.
            13.10.2  Antecedentes.
13.11  Estructuras de control I.
            13.11.1  Condicionales.
                            13.11.1.1  Simples.
                            13.11.1.2  Compuestos (if…then....else).
                            13.11.1.3  Anidados.
            13.11.2  Sentencias selectivas.
                            13.11.2.1  Switch.
                            13.11.2.1  Case.
13.12  Estructuras de control II.
            13.12.1  Ciclos.
                            13.12.1.1  Para (for).
                            13.12.1.2  Mientras (while).
                            13.12.1.3  Repita (do-while).
            13.12.2  Ciclos anidados.
13.13  Contadores.
13.14  Acumuladores.
13.15  Problemas resueltos de estructuras Iterativas.
13.16  Problemas propuestos de estructuras Iterativas. 
 
TEMA 14: Almacenamiento de datos y Tipos de datos abstractos. 
14.1  Introducción y conceptos generales.
          14.1.1  Definición.
          14.1.2  Utilidad.
          14.1.3  Características de los archivos.
14.2  Estructura interna de un archivo:
          14.2.1  Registro.
          14.2.2  Campo.
          14.2.3  Claves.
          14.2.4  Tipos de datos.
          14.2.5  Tamaño de los datos.
14.3  Representación de los diferentes tipos de archivos.
14.4  Actualización de Archivos:
          14.4.1  Crear.
          14.4.2  Incluir.
          14.4.3  Editar.
          14.4.4  Eliminar.
          14.4.5  Guardar.
          14.4.6  Buscar registros.
14.5  Fases para el desarrollo de aplicaciones usando archivos de diferentes accesos.
14.6  Introducción a la organización de archivos secuenciales.
          14.6.1  Medios de almacenamiento.
          14.6.2  Magnético y óptico. Estructura y forma de almacenamiento.
          14.6.3  Terminología básica.
          14.6.4  Archivos tipo Texto.
          14.6.5  Acceso sin clave (secuencial).
14.7  Organización de archivos.
          14.7.1  Acceso Directo.
          14.7.2  Acceso asociativo: Aleatorio (transformación clave-dirección).
          14.7.3  Acceso secuencial indexado.
14.8  Ejemplos resueltos.
14.9  Ejemplos propuestos.
14.10  Concepto de tipo de dato abstracto (TDA).
            14.10.1  Definición de abstracción y breve caracterización de los TADs que se adaptan
                         a ella.
            14.10.2  El TAD en la práctica.
            14.10.3  TAD como contenedor de datos.
14.11  Clasificación de la abstracción.
14.12  Especificación de un tipo de dato abstracto.
14.13  Implementación de un tipo de dato abstracto en un lenguaje de alto nivel.
14.14  Tipo de Dato Abstracto (TDA): Cadena.
            14.14.1  Definición de cadena.
            14.14.2  Especificación formal del TDA Cadena.
            14.14.3  Formas de implantar el TDA Cadena.
            14.14.4  Ejercicios prácticos utilizando el TDA cadena. 
 
TEMA 15: Programación orientada a objetos, Introducción a la algoritmia y Breve referencias de algunas estrategías de programación. 
15.1  Concepto de programación orientada a objetos.          
15.2  Evolución de la programación orientada a objetos.
15.3  Definiciones  básicas.
          15.3.1  Objeto.
          15.3.2  Clases.
          15.3.3  Identidad de Objetos.
          15.3.4  Métodos.
          15.3.5  Encapsulación.
          15.3.6  Mensajes.
          15.3.7  Composición.
          15.3.8  Herencia.
                       15.3.8.1  Clasificación de la herencia.
          15.3.9  Encadenamiento dinámico.
          15.3.10  Clases paramétricas.
15.4  Objetos.
          15.4.1  Tipos de Objetos.
          15.4.2  Asociaciones  de  Objetos.  
          15.4.3  Jerarquías  de Generalización.   
          15.4.4  Jerarquías  Compuestas.   
          15.4.5  Diagramas de relación entre los objetos.
          15.4.6  Esquemas de Objetos.
15.5  Clase.
          15.5.1  Diferencia entre operación y método.
          15.5.2  Herencia de Clase.
          15.5.3  Herencia Múltiple.  
          15.5.4  Selección del Método.
          15.5.5  Polimorfismo.
          15.5.6  Notación.
15.6  Concepto de coste computacional. Medida del coste temporal y espacial.
          15.6.1  Definición del coste temporal y espacial.
          15.6.2  Medida del coste temporal usando pasos.
          15.6.3  Medida de la complejidad temporal usando instrucciones críticas.
          15.6.4  El coste espacial.
          15.6.5  Concepto de talla de un algoritmo.
          15.6.6  Concepto de instancias de un problema. Coste medio, mejor caso y peor caso.
          15.6.7  Algunas notaciones asintóticas para definir costes.
          15.6.8  El compromiso entre el coste espacial y el coste temporal.
15.7  Algunas estrategías de programación.
          15.7.1  Divide y vencerás.
          15.7.2  Algoritmos voraces.
          15.7.3  Métodos de programación dinámica.
          15.7.4  Método de vuelta atrás (BackTracking).
          15.7.5  Método de ramificación y poda. 
 
ESTRATEGIAS METODOLOGICAS:
Explicaciones del profesor. Exposición del docente de las diferentes temáticas abordadas. Intercambio de ideas con los estudiantes. Procesamiento de dudas. Presentación de lecturas relacionadas con las temáticas estudiadas. Introducción de ejemplos reales para la resolución de problemas y estudio de casos.
El espacio académico contempla horas de trabajo directo, trabajo colaborativo y trabajo autónomo; las temáticas se desarrollaran por unidades programadas por semana; el trabajo directo se realizará a partir de comunidades de aprendizaje, tutorías y actividades virtuales, que permitan la exposición teórica- práctica del contenido.
La práctica en trabajo colaborativo, será abordada en forma grupal e individual (virtualmente) y se desarrollaran temáticas y/o tratamiento de casos de estudio previamente establecidos por el docente con su apoyo y asesoría respectiva.
Para cada tema, el profesorado hará una exposición teórica de los conceptos fundamentales, haciendo hincapié en aquellos contenidos que se consideren de mayor relevancia. Siempre que sea posible, el profesorado se apoyará en material multimedia o en demostraciones en línea, que faciliten la presentación de los contenidos. Tras la exposición teórica de los conceptos, se introducirán ejemplos o ejercicios prácticos que faciliten al alumnado la adquisición de los conceptos presentados.
Todo el material utilizado por el profesorado durante las clases estará a disposición de los alumnos.
Por cuenta propia, tras cada clase, el alumnado deberá complementar la información aportada por los docentes. La complementación de los materiales utilizados en clase podrá realizarse en base a los materiales y recursos complementarios que el profesorado designe en cada caso. Para facilitar este proceso de auto aprendizaje, el profesorado indicará, tras cada clase, qué actividades, tareas y elementos del material complementario son los que se deben consultar. Además, con el objetivo de complementar la formación con un aprendizaje práctico, el profesorado planteará ejercicios prácticos, que el alumnado tendrá que resolver de forma autónoma. Los ejercicios que mayor dificultad haya presentado a los alumnos serán corregidos en clase mediante la participación activa del alumnado y del profesorado.
Con el objetivo de que el alumnado pueda comprobar la correcta adquisición de los conocimientos, se podrá realizar una o más pruebas de evaluación que incluyan tanto cuestiones de desarrollo de conceptos como ejercicios prácticos. El profesorado corregirá estas pruebas de evaluación con el fin de detectar e informar al alumnado de aquellos temas que deben ser repasados. Además, tras cada uno de los temas que hay dentro de cada bloque, los alumnos podrán realizar una breve prueba de tipo test para verificar que los conceptos más importantes del tema han sido asimilados correctamente. Todo este seguimiento continuo del alumnado será llevado a cabo mediante el aula virtual de la asignatura. 
 
RECURSOS DIDACTICOS:

• Recursos bibliográficos y de web-grafía.
• Foros.
• Debates.
• Charlas.
• Exposiciones.
• Recursos TIC.
• Simposios y ponencias.
• Video-Conferencias.
• Trabajos de investigación.
• Exámenes teóricos-prácticos.
• Casos empresariales.
• Talleres y ejercicios de aplicación práctica (Grupales e individuales, en el aula virtual y extra clase).
• Desarrollo de ejemplos reales.
• Aula virtual.
   La asignatura tendrá un aula en el campus virtual de Virtuniversidad. A través del aula virtual se facilitará material para el seguimiento de la asignatura: guía docente, problemas resueltos y propuestos, enlaces a páginas web, entre otros.; así como la posible realización de diversas actividades no  evaluables para complementar el aprendizaje del  alumno: cuestionarios,  foros,  lecturas, tareas, entre otros. De igual forma, esta plataforma será empleada para la resolución de las dudas y cuestiones que los alumnos quieran plantear.

   De forma general, el aula virtual contendrá, al menos, la información y los elementos siguientes:
• Guía docente de la asignatura (programa, objetivos, metodología, entre otros.)
• Wiki para el desarrollo de un glosario de términos.
• Foro de novedades.
• Foro “cafetería” (para que el alumnado de la asignatura pueda compartir inquietudes relativas a la asignatura)
• Próximos eventos.
• Calendario.

   De forma más específica, el aula virtual se estructurará en bloques y temas, siguiendo el esquema presentado en el programa de la asignatura. Para cada tema de la asignatura, en el aula virtual se incluirán los elementos siguientes:
• Material on-line con la descripción del tema.
• Ejercicios prácticos con distintas modalidades de tareas.
• Foro de debate para plantear y resolver las dudas relacionada con el tema.
• Recursos on-line para apoyo.
• Bibliografía, referencias y enlaces a material complementario.
• Cuestionarios y/o pruebas de evaluación.

 
CRITERIO(S) DE EVALUACIÓN:
A lo largo del cuatrimestre se realizarán una serie de evaluaciones parciales que buscan medir la apropiación y manejo de las diferentes competencias por parte de los estudiantes, determinando su avance específico en el proceso de aprendizaje y el esfuerzo formativo en su trabajo independiente y en el trabajo desarrollado en el aula virtual.
El sistema de evaluación aplicado en el curso se sustenta en la combinación del trabajo y evaluación continúa dentro y fuera del aula virtual. Es decir, que aunque los conceptos y herramientas se expongan o se trabajen en el interior de la clase, es necesario el auto aprendizaje del estudiante, lo que se expresa en el desarrollo de diferentes actividades, las cuales consisten en trabajos individuales y en grupo, lecturas, proyectos, participaciones en clase y pruebas escritas teórica-práctica, que el profesor juzgue conveniente realizar durante el período lectivo.  
Aquellos alumnos que, no pudiendo acogerse a la evaluación continua y habiéndoseles concedido la evaluación final tras solicitud formal de acuerdo con la Normativa Reguladora de los Procesos de Evaluación de Virtuniversidad, se someterán a un examen final para acreditar que han adquirido la totalidad de las competencias.
Se considerará que un alumno ha superado la asignatura cuando la calificación que obtiene en el sistema de evaluación elegido sea igual o superior a 10. Aquellos alumnos que, habiendo aprobado la asignatura, deseen mejorar su nota, tienen la opción de realizar un trabajo voluntario puntuable por hasta dos puntos a sumar a la nota total de la asignatura. 
 
BIBLIOGRAFÍA BÁSICA:

• Aguilar, J. (2005). Fundamentos de Programación. Mexico. Mc Graw Hill.
• Aguilar, J. Algoritmos, programacion y estructuras de datos schaum. Mexico. Mc Graw Hill.
• Aguilar, J. (2000). Programación en C++. Algoritmos, Estructuras de Datos y Objetos. Mc Graw Hill. España.
• Aguilar, J. (1999). Estructuras de Datos. Mc Graw Hill.
• Aguilar, J. y Zanohero, I. (2000). Estructura de Datos. Algoritmos, Abstracción y Objetos. Editorial Mc Graw Hill. España.
• Alfred V. Aho, John E. Hopcroft y Jeffrey D. Ullman. (2002). Estructuras de Datos y Algoritmos. Addison-Wesley Iberoamericana.
• Besembel, I. (1990) Tipos básicos de datos. Universidad de Los Andes, Consejo Editorial.
• Ciro. (1994). Estructura de Datos. McGraw Hill.
• Deitel, T.  y Deitel, R. (1995). Cómo programar en C y C++. Prentice Hall.
• Fernández, M. – Garcías, L. - Zahonero, I. – Joyanes, L. (2000). Estructura de Datos. Algoritmos, Abstracción y Objetos. Libro de Problemas. Editorial Mc Graw Hill. España.
• García, J. (2005). Una introducción a la programación. España. Cengage Learning Editores.
• Iñesta, M. (2000). Introducción a la programación con Pascal. Edición ilustrada. Editorial Universitat Jaume I, 352 páginas. 

• Javier Galve,  Juan C. González, Angel  Sánchez y J.  A.  Velázquez. (1998). Algorítmica: Diseño  y  Análisis  de Algoritmos  Funcionales  e  Imperativos.Addison-Wesley Iberoamericana.   
• Llanos, D. (2010). Fundamentos de informática y programación en C. Editorial Paraninfo, 392 páginas. España.
• Mark  Allen  Weiss. (1995). Estructuras  de  Datos  y  Algoritmos. Addison-Wesley Iberoamericana.
• Main, M. – Saviktch, W. 2000. Data Structures and Other Objects Using C++. Segunda Edición. Editorial Addison Wesley.
• Martínez, F.(2003). Introducción a la programación estructurada en C. Editorial Universitat de València, 256 páginas. España
• Navas, E. y Besembel, I. (1992). La lógica de la programación. Universidad de Los Andes, Consejo de Publicaciones.  
• Rodríguez, J. (2003). Introducción a la programación: teoría y práctica. Editorial Club Universitario, 213 páginas.

 
Visto 1751 veces
course creatorcompt

Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.