Otra vez a rendir examen

Hace un par de días volví a rendir un examen en la universidad luego de más de 4 años (si no me falla la cuenta, el último examen lo rendí en 2006). En esta ocasión, fue el examen final del seminario de Educación a Distancia. La modalidad del examen fue novedosa para mi. La evaluación fue en grupos de 8 personas, cada uno de los 8 debió elegir un sobre con las preguntas del tema que deseaba contestar.O sea, cada uno elegía el tema, pero no las preguntas, las cuales estaban selladas dentro del sobre. En mi caso elegí conceptos generales de educación a distancia. Si bien aún no tengo la nota, estimo que me fue bien. Ups! ahora que lo escribo, caigo en la cuenta, ¡recorcholis! ¿porque diablos no pregunté la nota? mmm, debe ser porque tenia la seguridad de que me fue bien. Bueno, en fin, volvamos a la dinámica. Cada uno por turnos, abría su sobre y contestaba las 3 preguntas indicadas. A medida que iba contestando, la profesora metía algún bocadillo, daba participación al resto de los alumnos o bien repreguntaba. Durante el examen, tomé nota de algunas cosas, un par de frases sueltas, que me llamaron la atención entre las que se destaca:

El aprendizaje es interno, mientras que la enseñanza es externa.

Redondeando, si bien creo que hay algunas cosas por mejorar, la materia me gustó y aprendí muchas cosas que ya estoy intentando poner en práctica.

Variables de clase y de instancia en Smalltalk

Este tema incluye algunas particularidades que me parece en general no se le presta mucha atención y por ello hoy quiero dedicarle un par de líneas.

Analicemos la definición de clase CuentaBancaria:

Object subclass: #CuentaBancaria
	instanceVariableNames: 'numero saldo'
	classVariableNames: 'SiguienteNumero'
	poolDictionaries: ''
	category: 'algo3-ejemplos'

instanceVariableNames, indica las variables de instancia, también conocidas como atributos de instancia. En Smalltalk, estas variables tienen visibilidad protegida aunque en general se las trata como si fueran privadas. En este caso tenemos las variables de instancia numero y saldo. Un detalle interesante es que las variables son protegidas de las instancia, ¿que significa esto? supongamos que tengo dos instancias de la clase CuentaBancaria: cuenta1 y cuenta2, entonces cuenta1 no puede acceder al atributo numero de la cuenta cuenta2, pues si bien cuenta2 es una instancia del mismo tiempo, resulta que otra instancia y aqui la protección es a nivel de instancias.

classVariableNames, como su nombre sugiere son variables de clase, lo cual significa que son accesibles por el objeto clase, pero al mismo tiempo también son accesibles y compartidas por todas las instancias de la clase, o sea, si una instacia modifica el valor de dicha variable, dicho cambio afecta a todas las instancias. En este caso tenemos tenemos el siguienteNumeroDisponible como variable de clase, la cual es incrementada por cada instancia cada es inicializada.

initialize
	saldo := 0.
	numero := siguienteNumero.
	siguienteNumero := siguienteNumero + 1.

Un punto importante para considerar es que esta variable también es accesible por la clase CuentaBancanria.

Por otro lado, si vamos a la definición de la clase CuentaBancaria y vemos la parte de clase, veremos.

CuentaBancaria class
	instanceVariableNames: 'MaximoNumero'

instanceVariablesNames, en este caso representa las variables exclusivas del objeto clase y como tales son accesibles por la clase, pero no por las instancias de  la clase. Un detalle interesante respecto de estas variables es donde inicializarlas. Bien, en general se suele agregar un método de clase que se encarga de inicializarlas, pero ojo este seria un método de clase.

Bien, por último, si volvemos a la definición de la clase CuentaBancaria, veremos que aún nos queda por mencionar los poolDictionaries. Estas variables son variables compartidas por instancias de distintas clases.  Es algo relativamente raro (al menos a mi parecer) y por eso es que no se ocurre como utilizarlas en el ejemplo, pero prometo escribir otro post al respecto.

