Planificaciones: 7507 - Algoritmos y Programación III
Planificaciones: 7507 - Algoritmos y Programación III
Planificaciones: 7507 - Algoritmos y Programación III
Planificaciones
7507 - Algoritmos y Programación III
1 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018
OBJETIVOS
Esta materia busca que los alumnos adquieran los conceptos centrales de la programación orientada a objetos
más algo de diseño y calidad de código, junto con algunas buenas prácticas básicas de construcción de
software. Subsidiariamente, se estudia el desarrollo de aplicaciones de interfaz de usuario gráfica y algunas
problemáticas típicas, como persistencia y concurrencia. Los alumnos deben aprender a programar en Java y
Smalltalk.
CONTENIDOS MÍNIMOS
-
PROGRAMA SINTÉTICO
Primera parte: programación orientada a objetos y prácticas metodológicas
Resolución de problemas mediante objetos y mensajes. Diagramas de secuencia de UML. Comportamiento
como noción central. Encapsulamiento. Polimorfismo (noción). Responsabilidades de los objetos. Uso en
Smalltalk (ambiente Pharo).
Implementación del comportamiento de objetos con clases usando diseño por contrato y pruebas unitarias
como especificaciones. Excepciones básicas. Automatización de pruebas unitarias. Principios de construcción
de pruebas unitarias. Implementación en Smalltalk y SUnit.
Colaboraciones de objetos. Delegación y programación por diferencia. Relaciones entre clases: asociación y
herencia. Diagrama de clases de UML. Implementación en Smalltalk.
Polimorfismo (profundización): Implementación en lenguajes con y sin chequeo estático e implementación en
lenguajes sin clases. Interfaces en Java (noción).
Java como lenguaje con verificación estática. Polimorfismo en Java, con herencia y con interfaces.
Excepciones en general y excepciones chequeadas en Java.
Atributos de clase. Métodos de clase. Encapsulamiento y visibilidad. Inicialización, construcción, asociación y
composición. UML y modelado (clases, secuencias, paquetes, estados).
PROGRAMA ANALÍTICO
Primera parte: programación orientada a objetos y prácticas metodológicas
Resolución de problemas mediante objetos y mensajes. Diagramas de secuencia de UML. Comportamiento
como noción central. Encapsulamiento. Polimorfismo (noción). Responsabilidades de los objetos. Uso en
Smalltalk (ambiente Pharo).
Implementación del comportamiento de objetos con clases usando diseño por contrato y pruebas unitarias
como especificaciones. Excepciones básicas. Automatización de pruebas unitarias. Principios de construcción
de pruebas unitarias. Implementación en Smalltalk y SUnit.
Colaboraciones de objetos. Delegación y programación por diferencia. Relaciones entre clases: asociación y
herencia. Diagrama de clases de UML. Implementación en Smalltalk.
Polimorfismo (profundización): Implementación en lenguajes con y sin chequeo estático e implementación en
lenguajes sin clases. Interfaces en Java (noción).
Java como lenguaje con verificación estática. Polimorfismo en Java, con herencia y con interfaces.
Excepciones en general y excepciones chequeadas en Java.
Atributos de clase. Métodos de clase. Encapsulamiento y visibilidad. Inicialización, construcción, asociación y
composición. UML y modelado (clases, secuencias, paquetes, estados).
2 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018
BIBLIOGRAFÍA
Carlos Fontela, Texto de apoyo conceptual de Algoritmos y Programación III (Versión Beta 0.5 del libro
“Programación Orientada a Objetos - 3ra. Edición”), 2017.
Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet, "Pharo por ejemplo", 2007.
Carlos Fontela, “Orientación a objetos con Java y UML”, 2010.
Kent Beck, “Test Driven Development: By Example”, 2003.
Bertrand Meyer, “Desarrollo de software orientado a objetos”, 1999.
Steve McConnell, “Code Complete”, 2004.
Robert Martin, “UML para programadores Java”, 2004.
Carlos Fontela, "UML", 2011. Elizabeth Freeman, “Head-First Design Patterns”, 2004. Martin Fowler,
“Refactoring: Improving the Design of Existing Code”, 2000. Kent Beck, “Extreme Programming Explained”, 2004.
RÉGIMEN DE CURSADA
Metodología de enseñanza
El plantel docente de la cátedra ha establecido para esta materia un enfoque de apropiación del aprendizaje
por parte de los alumnos basado en las recomendaciones de enseñanza centrada en los estudiantes (LCT:
Learner Centered Teaching).
Las clases de la materia son de diferentes tipos. En algunos cuatrimestres diferenciamos los tipos de clases
en función de sus horarios, y en otros seguimos un esquema menos rígido. Esto se hace en función de la dotación
docente y de la disponibilidad en cada horario.
Podemos clasificar las clases en 4 categorías: de consulta sobre trabajos prácticos; práctica interactiva;
teórico-práctica; teoría pura.
Cada tipo de clase sigue el siguiente esquema:
Consulta. En estas clases, los docentes trabajan con los alumnos, guiándolos como tutores y/o evaluando el
desempeño individual y/o grupal. Se trabaja siempre sobre computadoras, ya sean las que traen los alumnos
o en laboratorios en la Facultad. No obstante, los alumnos desarrollan sus trabajos prácticos en forma
autónoma y fuera del aula, contando con estas clases como puntos de referencia y control.
Práctica interactiva. En estas clases, los docentes presentan problemas a los alumnos, quienes los resuelven
generalmente en computadora si requieren programar (no se “programa en papel”), de a pares y tratando que
las parejas no sean las mismas en todas las clases. En algunas ocasiones, el docente puede comenzar
mostrando cómo efectúa una determinada tarea, pero se limita a lo esencial, dejando luego lugar a los
alumnos para que lo hagan ellos mismos. El compartir el ejercicio con un par facilita la apropiación del
aprendizaje mediante la conversación, la discusión y la necesidad de entender los puntos de vista del otro.
Teórico-práctica. Estas son clases de contenidos, abordadas desde un punto de vista práctico. Para que los
estudiantes aborden el proceso como propio, se van viendo los temas haciendo frecuentes puestas en
común, con el docente haciendo las veces de moderador, y permitiendo a los alumnos opinar libremente y
discutiendo entre ellos, de forma de fomentar el sentido crítico. Las intervenciones del docente nunca son
3 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018
superiores a los 20 minutos, seguidas de una puesta en común, y la mayor parte de las veces de algo de
ejercitación práctica. En algunas clases se realiza un role-play que facilita la apropiación del conocimiento.
Teoría pura. Estás son también clases de contenidos, pensadas para aquellos temas que no requieren un
abordaje práctico en el contexto de la materia. El profesor imparte, de manera teórica y tradicional algún tema
y prepara a los alumnos para la siguiente unidad de conocimiento. En estas clases, el docente solicita
realimentación a los alumnos en forma constante, tanto para conocer su nivel de comprensión como para que se
involucren en la actividad.
En algunas ocasiones, antes de clase, se provee a los alumnos de un material para entrar en contacto con el
tema, mediante lecturas (en su mayoría) o videos recomendados por los docentes. Esta es una actividad
personal, fuera de las aulas, pero algunas de estas lecturas se analizan a fondo en clase luego de la tarea
extra-áulica.
El examen integrador tiene una parte de trabajo en computadora seguida de una evaluación oral. Los alumnos
trabajarán sobre la mejora del diseño de un pequeño programa, en computadora, que luego será trabajada
en forma oral con un docente. En esta parte oral, el docente podrá ahondar en los mismos temas evaluados
en computadora, en otros temas de la materia, o pedir alguno de los trabajos prácticos desarrollados durante
el cuatrimestre para charlar sobre mejoras o cambios al mismo. Una ventaja fundamental de la evaluación oral
es que aumenta las posibilidades de ahondar en ciertos temas, tanto por parte del alumno como del docente,
pudiendo determinar mejor cuánto sabe el alumno del tema.
4 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018
CALENDARIO DE CLASES
5 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018
6 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018
7 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018
CALENDARIO DE EVALUACIONES
Evaluación Parcial
8 de 8