Programa de la materia#
Objetivos de aprendizaje#
Estudiar los principios de los paradigmas de lenguajes imperativo, funcional y de objetos.
Se pondrá foco primeramente en el paradigma funcional recorriendo sus principales características y técnicas básicas de trabajo. Luego, tomando el paradigma funcional como base se avanzará sobre el paradigma de objetos. En el cual se estudiarán técnicas de desarrollo y diseño avanzado.
Contenidos#
Paradigma Funcional#
- Elementos del lenguaje, funcionamiento y definiciones.
- Recursión y algoritmos.
- Datos y estructuras complejas.
Paradigma de Objetos#
- Elementos del lenguaje, implementaciones comunes y definiciones.
- Técnicas de desarrollo.
- Técnicas de validación.
- Refactoring y Patrones de diseño.
- Tecnicas de testeo
- TDD
Mecanismo de Evaluación#
- 4 trabajos prácticos con componente práctica y teórica en grupos de 2 alumnos.
- 1er parcial en máquina
- 2do parcial en máquina.
Condiciones de Aprobación y Composición de Nota Final de Curso#
Nota final: 0.4 * (Nota de TPs) + 0.6 * ( 1erP * 0.4 + 2doP * 0.6)
Se aprueba si la Nota final es mayora a 4 y si el promedio ponderado de los parciales (1erP * 0.4 + 2doP * 0.6) es mayor a 4.
De ser necesario Recuperar, la nota final se obtiene como: (nota final inicial * 0.4) + (nota recuperatorio * 0.6)
Mecanismos de Comunicacion y Consulta#
Mediante lista de correo de la materia.
Plagio y Deshonestidad Intelectual#
La Universidad exige un estricto apego a los cánones de honestidad intelectual.
La existencia de plagio constituye un grave deshonor, impropio de la vida universitaria.
Su configuración no sólo se produce con la existencia de copia literal en los exámenes, sino toda vez que se advierta un aprovechamiento abusivo del esfuerzo intelectual ajeno.
El Código de Ética considera conducta punible la apropiación de la labor intelectual ajena, por lo que se recomienda apegarse a los formatos académicos generalmente aceptados (MLA, APA, Chicago, etc) para las citas y referencias bibliográficas (incluyendo los formatos on-line). En caso de duda recomendamos consultar el sitio:
La violación de estas normas dará lugar a sanciones académicas y disciplinarias que van desde el apercibimiento hasta la expulsión de la Universidad.
Bibliografía#
Para los distintos temas abordados en el curso utilizaremos los siguientes libros y papers de referencia:
Libros#
- Best practice patterns
- Object thinking
- Smalltalk with style
- Design Patterns: elements of reusable software
- The Design Patterns Smalltalk Companion
- Object-Oriented Software Construction
- The design of everyday things
- The Timeless Way of Building
- Working Effectively with Legacy Code
- History of Programming Languages Conference 2007 (HOPL III)
- Modern Software Engineering: Doing What Works to Build Better Software Faster
Papers#
- Programing as theory building, Peter Naur
- No Silver Bullet, Frederick P. Brooks, Jr.
- The limits of correctness, Brian Cantwell Smith
- Revisiting Naur’s Programming as Theory Building for Enterprise Architecture Modelling
- Embracing Change with Extreme Programming
- The Mythical Man-Month
- Polymorphic Hierarchy, Bobby Woolf
- A Simple Technique for Handling Multiple Polymorphism, Daniel Ingalls
- The Object Recursion Pattern, Bobby Woolf
- A Shared View of Sharing: The Treaty of Orlando
- Pattern Abuser
- Design Principles Behind Smalltalk
- Self: The Power Of Simplicity
Vigencia y Modificación del Programa#
Los profesores se reservan el derecho a modificar el contenido del programa durante el semestre de clase si la evolución del curso lo encontrase apropiado.