Para finalizar les ofrezco un gráfico para intentar resumir el ejemplo.

(gracias Mariano por la correción)

 

 

 

Google en la televisión

Estaba mirando televisión y en el corte publicitario vi una un aviso de Google Chrome. Sinceramente me tomó por sorpresa, no por ser Google, sino porque no recuerdo haber visto anteriormente una propaganda de software (que no sean juegos) en televisón abierta. Ahora pensándolo un poco más, creo que en algún momento vi un aviso de Windows u Office, pero no estoy seguro. En fin, solo quería compartir la curiosidad.

FIUBA++

La semana un docente de física en Fiuba que cursa conmigo en UNLP, me comentó que habían implementado una modalidad de cursada semi-presencial para los alumnos recursantes  de física 1. Me quedé anonadado, en primer lugar me parece una iniciativa simplemente excelente y el hecho de que sea en Fiuba me sorprende más y me alegra el doble.

Como graduado y docente de Fiuba, suelo ser muy crítico hacia la facultad, pero en esta ocasión, me saco el gorro y hago una referencia, ¡aguante Fiuba!

Tráfico de examenes en la clase de consulta

Ayer hicimos la clase de repaso previa al parcial en Algo3, una práctica que implementamos con muy buen resultado el cuatrimestre anterior.
Esta clase tiene una dinámica especial que difiere de la tradicional clase consulta: pedimos a los alumnos que se separen en grupos, cada grupo tiene 15 minutos para elaborar un set de preguntas sobre una unidad en particular, luego intercambiamos las preguntas entre los grupos para que las contesten y finalmente, hacemos una revisión entre todos de las preguntas y las respuestas.

El dato de color es que durante la clase de consulta de ayer, estábamos con PabloS y veíamos que algunos alumnos recolectaban plata, entraban y salían del aula llevando fotocopias. Esto llamó mi atención y disimuladamente me acerqué a ver de que se trataba. Resulta que el objeto de “tráfico” era un parcial resuelto tomado en un cuatrimestre anterior. En un primer momento me resultó muy chocante, pero luego de unos minutos, recordé que yo también solía hacer eso 🙂 ¿y quien no?.

Agile Open Mar del Plata 2011

El pasado sábado 10, estuve participando de este evento. Al mismo asistieron unas 70 personas duplicando la cantidad de asistentes de años anteriores, lo cual sin duda fue mérito de la energia que puso FabiánQ (¡gracias maestro!).

La facilitación del encuentro estuvo compartida entre MartinA, JulianA y FabiánQ.

Como había muchos asistentes nuevos en agile, comenzamos con una sesión introductoria “global” la cual estuvo a mi cargo (fue un honor para mi, gracias 🙂 ). Como fue algo no planeado y hace poco tiempo cambié mi máquina  no tenia a mano mi deck introductoria de agile, asi que me ví obligado a improvisar y creo que me salió bastante bien.
En una sesión que me gustó y cuyo nombre no recuerdo, uno de los asistentes planteó la problématica del trabajo multi-proyecto. El problema en contexto era que: una empresa de software que hace proyectos para varios clientes, llega el pedido de un cliente, la empresa lo estima y asigna un equipo. Cuando el proyecto está por terminar, el cliente pide de extender el proyecto, pero la empresa ya tenia asumidos otros compromisos y la gente asignada a otro proyecto que esta por empezar. A mi parecer esto es un problema de administración de porfolio y si bien hay bibliografia sobre lo que seria una administración de porfolio agile, a mi parecer es un tema bastante amplio. Yo tengo una propuesta para manejar esta cuestión, pero creo que merece un post aparte, con lo cual no me voy a explayar aquí.

Otra sesión de la que participé fue una de TDD que propuse yo mismo y en la que expliqué TDD usando Smalltalk (Pharo). De esta sesión no tengo deck, pues hice todo dentro de Pharo.

Aquí subí algunas fotos que saqué durante el evento.