Planificaciones: 7507 - Algoritmos y Programación III

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018

Planificaciones
7507 - Algoritmos y Programación III

Docente responsable: SUAREZ JOSE PABLO

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).

Segunda parte: calidad de código, buenas prácticas y temas avanzados


Calidad de código. Diseño orientado a objetos (noción). Refactorización. TDD. Uso de dobles de prueba (noción).
Buenas prácticas de XP. Integración y delivery continuos (noción).
Temas generales de diseño. Principios de diseño. Algunos patrones de diseño.
Construcción de aplicaciones con interfaz de usuario gráfica. MVC como patrón arquitectónico. Experiencia de
usuario y usabilidad. Java FX.
Temas avanzados: información de tipos en tiempo de ejecución y reflexión, copia y clonación, genericidad.
Persistencia: serialización nativa y portable (nociones). Concurrencia y su implementación en Java.

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).

Segunda parte: calidad de código, buenas prácticas y temas avanzados


Calidad de código. Diseño orientado a objetos (noción). Refactorización. TDD. Uso de dobles de prueba (noción).
Buenas prácticas de XP. Integración y delivery continuos (noción).
Temas generales de diseño. Principios de diseño. Algunos patrones de diseño.
Construcción de aplicaciones con interfaz de usuario gráfica. MVC como patrón arquitectónico. Experiencia de
usuario y usabilidad. Java FX.
Temas avanzados: información de tipos en tiempo de ejecución y reflexión, copia y clonación, genericidad.

2 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018

Persistencia: serialización nativa y portable (nociones). Concurrencia y su implementación en Java.

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.

•Principios de diseño de Smalltalk, de Daniel H. H. Ingalls.


http://www.smalltalking.net/Papers/stDesign/stDesign.htm
•Apunte de Pruebas, Carlos Fontela y Pablo Suárez (disponible en campus de la materia)
•“Unit Testing Guidelines”, http://geosoft.no/development/unittesting.html
•“8 Principles of Better Unit Testing”, http://esj.com/Articles/2012/09/24/Better-Unit-Testing.aspx?p=1
•“Template Method & Strategy: Inheritance vs. Delegation”, Robert Martin,
http://staff.cs.utu.fi/~jounsmed/doos_06/material/TemplateAndStrategy.pdf
•“Replace Conditional with Polymorphism”, https://sourcemaking.com/refactoring/replace-conditional-with-
polymorphism
•“Continuous Integration”, de Martin Fowler, http://www.martinfowler.com/articles/continuousIntegration.html
•“What’s a Model For?”, Martin Fowler, http://martinfowler.com/distributedComputing/purpose.pdf
•"Generics in C#, Java, and C++ - a conversation with Anders Hejlsberg, by Bill Venners with Bruce Eckel“,
http://www.artima.com/intv/genericsP.html
•“Extreme Programming”, Kent Beck, capítulo 1,
http://ptgmedia.pearsoncmg.com/images/9780321278654/samplepages/9780321278654.pdf
•“Estado del arte y tendencias en Test-Driven development”, Carlos Fontela,
http://web.fi.uba.ar/~cfontela/Fontela_EstadoDelArteTDD_UNLP_EIS.pdf
•Code Complete, Steve McConnell, capítulo 5 “Design in Construction”, http://cc2e.com/File.ashx?cid=336xxx

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.

Los trabajos prácticos y los exámenes también son instancias de aprendizaje.

Modalidad de Evaluación Parcial


El examen parcial es escrito y en papel. No se evalúan las destrezas en programación sobre computadora, que
están cubiertas por los trabajos prácticos. El mismo evalúa las habilidades de modelado orientado a objetos
(UML, pruebas unitarias) y algunas cuestiones conceptuales mediante preguntas teóricas. En algunos casos, se
pedirá mejorar una solución que contenga algún problema de diseño o conceptual.

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

Semana Temas de Resolución Laboratorio Otro tipo Fecha entrega Bibliografía


teoría de problemas Informe TP básica
<1> Presentación Familiaridad Enunciado TP0 No determinado aún Ver bibliografía en
09/03 al 14/03 de la materia. con Smalltalk datos generales de la
POO y y el ambiente materia
resolución de Pharo.
problemas. Ejercicio en
Objetos y computadora
mensajes. por los
Diagramas alumnos.
de
secuencia.
Comportamie
nto y su
implementació
n.
Encapsulamie
nto y
Polimorfismo
(nociones).
<2> Implementar Role play Vence TP0 No determinado aún Ver bibliografía en
16/03 al 21/03 comportamien Máquina de datos generales de la
to de objetos café (para materia
(clases sólo descubrir
como una de responsabilid
las maneras ades de los
de objetos,
implementar), encapsulamie
con contratos nto y
y pruebas. polimorfismo,
Se plantea delegación).
desde la Sunit y
necesidad de aplicación de
especificar y diseño por
surgen contrato con
naturalmente pruebas
el contrato y unitarias
las pruebas. sobre un
ejercicio en
computadora
por los
alumnos. Uso
de SUnit
sobre TP0.
<3> Delegación. Ejercicio en Enunciado TP1S No determinado aún Ver bibliografía en
23/03 al 28/03 Resolver un computadora datos generales de la
ejercicio con y otro de materia
delegación. modelado a
Herencia. cargo de los
Resolver con alumnos, con
herencia. puesta en
Refactorización común
. TDD y posterior.
subproductos
de las
pruebas.
Diagramas
de clases.
<4> Polimorfismo Revisión de No determinado aún Ver bibliografía en
30/03 al 04/04 en Smalltalk. las primeras datos generales de la
Métodos y 3 lecturas materia
clases obligatorias
abstractos. (Principios de
Ídem en Diseño de
Java. Smalltalk,
Interfaces Unit Testing
como Guidelines y
mecanismo 8 Principles
para of Better Unit
polimorfismo Testing).
sin herencia. Ejercicio de
refactorización

