UNIVERSIDAD MAYOR DE SAN SIMÓN FACULTAD DE CIENCIAS Y TECNOLOGÍA PLAN GLOBAL Nombre de la materia: Programación Código: 2010200 Grupo B I. DATOS DE IDENTIFICACIÓN Carga horaria: Materias con las que se relaciona: 24 hrs VERTICAL HORIZONTAL 1. Elementos de Programación y 1. Estructura de Datos (2010003) 2. Arquitectura de Computadoras I 2. (2010013) 3. Algebra II (2008022) 4. Cálculo II (2008143) 5. Inglés II (1803002) Introducción a la programación (2010010) Teoría de Grafos (2010037) Docente: Lic. Rosemary Torrico Bascopé Teléfono: Correo Electrónico: [email protected] 4452760 : 1 II. JUSTIFICACIÓN El curso de programación es fundamental en la formación del estudiante de la carrera de informática, debido a que en esta asignatura los estudiantes profundizaran razonamiento lógico algorítmico en la resolución de problemas computacionales tomando en cuenta, principios de la filosofía de programación orientada a objetos, de código limpio y reutilizable, correcto, etc. Buscando la mejora continua en sus destrezas de programación, teniendo una actitud crítica y reflexiva respecto su estilo de programación. Por lo que se desea dar especial énfasis al razonamiento, abstracción, lógica y la construcción de algoritmos, que podrán ser aplicados en cualquier lenguaje de programación, puesto que la utilización de los lenguajes de programación está sujeta al tipo de problema que se desea resolver. Sin embargo para que el estudiante tenga experiencias concretas y reales todos los conceptos teóricos aprendidos se utilizará un lenguaje de programación, para este propósito se eligió el lenguaje Java. III. OBJETIVOS Desarrollar una base sólida en el área de programación Mejorar las habilidades de programación en base a técnicas de verificación Desarrollar habilidades de generación de código autodocumentado Estimular el razonamiento lógico y abstracto en la resolución de problemas del mundo real. 2 IV. SELECCIÓN Y ORGANIZACIÓN DE CONTENIDOS UNIDAD 1.- Elementos de Programación y Lenguajes Objetivos de la Unidad. Identificar los principales elementos de programación Analizar el proceso de abstracción procedimental de datos Analizar principios de la programación orientada objetos. Reflexionar sobre la importancia de la programación orientada a objetos. Contenido 1.1 Sintaxis y semántica 1.2 Abstracción procedimental y de Datos 1.3 Tipos abstractos de datos 1.4 Clases y objetos 1.4.1 Conceptos 1.4.2 Relaciones entre clases UNIDAD 2: Polimorfismo y Herencia avanzada Objetivos de la Unidad Identificar las características de Herencia Diseñar soluciones aplicando el concepto de Herencia Construir Jerarquías de Clases Identificar las características principales de Polimorfismo. Diseñar soluciones aplicando el concepto de Polimorfismo. Identificar las características y aplicabilidad de las Interfaces. Contenido 2.1 Herencia 2.1.1 Concepto 2.1.2 Enmascaramiento de variable y sobreescritura de métodos 2.1.3 Jerarquías de clases (paquetes) 2.1.4 Polimorfismo 2.2 Herencia múltiple 2.3 Interfaces 3 UNIDAD 3 .- Refactorización Objetivos de la Unidad. Identificar las características principales de la Refactorización Definir estrategias para hacer Refactorización Identificar las principales reglas de Refactorización Analizar las ventajas de la aplicación de la Refactorización Contenido 3.1 Introducción 3.2 Tratamiento de BadSmell 3.3 Metáfora de los dos sombreros 3.4 Composición y Métodos 3.5 Migración de características en métodos 3.6 Reglas de Refactorización UNIDAD 4.- Programación guidada por verificación Objetivos de la Unidad. Describir las cualidades esenciales de la programación guiada por verificación Identificar las características de los Assertions y su aplicabilidad Analizar el Principio de Invarianza Identificar los componentes principales del los tests de unidad Diseñar tests de unidad Contenido 4.1 Introducción 4.2 Assertions 4.3 Principio de Invarianza 4.4 Tests de unidad 4.4.1 Introducción 4.4.2 Cómo escribir Test de Unidad 4 UNIDAD 5.- Verificación para simulación con objetos Objetivos de la Unidad. Asegurar un correcto aislamiento de la clase bajo test mediante Mock Objects Simular el comportamiento de código existente mediante Stubs Identificar características y aplicabilidad del Dummy Code Contenido 5.1 Introducción 5.2 Mock Objects 5.3 Stubs 5.4 Dummy Code UNIDAD 6.- Programación orientada por componentes Objetivos de la Unidad. Describir las cualidades esenciales de la programación guiada por componentes Identificar la principales restricciones para componentes Analizar las interfaces de los componentes Diseñar componentes reutilizables Contenido 6.1 Conceptos básicos 6.2 Definición de interfaces de componentes 6.3 Definición de restricciones para componentes 6.4 Uso de componentes V. METODOLOGÍAS La metodología de enseñanza que se consideró apropiada para lograr el máximo aprovechamiento del estudiante dentro del proceso enseñanza-aprendizaje será: 1. Clase dialogada. 2. Uso de analogías y metáforas relacionadas con los temas a desarrollar. 3. Método basado en la resolución de problemas. 4. Dinámicas grupales incorporando elementos lúdicos para la comprensión de las unidades temáticas. 5 VI. CRONOGRAMA O DURACIÓN EN PERIÓDOS ACADÉMICOS POR UNIDAD VII. CRITERIOS DE EVALUACIÓN El nivel de conocimientos de los estudiantes se medirá y calificará mediante pruebas escritas, participación activa en actividades desarrolladas en las clases y trabajo prácticos. Para motivar la participación activa de los estudiantes se calificará los aportes que realice en clase. Porcentaje de distribución de la nota Actividades en clases: 10% Trabajos Prácticos: 10% Exámenes: 80% Total: UNIDAD 100% DURACIÓN (HORAS ACAD.) DURACIÓN EN SEMANAS UNIDAD 1.- Elementos de Programación y Lenguajes 12 2 UNIDAD 2: Polimorfismo y Herencia avanzada 24 4 UNIDAD 3 .- Refactorización 24 4 UNIDAD 4.- Programación guidada por verificación 24 4 UNIDAD 5.- Verificación para simulación con objetos 18 3 UNIDAD 6.- Programación orientada por componentes 18 3 6 VIII. BIBLIOGRAFIA Textos Base: “Refactoring Improving de Design of Existing Code”, Martin Fowler, Editorial Addison Wesley,2002. “Introducción a la programación con Orientación a Objetos”, Carmelia Muñoz Caro, Alfonso Niño Ramos, Aurora Vizcaino Barceló, Editorial Prentice Hall, 2002. Textos de referencia y consulta: http://ebooks.elportal.info/Addison%20Wesley%20-%20Refactoring%20%20Improving%20the%20Design%20of%20Existing%20Code.pdf http://www.chuidiang.com/ood/refactoring/refactoring.php http://el-golem.com.ar/index.php/poc/22-que-es-la-programacion-orientada-a-componentes http://wwwdi.ujaen.es/asignaturas/progav/progav-tema4.pdf 7