Nombre del curso: Introducción a la Programación Orientada a Objetos
Código: 750081M
Habilitable: No
Validable: Si
Prerrequisitos: 750082M - Introducción a la Tecnología Informática
Evaluación:
- Un examen del 40%
- Un proyecto del 40%
- Talleres por un 20%
##Objetivos Explicar la manera de resolver problemas usando métodos algorítmicos, y de implementar las soluciones en un lenguaje de programación orientado a objetos.Dentro de los objetivos específicos se tiene que el estudiante aprenda:
- A analizar y explicar el comportamiento de programas sencillos, que involucren todas las construcciones de control fundamentales
- A abordar un problema, descomponiéndolo en pasos elementales, para solucionarlo. Desarrollar algoritmos para resolver problemas sencillos. Y a implementar, verificar y depurar esos algoritmos en un lenguaje orientado a objetos
- La filosofía de la programación orientada a objetos. A diseñar, codificar, verificar y depurar programas sencillos en un lenguaje orientado a objetos. Y a seleccionar y aplicar los patrones de programación mas apropiados para construir aplicaciones
- A identificar las estructuras de datos básicas que sirven para representar información y discutir cuando se debe emplear cada una
- El concepto de recursión. A escribir, verificar y depurar programas recursivos sencillos. Y como se implementa la recursión usando un stack
- A usar bibliotecas de funciones y APIs
- Un estilo de programación que el estudiante deberá emplear de ahora en adelante en todas las demás asignaturas que requieran programación. Y la importancia de mantener un estilo coherente, inteligible y elegante
##Metodología El curso se dictará en forma de clases magistrales y de ejercicios prácticos guiados por el profesor en el salón de clase.
##Contenido
- Sintaxis de un lenguaje de alto nivel. Construcciones de control habituales condicionales e iterativas. Funciones y paso de parámetros. Variables, tipos, expresiones, asignación. Entrada-salida básica. Definición de funciones.
- Estrategias para la resolución de problemas. Implementación de algoritmos. Depuración.
- Aprender que es un objeto y sus propiedades: encapsulación, ocultación de información, separación de interfase e implementación, herencia y polimorfismo.
- Estructuras de datos fundamentales: tipos primitivos, arrays, records, strings; representación de los datos en memoria; alcance de las variables versus tipo de almacenamiento: variables estáticas, en el stack y en el heap; punteros, referencias, estructuras enlazadas, stacks, colas, tablas de hash, grafos, árboles.
- El concepto de recursión. Funciones matemáticas recursivas. Implementación de la recursión.
- Uso de APIs.
- Estilo de programación.
##Talleres/Proyecto Cada asignación estará disponible como un repositorio de GitHub y será calificada sobre esta plataforma usando Travis CI para ejecutar un conjunto de pruebas unitarias y revisiones sobre el estilo y la sintaxis del código del estudiante, además de una revisión detallada por parte del profesor. El flujo de trabajo para las asignaciones del curso es el siguiente:
- Hacer un Fork al repositorio del taller/proyecto (este proyecto se encontrará en github.com/iproo-uv).
- Clonar el repositorio de su cuenta de GitHub al su computador.
- Cargar el proyecto en su IDE o editor de texto de preferencia
- Modificar el código para proponer una solución
- Compilar y probar el resultado
- Hacer commit a todos los cambios en el código
- Hacer push/sync a GitHub
- Crear un Pull Request al repositorio original antes de la fecha límite acordada
- Analizar la salida del proceso automático de revisión de código
- Usted es libre de hacer todas las correcciones que considere necesario agregando commits al Pull Request hasta antes de la fecha límite.
Si tiene alguna duda frente a las asignaciones puede contactar al resto del grupo usando el canal de gitter disponible en este repositorio.