5 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018

Semana Temas de Resolución Laboratorio Otro tipo Fecha entrega Bibliografía


teoría de problemas Informe TP básica
que implique
introducir
polimorfismo.
<5> Excepciones Ejercicio de No determinado aún Ver bibliografía en
06/04 al 11/04 en general y modelado datos generales de la
las con clases y materia
chequeadas secuencias.
de Java. Programar
Atributos y una parte.
métodos de
clase.
Encapsulamie
nto y
visibilidad.
Inicialización,
construcción,
asociación y
composición.
<6> Calidad de Ejercicio de No determinado aún Ver bibliografía en
13/04 al 18/04 código. funciones. datos generales de la
Algunas Resuelven materia
buenas los alumnos y
prácticas puesta en
tomadas de común.
XP: Luego se
refactoring, muestra otra
TDD, resolución.
simplicidad…
Integración y
delivery
continuos
como ideas.
<7> UML: Mejorar el Vence TP1S No determinado aún Ver bibliografía en
20/04 al 25/04 estados, código de una datos generales de la
paquetes aplicación. materia
Repaso pre-
parcial.
<8> Clase de Clase de No determinado aún Ver bibliografía en
27/04 al 02/05 recuperación o recuperación o datos generales de la
a cargo de a cargo de materia
invitados invitados
<9> Parcial Resolución del Enunciado TP1J No determinado aún Ver bibliografía en
04/05 al 09/05 parcial. datos generales de la
Mostrar materia
resolución en
Smalltalk y
resolver en
código y PC
en Java.
<10> Principios de Patrones de No determinado aún Ver bibliografía en
11/05 al 16/05 diseño y diseño, datos generales de la
algunos llegando por materia
patrones. aplicación de
principios de
buen diseño
y
refactorización.
Revisión de la
lectura
"Inheritance
vs
Delegation"
de Robert
Martin.
<11> Temas Java FX Vence TP1J y No determinado aún Ver bibliografía en
18/05 al 23/05 avanzados. parte 1. enunciado TP2 datos generales de la
RTTI y Configuración materia
reflexión. repositorios e
Copia y integración
clonación. continua.
Generics.

6 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018

Semana Temas de Resolución Laboratorio Otro tipo Fecha entrega Bibliografía


teoría de problemas Informe TP básica
<12> Recuperatorio Role play No determinado aún Ver bibliografía en
25/05 al 30/05 MVC. Control datos generales de la
de versiones. materia
<13> Programación Java FX Entrega incremental No determinado aún Ver bibliografía en
01/06 al 06/06 e Ingeniería parte 2. TP2 datos generales de la
de Software. materia
Metodología.
UX.
<14> Clase de Clase de Entrega incremental No determinado aún Ver bibliografía en
08/06 al 13/06 recuperación o recuperación o TP2 datos generales de la
a cargo de a cargo de materia
invitados invitados
<15> Concurrencia. Persistencia Entrega incremental No determinado aún Ver bibliografía en
15/06 al 20/06 Recapitulación TP2 datos generales de la
. materia
<16> Clase de Retrospectiva Entrega incremental No determinado aún Ver bibliografía en
22/06 al 27/06 recuperación o TP2 datos generales de la
a cargo de materia
invitados

7 de 8
7507 - Algoritmos y Programación III PLANIFICACIONES Actualización: 2ºC/2018

CALENDARIO DE EVALUACIONES

Evaluación Parcial

Oportunidad Semana Fecha Hora Aula


1º 9 30/04
2º 12 21/05
3º 16 18/06

Observaciones sobre el Temario de la Evaluación Parcial
El examen parcial es escrito y en papel. No se evalúan las destrezas en programación sobre computadora, que están cubiertas por los
trabajos prácticos. El mismo evalúa las habilidades de modelado orientado a objetos (UML, pruebas unitarias) y algunas cuestiones
conceptuales mediante preguntas teóricas. En algunos casos, se pedirá mejorar una solución que contenga algún problema de diseño o
conceptual.
Otras observaciones
El horario del parcial varía con el curso.

8 de 8

También podría gustarte