FACULTAD DE CS. QUIMICAS, FISICAS Y MATEMATICAS I. DATOS GENERALES DEPARTAMENTO ACADEMICO DE INFORMATICA SILABO 1.1 Asignatura : LABORATORIO I 1.2 Categoría : OE 1.3 Código : IF409AIN 1.4 Créditos : 2 1.5 Horas Teóricas : 0 1.6 Horas Prácticas : 4 1.7 Requisito : IF101 1.8 Horario y Aula : L:LU 11-13 LAB-5; L:MI 11-13 LAB-5; 1.9 Semestre Académico : 2012-2 1.10 Carrera Profesional : ING. INFORMATICA Y DE SISTEMAS 1.11 Docente : CARBAJAL-LUNA-JULIO CESAR 1.12 Email Docente : jccarbajall@unsaac.edu.pe II. SUMILLA Asignatura de carácter obligatorio, de formación especializada, práctico, cuya finalidad es contribuir al desarrollo de las capacidades de abstracción y análisis proyectadas a la problemática del diseño de algoritmos y su implementación en lenguajes de programación. Esta asignatura tiene como finalidad desarrollar habilidades y adquirir destrezas para la concepción, diseño e implementación de algoritmos, haciendo uso de las metodologías de programación. Ejes temáticos: Estructuras de control algorítmicas, técnicas de diseño de programas, estructuras de datos básicas: estáticas (arreglos) y dinámicas, y programación orientada a objetos. III. OBJETIVOS Identificar los elementos para la construcción de programas en un lenguaje de programación orientado a objetos. Resolver problemas aplicando el conocimiento y correcta utilización de estructuras de control con la ayuda de un lenguaje de programación, contribuyendo a la formación de profesionales analíticos, honestos y responsables. Plantear la solución a problemas aplicando programación estructurada y las técnicas de diseño de programas. Utilizar los arreglos unidimensionales y bidimensionales. Página 1
Aplicar los conceptos del paradigma de programación orientada a objetos tales como: polimorfismo, encapsulamiento, herencia, sobrecarga, etc. IV. CONTENIDO POR UNIDADES DIDACTICAS IV.1.1. IV.1.2. ESTRUCTURAS DE CONTROL ALGORITMICAS Y TECNICAS DE DISEÑO DE PROGRAMAS: OBJETIVOS ESPECIFICOS Listar las etapas básicas involucradas en la escritura de un programa para computadora Hacer una lista de las formas de estructuración de código en una aplicación Java Identificar los objetos en el enunciado del problema Leer y entender la sintaxis formal que gobierna un programa Java Distinguir entre palabras reservadas e identificadoras Escribir una instrucción simple de salida usando la clase System.out Construir un programa Java. Asignar valores a las variables y declarar tipos de campos char y String Usar comentarios para clarificar los programas Instanciar un objeto Scanner Escribir instrucciones de entrada usando la clase Scanner Diseñar una interfaz interactiva de usuario Determinar los atributos y responsabilidades de una clase Escribir el encabezado y la declaración de clase para una nueva clase Escribir una instancia de un método Escribir un método que retorne un valor Construir y evaluar expresiones aritméticas simples y complejas. Leer valores numéricos usando los métodos de la clase Scanner Usar los operadores relacionales Construir una expresión lógica simple o compleja para evaluarla bajo una condición dada Construir una instrucción if-else para verificar una tarea específica Construir un conjunto de instrucciones if anidadas para verificar una tarea específica Aplicar estrategias de prueba para la estructura if Construir bucles while sintácticamente correctas Construir bucles controlados por contador o por eventos con una instrucción while. Usar la condición de fin de archivo para el control de la entrada de datos Usar una bandera para el control de la ejecución de una instrucción while Escribir instrucciones para leer desde un archivo de texto o escribir en un archivo de texto Escribir aplicaciones que usen archivos para la entrada y salida de datos Escribir una instrucción switch para un problema con instrucción de selección múltiple Escribir una instrucción do y contrastarla con una instrucción while Escoger la instrucción de bucle más apropiada para un problema dado Usar las facilidades de Java para el control de excepciones try, catch y throw Usar una instrucción throw para lanzar un excepción predefinida IV.1.3. CONTENIDO CAPÍTULO I: INTRODUCCION A LA PROGRAMACION ORIENTADA A OBJETOS Y LA RESOLUCION DE PROBLEMAS 1.1 Introducción. 1.2 Compilar y ejecutar un programa 1.3 Compilar y ejecutar un programa con errores 1.4 Digitar, compilar y ejecutar una nuevo programa java 1.5 Ejercicios. CAPÍTULO II: LOS ELEMENTOS DE JAVA 2.1. Introducción 2.2. Componentes de un programa 2.3. Envío de información como resultado de un programa Página 2
2.4. Lectura de datos de forma interactiva 2.5. Ejercicios CAPÍTULO III: CLASES Y METODOS 3.1. Introducción 3.2. Implementar una clase 3.3. Diseñar una nueva clase 3.4. Implementar una nueva clase 3.5. Ejercicios. CAPITULO IV: ESTRUCTURA DE CONTROL SECUENCIAL Y TIPOS NUMERICOS 4.1 Introducción 4.2 Operaciones aritméticas 4.3 Clases con métodos para operaciones binarias 4.4 Leer valores numéricos 4.5 Métodos para cadenas 4.6 Ejercicios CAPÍTULO V: ESTRUCTURA DE CONTROL DE SELECCIÓN Y METODOS DE DISEÑO DE ALGORITMOS 5.1 Introducción 5.2 Expresiones booleanas 5.3 Instrucción if 5.4 Instrucción if-else 5.5 Instrucciones if anidadas 5.6 Ejercicios. CAPÍTULO VI: PROGRAMAS CON ESTRUCTURA REPETITIVA Y ARCHIVOS 6.1 Introducción 6.2 Bucles controlados por contador 6.3 Bucles controlados por eventos 6.4 Entrada y salida de archivos 6.5 Lógica anidada 6.6 Ejercicios. CAPITULO VII: ESTRUCTURAS DE CONTROL ADICIONALES Y EXCEPCIONES 7.1 Introducción 7.2 Instrucción de selección múltiple 7.3 Estructuras de control adicionales 7.4 Manejo de excepciones 7.5 Ejercicios. IV.1.4. IV.1.5. IV.1.6. ACTIVIDADES: Proyecto de aplicación. MATERIAL EDUCATIVO: Materiales impresos y módulos de aprendizaje; direcciones electrónicas para recabar información especializada sobre los contenidos planteados. Pizarra, plumones, mota Proyector multimedia, computadora, presentaciones en powerpoint. EVALUACION: Evaluación escrita (2 horas). 22 al 26 de octubre del 2012 IV.2. UNIDAD DIDACTICA 2 IV.2.1. IV.2.2. ESTRUCTURAS DE DATOS BASICAS Y PROGRAMACION ORIENTADA A OBJETOS OBJETIVOS ESPECIFICOS Declarar y usar el tipo enum Desarrollar un método transformador (mutator) Crear un package con múltiples unidades de compilación Escribir una tarjeta CRC para un objeto Conducir escenarios usando tarjetas CRC Identificar colaboraciones entre objetos Página 3
Convertir una tarjeta CRC en una clase Java Dibujar un diagrama de clase con UML Declarar e instanciar un arreglo unidimensional Acceder y manipular los componentes unidimensionales de un arreglo unidimensional donde los elementos son tipos atómicos o compuestos Utilizar una lista de inicializadores para instanciar un arreglo unidimensional Declarar un arreglo bidimensional Desarrollar las operaciones fundamentales sobre un arreglo bidimensional: acceder a un componente del arreglo, procesar los arreglos por filas o por columnas Declarar un arreglo bidimensional cono un parámetro Declarar y procesar arreglos multidimensionales Identificar los componentes de la interfaz de una clase en una jerarquía Dibujar un diagrama UML representando la jerarquía de una clase Diseñar una clase derivada para extender una jerarquía de clases existente Implementar una clase derivada usando la herencia Usar las palabras reservadas super y this para eliminar las referencias ambiguas Derivar una clase desde una clase abstracta Implementar una interface Determinar la clase de un objeto Insertar, eliminar y buscar un elemento en una lista Ordenar los elementos de una lista en orden ascendente o descendente Construir una lista ordenada Buscar un elemento en una lista ordenada usando la búsqueda lineal o la búsqueda binaria Definir una clase que extienda una interfaz Java Uso de la interfaz Comparable de Java Usar ArrayList desde la librería Java Desarrollar una estructura de datos lista enlazada Usar las clases ArrayList y LinkedList Escoger cuando usar ArrayList versus LinkedList en la implementación de una estructura de datos Identificar el caso base y el caso general en una definición recursiva Escribir un algoritmo recursivo para un problema que involucra variables simples o variables estructuradas Escribir un applet para realizar una tarea sencilla Insertar código de bytes dentro de una página Web Construir una pagina web simple HTML para ejecutar un applet IV.2.3. CONTENIDOS CAPÍTULO VIII: INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS 8.1 Introducción. 8.2 Clases mutables 8.3 Paquetes 8.4 Entrada/salida de objetos 8.5 Tipos enumerados 8.6 Diseño orientado a objetos 8.7 Diagramas UML 8.8 Ejercicios. CAPÍTULO IX: ARREGLOS 9.1 Introducción 9.2 Arreglo unidimensional con componentes simples 9.3 Arreglo unidimensional con objetos como componentes 9.4 Arreglo bidimensional 9.5 Arreglo multidimensional 9.6 Ejercicios CAPITULO X: HERENCIA, POLIMORFISMO Y AMBITO DE APLICACION 10.1 Introducción 10.2 Clases derivadas 10.3 Control de las clases derivadas 10.4 Jerarquía de clases Página 4
10.5 Clases abstractas e interfaces 10.6 Ejercicios CAPÍTULO XI: LISTAS BASADAS EN MATRICES 11.1 Introducción 11.2 Operaciones con listas no ordenadas 11.3 Operaciones con listas ordenadas 11.4 Clases abstractas 11.5 Ejercicios CAPÍTULO XII: ESTRUCTURAS DE DATOS Y COLECCIONES 12.1 Introducción 12.2 Listas enlazadas no ordenadas 12.3 Listas enlazadas ordenadas 12.4 Java Collections Framework 12.5 Ejercicios CAPITULO XIII: RECURSION 13.1 Introducción. 13.2 Recursión con variables simples 13.3 Recursión con variables estructuradas 13.4 Ejercicios CAPÍTULO XIV: APPLETS 14.1 Introducción 14.2 Convertir una aplicación a un applet 14.3 Escribir un applet 14.4 Escribir el código HTML para ejecutar un applet 14.5 Ejercicios IV.2.4. ACTIVIDADES: Proyecto de aplicación IV.2.5. MATERIAL EDUCATIVO: Materiales impresos y módulos de aprendizaje; direcciones electrónicas para recabar información especializada sobre los contenidos planteados.pizarra, plumones, mota Proyector multimedia, computadora, presentaciones en powerpoint IV.2.6. EVALUACION: Evaluación escrita 2 horas 26 al 28 de diciembre del 2012 V. METODOLOGIA Cada laboratorio contiene tres tipos de acciones: pre-laboratorio, en el laboratorio y post laboratorio. Las actividades pre-laboratorio incluyen una asignación de lectura y revisión de ejercicio con respuestas. Las actividades en el laboratorio se dividen en lecciones, cada una de las cuales representa un concepto lógico y su aplicación en Java. Cada lección incluye ejercicios que demuestren a fondo el concepto. Las preguntas varían de la implementación simple en Java a las preguntas que piden al estudiante la hipótesis acerca de una situación. El énfasis está en el uso de la sintaxis del lenguaje. Además, la mayoría de los laboratorios deben contener un plan de prueba o una pregunta de depuración, haciendo hincapié en la necesidad de corrección. Los ejercicios post laboratorio son una colección de traspaso de programas externos. Cada problema requiere que un estudiante escriba un algoritmo utilizando una construcción del laboratorio y ponerlo en práctica en java. La decisión de describir cada laboratorio en tres tipos de actividades se basa en la obra de Benjamim Bloom. Estas categorías se definen a continuación en términos de un ejemplo concreto de un algoritmo de aprendizaje (o relacionada con el constructo del lenguaje): 1. Reconocimiento: el alumno puede seguir el algoritmo y determinar el resultado para un determinado conjunto de datos. 2. Generación: El alumno puede generar un algoritmo muy similar. 3. Proyección: El estudiante puede modificar el algoritmo para llevar a cabo un cambio importante, poder aplicar el algoritmo en un contexto diferente, poder combinar algoritmos relacionados, y poder comparar los algoritmos. Página 5
Las actividades pre-laboratorio se encuentran en el nivel de reconocimiento. La mayoría de las actividades en el laboratorio son a nivel de generación con uno poco nivel de proyección de actividades de referencia, cuando procede. Las actividades de post laboratorio son de nivel de proyección actividades. Actividades de Aprendizaje De Docencia (Responsabilidad del docente): Situar al estudiante y a la práctica de la profesión de la ingeniería, en el contexto general de las Tecnologías Informáticas, y en especial de los algoritmos y su programación., y en el papel que ellas han jugado, juega y jugarán en quehacer del ingeniero en la sociedad. Presentación de los conceptos básicos sobre los algoritmos y su codificación en un lenguaje de programación de alto nivel. Diseño, preparación y solución de ejemplos tipo. Resolución de ejemplos tipo. Diseño, preparación y solución de ejercicios propuestos. Tutorías y consejerías De trabajo Colectivo (Responsabilidad de docentes y alumnos:) Construcción de conceptos. Solución de ejercicios propuestos. Ejercicios de análisis y diseño. Dar sentido al uso de las tecnologías informáticas. De Estudio Independiente (Responsabilidad del estudiante): Estudio de textos pertinentes a los temas: Algoritmos, métodos de solución de problemas, lenguajes de programación. Revisión de los ejemplos resueltos. Resolución de ejercicios propuestos. Implementación en la computadora de los ejemplos dados en la guías de laboratorio. Lectura y escritura de narrativas que den cuenta del papel de las tecnologías informáticas y en especial del computador y su programación, como soluciones a problemas sociales. El curso se desarrollará intercalando clases magistrales para la exposición de conceptos nuevos y clases participativas, en las que se asume que el estudiante realiza las lecturas, tareas o ejercicios dejados para realizar fuera de clase, previo al inicio de un nuevo día de clase. VI. EVALUACION Indicadores Criterios de Calificación Manejo de lenguaje de la ciencia computacional Comprensión de problemas Representación de diseño de soluciones mediante lenguaje de alto nivel Escritura de programas en un lenguaje de programación Manejo de un ambiente de programación Elaboración de pruebas de los programas Depuración de programas Las soluciones propuestas deben demostrar ser efectivas como soluciones a los problemas planteados. Se valora tanto la calidad lógica de la solución como la aplicación de prácticas sanas de programación. Se valora también el cumplimiento de las tareas propuestas en el término estipulado. Instrumentos Dos exámenes parciales ponderados de 0 a 20 Pruebas cortas no avisadas Desarrollo de guías de laboratorio de programación La evaluación se regirá a las disposiciones emanadas por la Oficina de Capacitación y Evaluación Académica (OCEA). La fecha de las evaluaciones son las establecidas por resolución de Consejo Universitario. Fechas tentativas para la las evaluaciones: Primer examen parcial 24/OCT/2012. Segundo examen parcial 26/DIC/2012. Página 6
Se considerarán dos promedios parciales: PP1, y PP2. Para cada promedio parcial se tomarán dos evaluaciones y se bonificarán con puntos a los estudiantes que cumplan con sustentar sus proyectos. El promedio final se obtendrá por promedio aritmético simple de los dos promedios parciales. VI. BIBLIOGRAFIA Promedio Final=(PP1+PP2)/2 JOYANES, L. / ZAHONERO,I. Programación en C, C++, Java y UML. Mc Graw Hill. 2010. DROZDEK, A. Estructura de datos y algoritmos en Java. 2da. Edición. Thomson. 2007. GARCIA, J / MONTOYA, F. / FERNADEZ, J. MAJADO, M. Una introducción a la programación. Un enfoque algorítmico. Thomson. Editores. Spain. 2005. GADDIS, TONY. Lab manual accompanies Starting Out With Java 5: From Control Structures to Objects. Copyright 2007 Pearson Education, Inc. DALE, N. / WEEMS, CH. / HEADINGTON,M. Programming and problem solving with Java. Copyright 2003 by Jones and Bartlett Publishers, Inc. LEWIS,J. / DEPASQUALE, P. / CHASE, J. Java foundations : introduction to program design & data structures. - 2nd ed. Copyright 2011, 2008. Pearson Education, Inc. Recursos Adicionales: Los siguientes enlaces a páginas en internet son referentes a JAVA: Software: 1. Java EE Downloads: http://www.oracle.com/technetwork/java/javase/downloads/index.html 2. Eclipse IDE: http://www.eclipse.org 3. NetBeans IDE: http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp- 142931.html Lecciones en Video 1. Eclipse and Java for the Total Beginner by Mark Dexter http://sourceforge.net/projects/eclipsetutorial/files/ también disponible en http://eclipsetutorial.sourceforge.net/totalbeginner.html Grupos de soporte 1. Java World: http://www.javaworld.com/ 2. Java Programming Resources: http://www.apl.jhu.edu/~hall/java/ 3. Java Sound Resources: http://www.jsresources.org/links.html 4. On-Line Resources for Java Programmers: http://java.sun.com/docs/books/tutorial/information/resources.html 5. Sun Developer's Network: http://java.sun.com/ Cusco, Setiembre de 2012 Página 7